jjxx2005 发表于 2020-7-20 20:27:11

关于if语句判断问题,向前辈求助

这段代码 , 因为 if语句后面的条件表达式为F 所以不执行if下面的缩进代码
a = 'b'
if a == 'c':
    print('123')

但是写成这样就无效了,为什么 是我哪里写错了吗?
a = input(f'是/否:')
if a == '是' or 'Y' or 'y':
    print('123')

无论我输入什么,都打印123

永恒的蓝色梦想 发表于 2020-7-20 20:28:01

改为:a = input(f'是/否:')
if a == '是' or a == 'Y' or a == 'y':
    print('123')

Twilight6 发表于 2020-7-20 20:31:38



因为 Python 中只要 0 、空字符串、空列表、空字典等 都可以看作布尔类型的值为 False

只要是 非0 ,非空字符串、列表、字典 等 都可以看作布尔类型的值为 True

if a == '是' or 'Y' or 'y' 实际在 Python 中的判断顺序是 if (a == '是') or ('Y') or ('y') ,不是我们所想的 a 一个个于后面字符串拿去比较

而字符串只要不为空字符串就可以看作布尔类型值的 True ,所以这里条件实际上是:

if a == '是' or True or True,而 or 只要有一个条件为 True ,就返回 True ,所以导致这个 if 条件永远成立,如果你想判断 a 应该分开来写

a = input('是/否:')
if a == '是' or a == 'Y' or a == 'y':
    print('123')


页: [1]
查看完整版本: 关于if语句判断问题,向前辈求助