往事封尘 2022-02-08 02:33 采纳率: 100%
浏览 124
已结题

python if语句中or的语法问题

背景

在写一个if语句中带有or判断的语句时为了简化,先写成了一下的样子

i = 3
if i == 1 or 5:
    print(i)

结果:
3

由于or优先级最低,因此边成了 i==1和5两个条件的判断,结果不对于是改成下面的样子

代码如下
i = 5
if i == (1 or 5):
    print(i)
elseprint('not')

结果:
not
i = 1
if i == (1 or 5):
    print(i)
elseprint('not')

结果:
1

不知道为啥这样,我看网上有人说可以这样写的

希望的结果
i = 5
if i == 1 or i== 5:
    print(i)
elseprint('not')

结果:
5

希望与这个效果一样但是省略i== 不知道可以不

  • 写回答

7条回答 默认 最新

  • 关注

    i == 1 or 5 是用 or 分隔的
    i == 1

    5
    两个条件表达式。
    其中5是一个单独的条件表达式,5在条件判断时永远为真, or 两边是任何一边为真结果就是真。
    所以i == 1 or 5 表达式的结果就是永远为真。

    if i == (1 or 5): 也是不对
    or 和 and 是逻辑运算, 具有短路特性。
    逻辑运算的工作原理是:
    表达式A and 表达式B 的工作原理是:如果A的值为false(或A的值可以被当做为false)就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值
    表达式A or 表达式B 的工作原理是:如果A的值为true(或A的值可以被当做为true)就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值

    i == (1 or 5) 会先计算(1 or 5) , 1可以被当做为true就直接返回1, 5不会计算到
    所以if i == (1 or 5): 等同于 if i == 1:

    正确的写法是

    if i == 1 or i == 5:
    

    要简写可以这样子

    if i in [1,5]:
    

    就是判断i的值是否包含在[1,5]列表中

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 创建了问题 2月8日

悬赏问题

  • ¥20 matlab如何绘制三维瀑布图
  • ¥15 关于用abap来解决动态规划的问题,但是要求输出索引值,这个是难点
  • ¥15 在ISIS中什么是IP从地址
  • ¥15 压测时,并发量过高时,响应时间出现尖刺
  • ¥15 关于vmprotect3.8.4虚拟文件一项
  • ¥15 在不用IT调试的情况下怎样能连外网
  • ¥20 C#调用虚拟键盘TabTip.exe
  • ¥15 Qt4代码实现下面的界面
  • ¥15 CCS离散化传递函数与仿真不一致
  • ¥15 prism提示我reinstall prism 如何解决