weiter 发表于 2020-10-17 22:11:30

逻辑运算符问题

本帖最后由 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')


疾风怪盗 发表于 2020-10-17 22:14:59

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:22:25

本帖最后由 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')

weiter 发表于 2020-10-17 22:22:39

疾风怪盗 发表于 2020-10-17 22:14
你的这句话,相当于if a or if b=='1'
if ‘0’是True



有点绕……T__T
但是谢谢{:10_323:}

weiter 发表于 2020-10-17 22:23:41

sunrise085 发表于 2020-10-17 22:22
你的程序这样运行的:
执行第一行:你输入0,然后变量 a 为字符‘0’,注意不是数字0
执行第二行:你输入 ...

啊……这似乎才是我要的答案{:10_266:}
我可能应该先等一会再设置的

疾风怪盗 发表于 2020-10-17 22:30:43

weiter 发表于 2020-10-17 22:22
有点绕……T__T
但是谢谢

{:10_284:}很绕么?我觉得已经讲得很明白了。。。。。

就是不管你输入什么,只要a不是空字符串,你输出的都是‘1’

weiter 发表于 2020-10-17 22:33:34

疾风怪盗 发表于 2020-10-17 22:30
很绕么?我觉得已经讲得很明白了。。。。。

就是不管你输入什么,只要a不是空字符串,你输 ...

开头有点绕
我去刷一下视频
页: [1]
查看完整版本: 逻辑运算符问题