为什么表达式1>2的结果是false而不是0,那什么情况下是0,是bool函数的时候是0吗,那什么时候是false
1>2 --> False, 因为比较运算符>返回的是bool类型,也就是True或者False
但是如果将这个结果转换成int类型,那么值就是0了,比如int(1>2)的值就是0
int()就是将传入值转换成int类型。
而bool()可以将传入值转换成bool类型
bool(0)的值就是False
bool(False)的值还是Fasle
bool(1)的值就是True
bool(2)的值还是True
但是:
bool("")
bool([])
bool({})
bool(None)
的值都是False
通常情况下,表达式在以下情况会被视为False:
False 类型对象(注意首字母 F 大写)
None 类型对象
数字 0,包括 0, 0.0j
空字符串、空 bytes 和空 list、tuple、dict、set,例如 “”、b’'、[]、()
没有实现 bool 或 len 方法的对象
除了以上情况,其他值都将被视为True
boolvar = True
boolvar = False
print(boolvar) # False
print(type(boolvar))# <class ‘bool’>
答案: 在 Python 中,当比较表达式的值时,如果返回的结果是 True,则表示实际上是在判断这个表达式是“真”,实际上在计算时,它返回的值是 1;如果返回的是 False,则表示实际上是在判断这个表达式是“假”,实际上在计算时,它返回的值是 0。
对于比较运算符 > 来说,如果左边的数大于右边的数,则返回 True,否则返回 False,这与实际的计算结果无关。
例如,1 > 2 的结果是 False,而不是 0。
当使用布尔运算符 and 和 or 时,它们会返回布尔值 True 或 False。当 and 两端数据必须全部是True的时候才会返回True,只要有一端返回的是False,则返回False,两端都是False的时候,也返回False。而 or 两端都是True的时候,返回True,只要有一端返回的是True,则返回True,两端都是False的时候,返回False。
例如,True and False 的结果是 False,1 > 2 and 3 > 2 的结果也是 False;而 True or False 的结果是 True,1 > 2 or 3 > 2 的结果是 True。
下面给出示例代码:
# 比较运算符示例
print(1 > 2) # False
print(1 < 2) # True
print(1 == 2) # False
print(1 != 2) # True
# 布尔运算符示例
print(True and False) # False
print(1 > 2 and 3 > 2) # False
print(True or False) # True
print(1 > 2 or 3 > 2) # True
print(not True) # False
print(not (1 > 2)) # True
在 Python 中,bool 型变量的值只有 True 和 False 这两个,可以使用 bool() 函数将其他类型转换成 bool 类型的变量。
例如,bool(1) 的结果是 True,bool(0) 的结果是 False。
下面给出示例代码:
x = 1
y = 0
print(bool(x)) # True
print(bool(y)) # False
当使用比较运算符对整数比较时,返回的是布尔值 True 或 False,而不是实际的值 1 或 0。
例如,1 > 2 的返回值是 False,而不是 0;1 < 2 的返回值是 True,而不是 1。
当使用 bool() 函数将数值类型的变量转换成 bool 类型的变量时,非零数值都将转换成 True,而 0 将转换成 False。
例如,bool(1) 的返回值是 True,bool(0) 的返回值是 False,bool(-1) 的返回值也是 True。
# bool类型转换示例
x = 1
y = 0
z = -1
print(bool(x)) # True
print(bool(y)) # False
print(bool(z)) # True
综上所述,当使用比较运算符比较两个数时,返回的是布尔值 True 或 False;而使用布尔运算符计算表达式时,返回的也是布尔值 True 或 False。在 Python 中,不同类型的变量可以使用 bool() 函数将其转换成 bool 类型的变量。