逻辑运算符问题
本帖最后由 weiter 于 2020-10-17 22:14 编辑我这么干的时候,a输入0,b也输入0,但返回结果居然是1???
如果我把这个代码里面加上int就是正常输入0和0显示0???
求解释
# 或门
a = input()
b = input()
if a or b == '1':
print('1')
else:
print('0')
if a or b == '1':
你的这句话,相当于if a or if b=='1'
if ‘0’是True
相当于你的判断一直对,当然只输出print('1')
(1)如果if后面的条件是数字,只要这个数字不是0,python都会把它当做True处理,见下面的例子
if 15:
print 'YES'
输出YES,但是如果数字是0,就会被认为是False。
(2)如果if后面跟的是字符串,则只要这个字符串不为空串,python就把它看作True,参见下例
if 'haha':
print 'No problem'
No problem 就会被输出。 本帖最后由 sunrise085 于 2020-10-17 22:26 编辑
你的程序这样运行的:
执行第一行:你输入0,然后变量 a 为字符‘0’,注意不是数字0
执行第二行:你输入0,然后变量 b 为字符‘0’,注意不是数字0
执行第三行:先进行条件判断,这个逻辑表达式的执行过程是这样的
or的优先级要比 == 优先级低,所以需要先执行后面的判断,字符串 '0' 和 字符串 '1' 判断,结果为False
然后,是 '0' or False ,此时因为or前面是字符串,且不是空字符串,所以执行结果为 '0' ,逻辑值为True,执行 if 后的语句
(实际上不会执行or后面的判断,因为逻辑运算有短路原则。)
执行第四行:打印字符 '1'
你想要的估计是两个变量分别判断是不是字符 '1' 吧?一定要注意运算符的优先级顺序,还有就是运算的逻辑
# 或门
a = input()
b = input()
if a == '1' or b == '1':
print('1')
else:
print('0') 疾风怪盗 发表于 2020-10-17 22:14
你的这句话,相当于if a or if b=='1'
if ‘0’是True
有点绕……T__T
但是谢谢{:10_323:} sunrise085 发表于 2020-10-17 22:22
你的程序这样运行的:
执行第一行:你输入0,然后变量 a 为字符‘0’,注意不是数字0
执行第二行:你输入 ...
啊……这似乎才是我要的答案{:10_266:}
我可能应该先等一会再设置的 weiter 发表于 2020-10-17 22:22
有点绕……T__T
但是谢谢
{:10_284:}很绕么?我觉得已经讲得很明白了。。。。。
就是不管你输入什么,只要a不是空字符串,你输出的都是‘1’
疾风怪盗 发表于 2020-10-17 22:30
很绕么?我觉得已经讲得很明白了。。。。。
就是不管你输入什么,只要a不是空字符串,你输 ...
开头有点绕
我去刷一下视频
页:
[1]