今天遇到一个非常基础的问题,结果搞了好久好久.....赶快写一篇博客记录一下:
本来两个不一样的字符串,在if 的条件判断中被判定为True,下面是错误的代码:
test_str = 'happy'
if test_str == 'good' or 'happy': #这样if判断永远是True,写法错误
print('aa')
else:
print('bbbb')
这是正确的代码:
test_str = 'happy'
if test_str == 'good' or test_str == 'happy':
print('aa')
else:
print('bbbb')
补充知识:python基础(if判断条件语句,比较、布尔运算符)
1.条件和条件语句
在编写的程序中,语句都是逐条执行的。现在更进一步,让程序选择是否执行特定的语句块。
1 )布尔值的用武之地
真值也称布尔值,是以在真值方面做出了巨大贡献的George Boole命名的。
用作布尔表达式(如用作if语句中的条件)时,下面的值都将被解释器视为假:
False None 0 "" () [] {}
换而言之,标准值False和None、各种类型(包括浮点数、复数等)的数值0、空序列(如空字符串、空元组和空列表)以及空映射(如空字典)都被视为假,而其他各种值都被视为真,包括特殊值True。
正如Python老手Laura Creighton指出的,这种差别类似于“有些东西”和“没有东西”的差别,而不是真和假的差别。
这意味着任何Python值都可解释为真值。乍一看这有点令人迷惑,但也很有用。虽然可供选择的真值非常多,但标准真值为True和False。在有些语言(如C语言和2.3之前的Python版本)中,标准真值为0(表示假)和1(表示真)。实际上,True和False不过是0和1的别名,虽然看起来不同,但作用是相同的。
>>> True
True
>>> False
False
>>> True == 1
True
>>> False == 0
True
>>> True + False + 42
43
因此,如果你看到一个返回1或0的表达式(可能是使用较旧的Python版本编写的),就知道这实际上意味着True或False。
布尔值True和False属于类型bool,而bool与list、str和tuple一样,可用来转换其他的值。
>>> bool('I think, therefore I am')
True
>>> bool(42)
True
>>> bool('')
False