条件判断
本节目标
学完这一节,你会知道:
- 为什么程序需要条件判断
- 如何使用
if、elif、else - 如何写比较条件和组合条件
- 如何避免常见的缩进、等号和条件顺序错误
- 如何写一个简单的成绩等级判断程序
条件判断像程序的路口:满足某个条件就走一条路,不满足就走另一条路。
先跑一个例子
新建文件 score_grade.py,写入:
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 60:
grade = "及格"
else:
grade = "不及格"
print(f"分数:{score}")
print(f"等级:{grade}")
运行:
python3 score_grade.py
你会看到:
分数:85
等级:B
把 score 改成不同分数,输出结果也会变化。
为什么需要条件判断?
如果程序只能从上到下一行行执行,它就不能应对不同情况。
比如判断年龄:
age = 18
if age >= 18:
print("你已经成年")
else:
print("你还未成年")
如果 age 是 18 或更大,执行第一条输出;否则执行第二条输出。
if / elif / else
最基本结构:
if 条件:
条件成立时执行
else:
条件不成立时执行
多种情况可以用 elif:
weather = "rainy"
if weather == "sunny":
print("出门散步")
elif weather == "rainy":
print("记得带伞")
elif weather == "snowy":
print("注意保暖")
else:
print("正常安排")
规则:
if必须有elif可以有多个,也可以没有else最多一个,也可以没有- 从上到下判断,命中一个分支后,后面的分支就不会再执行
比较条件
条件通常由比较运算得到。
age = 20
print(age >= 18)
print(age < 18)
print(age == 20)
print(age != 30)
常见比较符号:
==:等于!=:不等于>:大于<:小于>=:大于等于<=:小于等于
注意:= 是赋值,== 才是判断是否相等。
多条件组合
有时候一个判断需要多个条件。
age = 20
has_ticket = True
if age >= 18 and has_ticket:
print("可以入场")
else:
print("不能入场")
逻辑运算符:
and:两个条件都成立or:至少一个条件成立not:取反
例子:
role = "vip"
if role == "admin" or role == "vip":
print("有访问权限")
is_banned = False
if not is_banned:
print("允许发言")
条件顺序很重要
判断区间时,顺序会影响结果。
正确写法:
score = 95
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
如果先写 score >= 60,那么 95 分会先命中“及格”,后面的“优秀”就没有机会执行了。
条件表达式
简单的二选一可以写成一行:
age = 20
status = "成年" if age >= 18 else "未成年"
print(status)
刚入门时,优先写普通 if/else。等你觉得代码很简单,再考虑条件表达式。
逐行拆解
再看开头的成绩程序:
if score >= 90:
grade = "A"
如果分数大于等于 90,等级是 A。
elif score >= 80:
grade = "B"
如果前面的条件不成立,再判断是否大于等于 80。
else:
grade = "不及格"
如果前面的条件都不成立,就执行 else。
自己改一改
把 score_grade.py 改成根据年龄判断票价:
age = 12
if age < 6:
price = 0
elif age < 18:
price = 20
elif age < 60:
price = 40
else:
price = 20
print(f"年龄:{age}")
print(f"票价:{price} 元")
然后继续改:
- 把
age改成不同数字观察结果 - 增加一个变量
is_member - 如果是会员,再优惠 5 元
实战:BMI 计算器
新建文件 bmi.py:
weight = float(input("请输入体重,单位 kg:"))
height = float(input("请输入身高,单位 m:"))
bmi = weight / (height ** 2)
if bmi < 18.5:
level = "偏瘦"
elif bmi < 24:
level = "正常"
elif bmi < 28:
level = "偏胖"
else:
level = "肥胖"
print(f"BMI:{bmi:.1f}")
print(f"分类:{level}")
这个程序会根据不同 BMI 给出不同分类。
常见错误
1. 忘记冒号
错误写法:
if age >= 18
print("成年")
正确写法:
if age >= 18:
print("成年")
2. 缩进不对
错误写法:
if age >= 18:
print("成年")
正确写法:
if age >= 18:
print("成年")
3. 把 == 写成 =
错误写法:
if username = "admin":
print("登录成功")
正确写法:
if username == "admin":
print("登录成功")
4. 条件顺序写反
score = 95
if score >= 60:
print("及格")
elif score >= 90:
print("优秀")
这段代码不会输出“优秀”。更严格的条件要放在前面。
小练习
练习 1:判断奇偶
创建变量 number,判断它是奇数还是偶数。
练习 2:登录验证
创建两个变量:
usernamepassword
如果用户名是 "admin" 且密码是 "123456",输出“登录成功”,否则输出“用户名或密码错误”。
练习 3:成绩评价
创建变量 score:
- 90 分及以上:优秀
- 80 分及以上:良好
- 60 分及以上:及格
- 60 分以下:继续加油
参考答案
练习 1:
number = 7
if number % 2 == 0:
print("偶数")
else:
print("奇数")
练习 2:
username = "admin"
password = "123456"
if username == "admin" and password == "123456":
print("登录成功")
else:
print("用户名或密码错误")
练习 3:
score = 86
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("继续加油")
小结
这一节你学会了:
- 条件判断可以让程序根据不同情况执行不同代码
if、elif、else从上到下判断- 比较运算会得到
True或False and、or、not可以组合多个条件- 条件顺序、冒号和缩进都很重要
下一节我们会学习循环。它可以让程序重复执行一段代码,帮你处理大量重复任务。
程序会做选择了,马哥觉得它开始有脑子了
if/elif/else 就是给程序安排路口。刚开始最容易踩的是冒号、缩进和条件顺序,别怕,报错通常很诚实。把成绩、年龄、登录这些例子多换几个值,你会看见程序怎样一步步做决定。
还没有评论,来抢沙发吧!