Python条件判断语句 if
核心概念
计算机能完成自动化任务,关键在于它能根据特定条件自动做出判断。在Python中,这种判断主要通过 if
语句来实现。
1. 基本 if
语句
-
功能 :当条件判断为
True
时,执行缩进块内的代码;否则,什么也不做。 -
语法与示例 :
pythonage = 20 if age >= 18: print('your age is', age) # 注意缩进 print('adult') # 这两行属于if代码块
-
关键:严格遵守Python的缩进规则来定义代码块。
2. if...else
语句
-
功能 :提供两个分支。如果
if
的条件为False
,则执行else
下的代码。 -
语法与示例 :
pythonage = 3 if age >= 18: print('adult') else: print('teenager') # 因为age=3不满足if条件,所以会执行这里
-
注意 :不要遗漏冒号
:
。
3. if...elif...else
语句
-
功能 :用于进行多个条件的细致判断。
elif
是else if
的缩写。 -
语法与示例:
pythonage = 3 if age >= 18: print('adult') elif age >= 6: # 可以添加多个elif print('teenager') else: print('kid')
-
执行特点 :从上到下判断 ,一旦某个条件为
True
,便执行对应的代码块,并忽略 后续所有的elif
和else
。思考题答案 :为什么
age = 20
时打印'teenager'
?pythonage = 20 if age >= 6: # 第一个判断:20>=6 为 True print('teenager') # 立即执行,并忽略后面的elif和else elif age >= 18: # 这行已经被跳过,不会执行 print('adult') else: print('kid')
4. 条件的简写
-
判断条件可以非常简洁。只要
x
是非零数值、非空字符串、非空列表 等,就会被视为True
;反之(如0
,""
,[]
,None
)则被视为False
。 -
示例 :
pythonif x: print('True') # 只要x不是"空"值,就会打印True
5. 重要注意事项:处理用户输入 (input()
)
-
问题 :
input()
函数返回的数据类型永远是字符串 (str
) ,不能直接与整数 (int
) 进行比较。 -
错误示例:
pythonbirth = input('birth: ') # 用户输入"1982",birth是字符串'1982' if birth < 2000: # 错误!字符串和整数不能比较 print('00前')
这会引发
TypeError
。 -
正确方法 :使用
int()
函数将字符串转换为整数。pythons = input('birth: ') birth = int(s) # 将字符串s转换为整数 if birth < 2000: print('00前') else: print('00后')
-
新的风险 :如果用户输入的不是数字(如
abc
),int()
函数转换会失败,并引发ValueError
导致程序崩溃。 -
解决方案 :如何优雅地处理这种输入错误(例如,提示用户重新输入),将在后续关于错误捕获和调试的章节中讲解。
总结要点
- 核心 :
if
,elif
,else
是实现程序分支和自动判断的基础。 - 语法 :牢记冒号
:
和代码缩进。 - 逻辑:理解"从上到下判断,遇真即止"的执行顺序。
- 陷阱 :使用
input()
获取用户输入时,务必注意类型转换,并考虑处理非法输入的情况。
做个练习题
小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
- 低于18.5:过轻
- 18.5-25:正常
- 25-28:过重
- 28-32:肥胖
- 高于32:严重肥胖
用if-elif
判断并打印结果:
python
hight =1.50
weight=50.5
bmi=weight/hight**2
print("bmi=",bmi)
if bmi<18.5:
print("过轻")
elif 18.5<bmi<25:
print("正常")
elif 25<bmi<28:
print("过重")
elif 28<bmi<32:
print('肥胖')
elif bmi>=32:
print("严重肥胖")