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

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日

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格