跳到主要内容

条件判断

1. if 语句基本语法

基本格式

if <条件判断>:
<执行语句>

关键点

  • 条件判断后必须有冒号 :
  • 执行语句必须缩进(通常4个空格)
  • 如果条件为 True,执行缩进的代码块;否则跳过
age = 20
if age >= 18:
print('your age is', age)
print('adult')

2. if-else 语句

基本格式

if <条件判断>:
<执行1>
else:
<执行2>

逻辑:如果 if 判断是 False,执行 else

age = 3
if age >= 18:
print('adult')
else:
print('teenager')

3. if-elif-else 语句

基本格式

if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>

说明

  • elifelse if 的缩写
  • 可以有多个 elif
  • else 是可选的
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')

4. 执行特点(重要)

从上往下匹配

  • 执行顺序:从上往下判断
  • 停止条件:遇到第一个 True 的条件,执行对应代码块后,立即忽略后续所有 elifelse
age = 20
if age >= 6:
print('teenager') # ✅ 执行这里
elif age >= 18:
print('adult') # ❌ 不会执行(已被上面的if拦截)
else:
print('kid') # ❌ 不会执行

记忆一旦匹配成功,后续全部跳过

5. 条件判断的简写

简写规则

只要 x 是以下情况,就判断为 True

  • 非零数值1, -1, 3.14
  • 非空字符串'hello', '0'
  • 非空list[1, 2], ['a']
  • 非空tuple(1, 2)
  • 非空dict{'a': 1}

以下情况判断为 False

  • 零值0, 0.0
  • 空值None
  • 空字符串''
  • 空集合[], (), {}
if x:              # 等价于 if x != 0 and x != '' and x != [] 等
print('True')

记忆口诀非零非空为True,零值空值为False

6. input() 与类型转换

input() 返回字符串

input() 函数总是返回字符串类型str),不能直接与整数比较

# ❌ 错误示例
birth = input('birth: ')
if birth < 2000: # TypeError: str 不能与 int 比较
print('00前')

类型转换

使用 int() 函数将字符串转换为整数:

# ✅ 正确示例
s = input('birth: ')
birth = int(s) # 字符串转整数
if birth < 2000:
print('00前')
else:
print('00后')

注意事项

  • 非法输入会报错:如果输入的不是数字(如 'abc'),int() 会抛出 ValueError
  • 错误处理:后续章节会讲到如何捕获和处理这类错误
s = input('birth: ')
birth = int(s) # 如果输入 'abc',这里会报 ValueError

7. 常见操作速查

基本结构

# 单一判断
if condition:
do_something()

# 二选一
if condition:
do_a()
else:
do_b()

# 多条件判断
if condition1:
do_1()
elif condition2:
do_2()
elif condition3:
do_3()
else:
do_default()

条件运算符

# 比较运算符
== # 等于
!= # 不等于
> # 大于
< # 小于
>= # 大于等于
<= # 小于等于

# 逻辑运算符
and # 与
or # 或
not # 非

示例

# 年龄判断
age = 20
if age >= 18:
print('成年人')
elif age >= 6:
print('青少年')
else:
print('儿童')

# 简写判断
name = 'Bob'
if name: # 非空字符串为True
print(f'Hello, {name}')

# 类型转换
score = input('请输入分数: ')
score = int(score)
if score >= 90:
print('优秀')
elif score >= 60:
print('及格')
else:
print('不及格')

8. 快速记忆总结

  • 基本结构ifelifelse,每个后面都要有冒号 :
  • 执行特点:从上往下,遇到 True 就执行并停止
  • 缩进规则:执行语句必须缩进(4个空格)
  • 简写判断:非零非空为 True,零值空值为 False
  • 类型转换input() 返回 str,需要用 int() 转换才能与数字比较
  • 常见错误:忘记冒号、缩进错误、类型不匹配

9. 常见错误

错误1:忘记冒号

# ❌ 错误
if age >= 18
print('adult')

# ✅ 正确
if age >= 18:
print('adult')

错误2:缩进错误

# ❌ 错误
if age >= 18:
print('adult') # 没有缩进

# ✅ 正确
if age >= 18:
print('adult') # 正确缩进

错误3:类型不匹配

# ❌ 错误
age = input('age: ')
if age >= 18: # str 与 int 不能直接比较

# ✅ 正确
age = int(input('age: '))
if age >= 18:
print('adult')