鱼C论坛

 找回密码
 立即注册
查看: 1735|回复: 6

[已解决]逻辑运算符问题

[复制链接]
发表于 2020-10-17 22:11:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

搜狗截图20201017220944.png
搜狗截图20201017221114.png
最佳答案
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 就会被输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 就会被输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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')

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
weiter + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-17 22:22:39 | 显示全部楼层
疾风怪盗 发表于 2020-10-17 22:14
你的这句话,相当于if a or if b=='1'
if ‘0’是True

有点绕……T__T
但是谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

啊……这似乎才是我要的答案
我可能应该先等一会再设置的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-17 22:30:43 | 显示全部楼层
weiter 发表于 2020-10-17 22:22
有点绕……T__T
但是谢谢

很绕么?我觉得已经讲得很明白了。。。。。

就是不管你输入什么,只要a不是空字符串,你输出的都是‘1’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-17 22:33:34 | 显示全部楼层
疾风怪盗 发表于 2020-10-17 22:30
很绕么?我觉得已经讲得很明白了。。。。。

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

开头有点绕
我去刷一下视频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 07:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表