Chealemon
2021-05-21 10:22
采纳率: 100%
浏览 37

好奇怪啊,Python怎么解释这两段代码?

‘0’ or print(‘AAA’)
‘0’ and print(‘AAA’)

很奇怪这两段代码都没报错,但‘0’ or print('AAA')没有输出,‘0’ and print(‘AAA’)输出AAA,无法理解

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Toblerone_Wind 2021-05-21 10:35
    已采纳

    这样就容易理解了,输出结果是这个

    说明第一个if执行了,第二个if没执行,同时也说明第一个if判断语句中的print没执行,第二个if判断语句中的print执行了

    进一步说明,'0'的逻辑值为真, print('AAA')和print('AAb')的逻辑值为假

    原理分析:

    if(a or b)  如果a为真,因为逻辑或的缘故,不管b是否为真该if语句都会执行,所以不会对b进行判断

    if(a and b) 如果a为真,因为逻辑与的缘故,一定会对b的真值进行判断

    已采纳该答案
    打赏 评论
  • 小P聊技术 2021-05-21 10:26
    def aaa():
        '0' or print('or AAA ')
        a = 1 or 2
        print(a)
        '0 ' and print('and AAA ')
    
    
    if __name__ == '__main__':
        # countName()
        aaa()

    输出结果:

    F:\JAVA\PyCharm\Python37\python.exe F:/JAVA/PyCharm/PycharmProjects/http_site/email/ttt.py
    1
    and AAA 
    
    Process finished with exit code 0
    
    打赏 评论
  • 影醉阏轩窗 2021-05-21 10:37

    这是python的and特性

    bool('0')  --> True
    bool(print('AAA')) --> False
    
    两者都为False,输出前者。两者都为True,输出后者.
    比如:
    0 and 3 --> 0
    3 and 0 --> 3
    1 and 3 --> 3
    3 and 1 --> 1
    
    同理or的使用
     
    打赏 评论
  • RRRR君 2021-05-21 10:37

    这个叫开关特性吧,在各种编程语言中都有体现,简单来说就是编程语言为了加快运算速度而做的一种操作,规则是这样的,假如一个逻辑表达式是真 or x,无论x是真还是假,这个表达式都是真,那么他就不会继续往下判断了,但是一个表达式是真 and x,他就必须要判断x的真假。结合这个规则来理解你应该就懂了

    打赏 评论

相关推荐 更多相似问题