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

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

本文解析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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。