当前位置:首页>python>Python零基础入门(二):运算符与条件判断

Python零基础入门(二):运算符与条件判断

  • 2026-10-11 07:16:35
Python零基础入门(二):运算符与条件判断

前言

上一篇我们完成了 Python 环境搭建,并认识了数字、字符串、列表等核心数据类型。有了数据,下一步自然就是对数据进行运算和判断——这就是运算符和条件语句的用武之地。

运算符让你能"算",条件语句让你能"想"。两者结合,代码就开始有了逻辑。

本文是 Python 零基础入门系列的第二篇,建议先阅读 第一篇:环境搭建、初体验与数据类型,再来看这一篇,衔接会更顺畅。


一、运算符

Python 的运算符可以分成六大类:算术、比较、赋值、逻辑、成员、身份。逐一过一遍,每种写几个例子就记住了。

1.1 算术运算符

最基础的一类,日常写代码几乎每行都会碰到:

a = 10b = 3print(a + b)    # 加 → 13print(a - b)    # 减 → 7print(a * b)    # 乘 → 30print(a / b)    # 除 → 3.3333...(总是返回 float)print(a // b)   # 整除 → 3(向下取整)print(a % b)    # 取余 → 1print(a ** b)   # 幂 → 1000(10 的 3 次方)

两个容易混淆的点:

  • • / 总是返回浮点数,即使能整除:10 / 2 结果是 5.0 而不是 5。
  • • // 是向下取整,不是丢掉小数部分:-10 // 3 结果是 -4(因为 -3.333... 向下取整是 -4)。

1.2 比较运算符

比较运算的结果永远是布尔值 True 或 False:

x = 5y = 10print(x == y)    # 等于 → Falseprint(x != y)    # 不等于 → Trueprint(x > y)     # 大于 → Falseprint(x < y)     # 小于 → Trueprint(x >= 5)    # 大于等于 → Trueprint(x <= 3)    # 小于等于 → False# 链式比较(Python 的特色语法)age = 25print(18 <= age <= 60)   # True,等价于 age >= 18 and age <= 60

链式比较是 Python 的一大语法糖,a < b < c 在 Python 中是合法的,等价于 a < b and b < c,写起来既简洁又符合数学直觉。

1.3 赋值运算符

除了最基础的 =,Python 还提供一系列复合赋值运算符,本质上就是"先运算,再赋值"的缩写:

x = 10x += 3    # x = x + 3 → 13x -= 2    # x = x - 2 → 11x *= 4    # x = x * 4 → 44x /= 2    # x = x / 2 → 22.0x //= 3   # x = x // 3 → 7.0x %= 3    # x = x % 3 → 1.0x **= 2   # x = x ** 2 → 1.0# 海象运算符 :=(Python 3.8+)# 在表达式中同时完成赋值和取值if (n := len("hello")) > 3:    print(f"字符串长度为 {n},大于 3")   # 字符串长度为 5,大于 3

海象运算符 := 的名字来自它长得像海象的眼睛和獠牙。它能在 if 或 while 等表达式中边赋值边判断,减少重复代码。

1.4 逻辑运算符

Python 用英文单词而非符号表示逻辑运算,可读性拉满:

a = Trueb = Falseprint(a and b)   # 与 → False(两边都为 True 才为 True)print(a or b)    # 或 → True(至少一边为 True)print(not a)     # 非 → False(取反)# 短路求值print(False and 1/0)   # False,不会执行 1/0,因为左边已经是 Falseprint(True or 1/0)     # True,不会执行 1/0,因为左边已经是 True

短路求值是 Python 的性能优化机制:and 左边为 False 时右边不执行,or 左边为 True 时右边不执行。利用这个特性可以写出简洁的代码:

# 如果 name 为空,使用默认值display_name = name or "匿名用户"# 如果列表非空,取第一个元素first = items and items[0]

1.5 成员运算符

用 in 和 not in 判断某个元素是否在容器中:

fruits = ["苹果", "香蕉", "橘子"]print("苹果" in fruits)       # Trueprint("葡萄" not in fruits)   # True# 字符串也适用text = "Hello Python"print("Py" in text)           # Trueprint("py" in text)           # False(区分大小写)# 字典判断的是 keystudent = {"name": "小明", "age": 20}print("name" in student)      # Trueprint("小明" in student)      # False(不判断 value)

1.6 身份运算符

is 和 is not 判断两个变量是否指向同一个对象(比较内存地址),而不是值是否相等:

a = [1, 2, 3]b = [1, 2, 3]c = aprint(a == b)    # True(值相等)print(a is b)    # False(两个不同的列表对象)print(a is c)    # True(c 就是 a)# 小整数缓存机制(-5 到 256)x = 256y = 256print(x is y)    # True(Python 缓存了小整数)x = 257y = 257print(x is y)    # False(超出缓存范围,是两个不同对象)

经验法则:比较值用 ==,判断是不是 None 才用 is。if x is None 是 Python 社区公认的最佳实践,比 if x == None 更快更安全。

1.7 运算符优先级速查表

写复杂表达式时,优先级容易搞混。一张表搞定:

优先级
运算符
说明
1(最高)
**
幂运算
2
+x
, -x, ~x
一元运算
3
*
, /, //, %
乘除取余
4
+
, -
加减
5
<<
, >>
移位
6
&
按位与
7
^
按位异或
8
|
按位或
9
==
, !=, >, <, >=, <=, is, in
比较与成员
10
not
逻辑非
11
and
逻辑与
12(最低)
or
逻辑或

记不住也没关系——加括号就行了。(a + b) * c 永远比 a + b * c 更清晰。


二、条件判断

运算符让代码能"算",条件判断则让代码能"想"。根据不同的条件执行不同的代码,程序才有了智能。

2.1 if / elif / else

Python 条件判断的基本结构:

score = 85if score >= 90:    grade = "A"elif score >= 80:    grade = "B"elif score >= 70:    grade = "C"elif score >= 60:    grade = "D"else:    grade = "F"print(f"成绩等级:{grade}")   # 成绩等级:B

关键规则:

  • • 每个条件后面必须有冒号:
  • • 条件为 True 的代码块必须缩进(通常 4 个空格)
  • • elif 可以有任意多个,else 可有可无
  • • 从上到下依次判断,命中第一个 True 后不再往下走

2.2 三元表达式(条件表达式)

有些简单的 if-else 可以用一行写完:

# 传统写法if score >= 60:    result = "及格"else:    result = "不及格"# 三元表达式(一行搞定)result = "及格" if score >= 60 else "不及格"

语法是 值1 if 条件 else 值2,和其他语言 条件 ? 值1 : 值2 顺序不同,刚开始容易写反,多练几次就好了。

2.3 条件判断中的"真值"测试

在 Python 中,任何对象都可以放在 if 后面做判断。以下值被视为 False(称为"假值"):

# 所有假值bool(0)         # Falsebool(0.0)       # Falsebool("")        # False —— 空字符串bool([])        # False —— 空列表bool({})        # False —— 空字典bool(set())     # False —— 空集合bool(None)      # Falsebool(False)     # False# 其他所有值都视为 Truebool(1)         # Truebool(-1)        # Truebool(" ")       # True(空格不是空字符串)bool([0])       # True(包含元素就不是空列表)

利用这个特性,可以写出非常 Pythonic 的代码:

# 检查列表是否为空items = []if not items:    print("列表为空,请先添加数据")# 检查字符串name = ""if not name:    name = "默认用户"# 等价于name = name or "默认用户"

2.4 嵌套条件与多条件组合

# 多条件组合age = 22has_ticket = Trueis_vip = Falseif is_vip:    print("VIP 通道,直接入场")elif age >= 18 and has_ticket:    print("成人票,请入场")elif age >= 18 and not has_ticket:    print("请先购票")elif age < 18:    print("未成年观众请由家长陪同")

条件复杂时,建议提前用变量存储判断结果,既好读又好调试:

# 不推荐:条件全挤在 if 里if user.is_active and user.age >= 18 and (user.has_permission or user.is_admin):    ...# 推荐:拆成有意义的变量is_adult = user.age >= 18has_access = user.has_permission or user.is_adminif user.is_active and is_adult and has_access:    ...

2.5 match-case(Python 3.10+)

Python 3.10 引入了类似其他语言 switch-case 的模式匹配:

# 传统写法http_status = 404if http_status == 200:    message = "OK"elif http_status == 404:    message = "Not Found"elif http_status == 500:    message = "Internal Server Error"else:    message = "Unknown"# match-case 写法(Python 3.10+)match http_status:    case 200:        message = "OK"    case 404:        message = "Not Found"    case 500:        message = "Internal Server Error"    case _:                 # _ 是通配符,类似 else        message = "Unknown"print(message)   # Not Found

match-case 的能力远不止简单匹配,它还支持解构、守卫条件等高级用法。初级阶段先掌握上面这种基本匹配即可,后续我们会专门写一篇深入讲解模式匹配。


三、综合示例:做一个简易计算器

把运算符和条件判断结合起来,来实现一个命令行简易计算器:

print("=== 简易计算器 ===")print("支持运算:+ - * /")print("输入 &#x27;q&#x27; 退出")while True:    expr = input("\n请输入算式(如 1 + 2):").strip()    if expr.lower() == &#x27;q&#x27;:        print("再见!")        break    if not expr:        print("输入为空,请重新输入")        continue    # 简单的字符串解析    parts = expr.split()    if len(parts) != 3:        print("格式错误,请按 &#x27;数字 运算符 数字&#x27; 格式输入")        continue    try:        a = float(parts[0])        op = parts[1]        b = float(parts[2])    except ValueError:        print("数字解析失败,请检查输入")        continue    # 根据运算符执行计算    if op == &#x27;+&#x27;:        result = a + b    elif op == &#x27;-&#x27;:        result = a - b    elif op == &#x27;*&#x27;:        result = a * b    elif op == &#x27;/&#x27;:        if b == 0:            print("错误:除数不能为 0")            continue        result = a / b    else:        print(f"不支持的运算符:{op}")        continue    print(f"结果:{a} {op} {b} = {result}")

这个小程序虽然只有 30 多行,已经涵盖了算术运算、比较运算、条件判断、循环、异常处理等知识点。你可以把它作为模板,往上加新功能(比如取余 %、幂运算 **)。


四、动手练习

试试这几道题,检验一下运算符和条件判断的掌握程度:

  1. 1. 写一个程序,输入一个年份,判断是否为闰年(规则:能被 4 整除但不能被 100 整除,或者能被 400 整除)。
  2. 2. 用户输入三个数字,输出其中的最大值(不用 max() 函数,用 if-else 实现)。
  3. 3. 写一个 BMI 计算器:输入身高(m)和体重(kg),计算 BMI 并根据标准输出评价(偏瘦 / 正常 / 偏胖 / 肥胖)。
  4. 4. 输入一个字符,判断它是大写字母、小写字母、数字还是其他字符(提示:用字符串方法 isupper()、islower()、isdigit())。

五、小结

本篇我们系统梳理了两大主题:

  • • 六大运算符:算术、比较、赋值、逻辑、成员、身份——它们是 Python 表达式的基石。记住几个容易踩坑的地方:/ 总是返回浮点数,// 是向下取整,is 用于判断身份而不是值。
  • • 条件判断:if / elif / else 让代码有了分支能力。掌握假值测试(空字符串、空列表、None 等都视为 False)和三元表达式,能让代码更简洁 Pythonic。

运算符 + 条件判断,已经足够写出有逻辑的小程序了。下一篇我们将进入循环(for / while) 的世界——重复的事情交给代码去做,这才是编程的核心乐趣。


本文首发于微信公众号「羽您码上聊」,欢迎关注获取更多技术内容。

最新文章

随机文章