Python AND 运算符
Python中有两个AND运算符——“逻辑AND”和“位AND”。本文讨论了这两个运算符并加以区分。
逻辑AND
这个“AND”属于逻辑运算符。这些运算符主要用于 决策需求 以及条件语句(如if-else)。Python中有三个逻辑运算符:
- 逻辑AND
- 逻辑OR
- 逻辑XOR
现在,让我们了解一下逻辑AND运算符:
基本用法:
在C和Java等语言中,“ && ”表示AND运算符,但是在Python中,我们使用“ and ”而不使用任何特殊符号。
语法:a and b
返回值: 该运算符根据操作数返回“True”或“False”。
操作:
- 如果所有的操作数/表达式都为真,则AND运算符返回 True 。
- 如果至少有一个操作数为假,则返回 False 。
“AND”运算符的真值表:
Expression 1 | Expression 2 | (Expression 1 and Expression 2) returns: |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
AND运算符的需求
假设你正在尝试编写一段代码来判断一个数字是否大于20且为偶数。你需要检查两个条件:
- 如果num > 20
- 如果num是偶数
两个条件都必须满足。
通常,我们将其写为:
num = int (input ("Enter a number: "))
if (num > 20):
if (num % 2 == 0):
print (num, " is greater than 20 and is even")
输出:
需要4行代码。现在让我们使用AND运算符的功能:
num = int (input ("Enter a number: "))
if (num > 20 and num % 2 == 0):
print (num, " is greater than 20 and is even")
输出:
理解:
在这一行中 **如果(num >20 且 num%2 0) ** ,首先检查左侧条件num>20。对于num = 34,它是true;因此,右侧条件被检查,34可被2整除。两个条件均满足。执行打印语句。
- 如果我们有31,即使它大于20,但它不能被2整除,它将不会被打印出来。 “and”的两个条件必须都为true才能为true。
让我们用一个实时应用程序的示例来说明:
假设您正在为BTech和MTech学生组织一场编程比赛;对于任何参赛学生来说,他的年龄必须在18到28岁之间。任何年龄太小或太大的人都严格禁止参赛。因此,我们需要检查两个条件才能录取学生。
代码:
name = input ("Please enter the participant's name: ")
age = int (input ("Please enter the valid age of the participant: "))
if (age >= 18 and age <= 28):
print ("Congratulations!, You are eligible for the competition")
else:
print("Only students between 18 to 28 are allowed to the competition. Sorry! We can't enroll you in")
输出:
“and”只用于两个数字
现在我们来看看如果我们在”and”操作符的两侧都给出两个十进制整数会发生什么:
先决条件: 一般来说,”and”会检查两个操作数是否都为True。任何大于0的数字表示True,而0表示False。
num1 = int (input ("Enter a number: "))
num2 = int (input ("Enter another number: "))
print (num1 and num2)
示例输出:
理解:
1. 在第一个情况中:
- 两个数字都大于0- True and True 条件 。因此,”and” 返回 True。
- “and” 的条件是两个操作数都为真。因此,在确认第一个数字-3(>0)为真后,它检查第二个数字-4(>0),这也为真。所以,它返回带有第二个数字的 “True”。
2. 在第二个情况中:
- False and True 条件
- 第一个数字是0-False。
- “and” 要为 True,不能有 “False”。因此,一旦确认第一个数字是 “False”,而不检查第二个数字,它就会返回 “False”。
3. 在第三个情况中:
- 第一个数字是0-False。
- 立即 “and” 返回 False。
- False and False 条件
让我们看另一个示例:
num = int (input ("Enter a number: "))
if (num > 0 and num < 10):
print ("num is between 0 and 10")
elif (num > 10 and num < 50):
print ("num is between 10 and 50")
else:
print ("num is either less than 0 or greater than 50")
示例输出:
理解:
我们检查了数字是否属于0到10或10到50的区间。如果数字都不属于这两个区间,则数字可以小于0或大于50。
使用多个操作数的 “and”:
num1 = int (input ("Enter the first value: "))
num2 = int (input ("Enter the second value: "))
num3 = int (input ("Enter the third value: "))
print (num1 and num2 and num3)
输出:
理解:
首先,检查num1并且它为真,然后检查第二个数字num2并且它为真。但是,第三个数字num3为假,因此,num1和num2和num3返回假。
使用多个表达式:
num1 = int (input ("Enter the first value: "))
num2 = int (input ("Enter the second value: "))
num3 = int (input ("Enter the third value: "))
print (num1 > 30 and num2 > 23 and num3 < 9)
输出:
理解:
第一个条件,num1 > 30,本身为假。因此,直接输出假。即使第一个条件为真,第二个条件为假;如果第二个条件也为真,第三个条件也为假。因此,在给定的num1、num2和num3的情况下,所有三个条件都为假。
位运算符(&)
Python中还有另一个“and”运算符。它是一种位运算符。我们将其表示为“&”。
二进制语言是计算机的语言。所有的内部机制都是基于比特位来进行的。位运算符是允许程序员对整数执行位操作的一组运算符。共有六个位运算符:
- 位与运算符
- 位或运算符
- 位非运算符
- 位异或运算符
- 位右移运算符
- 位左移运算符
(逻辑或,位或)、(逻辑与,位与)、(逻辑非,位非)之间的区别在于“位”的概念本身。
- 如果使用任何位运算符,首先,将 整数转换为二进制位 ,然后将逐位地执行位运算 **。
- 这里, 1表示真,0表示假 。
- 操作完成后,二进制数将被转换为十进制并返回输出。
位与运算的操作:
给定的整数被转换为比特位(二进制),并且“and”对两个数字的每个对应比特位进行操作。
Bit 1 (operand 1) | Bit 2 (operand 2) | Return value |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
0 | 1 | 0 |
让我们举个示例:
如果num1 = 3,num2 = 4:
3 -> 011
4 -> 100
**执行 & 操作: **
如果我们在3和4上执行逻辑与运算,我们将得到True和返回4:
num1= int (input ("Enter a number: "))
num2 = int (input ("Enter another number: "))
print (num1 and num2)
print (num1 & num2)
输出:
这是Python语言中可使用的两个“and”运算符。让我们看一下这两个运算符之间的区别:
逻辑AND vs.位AND
逻辑与 | 位与
—|—
逻辑与用 “and” 表示。 | 位与用 “&” 表示。
仅针对布尔值定义;即使我们使用表达式,它们也会被评估为True或False。 | 定义为整数值以及布尔值 打印(True & False) -> False **
它搜索False值;如果找到一个,它不评估表达式的其余部分并返回”False”。这被称为” **懒惰评估 “。 | 即使运算符找到一个False值,它也会继续评估其余的表达式。
这个运算符主要用于决策和真实性测试。 | 位运算符专为低级位操作而设计。
大于0的每个数字计算为”True”,等于0或小于0的每个数字计算为”False” | 1表示”True”,0表示”False”。
在运算符层次结构中,位运算符的优先级高于逻辑运算符。