Python if语句中or的使用陷阱与正确写法

周予安
周予安
发布时间:2026-10-16 | 5人浏览过
原创

本文解析Python中if语句使用or时的常见误区,指出`if i == 1 or 5`并非判断i是否等于1或5,而是判断表达式真假。详细讲解了正确的多重条件判断写法,包括使用in关键字或重复比较,并补充了if、if-else、if-elif-else、嵌套if及三目运算符的基础用法。

在Python的if判断语句中,若直接包含or运算符,初学者常易产生误解。

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

这种写法实际上并非判断变量i是否等于1或者5,其逻辑等价于 `(if i == 1) or (5)`。

因此,该判断语句前半部分 `i==1` 若为false,程序会继续评估后半部分;由于后半部分是数字5,而在Python中非零整数被视为True,所以整体判断结果恒为true,导致代码块始终执行并输出i的值。

若要正确判断i是否等于1或者5,应采用以下写法之一:

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

第一种方式是使用括号明确优先级:

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

第二种方式是分别对i进行两次比较:

if i in (1, 5):
  print(i)

关于Python中if相关语句的完整用法说明如下。

1.基础if语句

语法结构为:if 条件 : 后续代码块

代码块1

代码块2

        ......

当条件成立时,执行后续缩进的代码(代码1、代码2等);若条件不成立,则跳过这些代码不执行。

具体代码示例:

运行输出结果:

需要注意的是,只有经过缩进的print语句才属于if语句的一部分,仅在条件成立时执行;而未缩进的print语句无论条件是否成立都会执行。

2.if-else语句

语法结构为:if 条件: 代码块1

当条件成立时执行的代码1

else: 代码块2

当条件不成立时执行的代码2

3.if-elif-else(多重条件判断)语句

语法结构为:if 条件1: 代码块1

当条件1成立时执行的代码1

elif 条件2: 代码块2

当条件2成立时执行的代码2

......

else: 代码块3

当以上所有条件均不成立时执行的代码

4.if嵌套语句

语法结构为:if 条件1: 代码块1

当条件1成立时执行的代码1

if 条件2: 代码块2

当条件2成立时执行的代码2

内部的第二个if语句仅当外层条件1和内层条件2同时成立时,其代码才会被执行(务必注意缩进层级)。

5.猜拳小游戏示例

import random
player = int(input('请出拳(1-石头,2-剪刀,3-布):'))
computer = random.randint(1, 3)
print(f'电脑出拳为:{computer}')
if (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):
    print('玩家获胜')
elif player == computer:
    print('平局')
else:
    print('电脑获胜')
import random
random.randint()

这两行代码用于生成随机数,初学者可暂不深入理解其内部机制。

6.三目运算符

三目运算符也被称为三元运算符或三元表达式。

其主要优点包括:

能够简化代码结构,提高可读性。

基本语法格式为:

条件成立执行的代码 if 条件 else 条件不成立执行的代码

应用场景示例:

# 找出较大的值
a = 1
b = 2
max_number = a if a > b else b
print(f'较大值为{max_number}')
# 找出较大值与较小值的差
c, d = 3, 4
difference = c-d if c > d else d-c
print(f'大值减小值为{difference}')

以上为个人经验分享,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表