数据的逻辑处理中最核心的就是流程控制语句(其主要涉及到三类:条件判断、模式匹配、循环)
if条件判断
场景:只有满足指定条件,才会执行对应的代码逻辑。
if判断语句的结果,必须是布尔类型True或False。
注意:Python中是通过缩进来描述代码的归属的,归属于if代码块的语句,需要在前面缩进4个空格(按Tab键Pycharm会自动转为空格)。
if语句的基本格式

python
# 定义变量
score = 695
# 条件判断
if score > 680:
print("欢迎你,来清华读书")
print("也恭喜你即将进入精彩的大学生活") # 不能比上面那行多缩进空格,会报错
print("------------------------------") # 不属于上面的if代码块,是另外独立的语句
案例
python
# if案例:结合前面学习的输入输出及if条件判断的知识,完成B站登录功能的实现(正确账号和密码为 12345678/666888)
# 正确的账号和密码
ok_account = "12345678"
ok_password = "666888"
# 1. 接收用户输入的账号和密码
account = input("请输入您的B站账号:")
password = input("请输入您的B站密码:")
# 2. 判断账号和密码是否全部正确,如果都正确,则登录成功,进入B站首页
if account == ok_account and password == ok_password:
print("登录成功 ~")
print("进入B站首页 ~")
# 3. 判断账号和密码是否有错误的,如果有任何一个错误,则登录失败,提示错误信息
if account != ok_account or password != ok_password:
print("登录失败 !")
print("账号或密码错误 !")
if语句进阶
if... else...

python
# if... else... 案例:结合前面学习的输入输出及if条件判断的知识,完成B站登录功能的实现(正确账号和密码为 12345678/666888)
# 正确的账号和密码
ok_account = "12345678"
ok_password = "666888"
# 1. 接收用户输入的账号和密码
account = input("请输入您的B站账号:")
password = input("请输入您的B站密码:")
# 2. 判断账号和密码是否全部正确,如果都正确,则登录成功,进入B站首页
# 优化后
if account == ok_account and password == ok_password:
print("登录成功 ~")
print("进入B站首页 ~")
else:
print("登录失败 !")
print("账号或密码错误 !")
案例
python
# 案例1:根据用户输入的年份,判断这一年是闰年还是平年。(非整百年份,且能被4整除的年份是闰年;整百年份(如1900年、2000年)必须能被400整除才是闰年。)
year = int(input("请输入需要判断的年份:"))
# 如果是 非整百年份,且能被4整除 就是闰年; 整百年份,必须被400整除 也是闰年
if (year % 100 != 0 and year % 4 == 0) or (year % 400 == 0) :
print(f"{year} 是闰年")
else:
print(f"{year} 是平年")
练习一
python
# 1、需求:根据用户输入的数字,判断该数字是奇数还是偶数
num = int(input("请输入一个整数:"))
if num % 2 == 0:
print(f"{num} 是偶数")
else:
print(f"{num} 是奇数")
# 一行精简写法(日常少用)
n = int(input("请输入整数:"))
print(f"{n}是{'偶数' if n%2==0 else '奇数'}")
python
# 2、需求:根据用户输入的年龄,判断该用户是否已经成年(>=18,成年;否则,未成年)
age = int(input("请输入年龄:"))
if age >= 18:
print(f"该年龄{age}已成年。")
else:
print(f"该年龄{age}未成年。")
# 一行精简写法
a = int(input("请输入你的年龄:"))
print(f"你的年龄{a}{'已成年' if a>=18 else '未成年'}")
if... elif... else...
作用:可以完成多个条件的判断(多分支判断)
注意事项:
1、elif 可以写多个
2、else 可有可无,如果有必须放在最后
3、多个条件判断是有顺序的,从上到下判断,如果前面有条件成立了,后面的条件就不会判断了
python
# 需求:根据用户输入的数字,判断该数字是正数,还是负数,还是0
num = int(input("请输入数字:"))
if num > 0:
print(f"{num}是一个正数。")
elif num < 0:
print(f"{num}是一个负数。")
else:
print(f"{num}是0")
案例
python
# 根据输入的用户名和密码进行系统登陆 == admin/666888 , root/563777,zhangsan/123456
username = input("请输入用户名:")
password = input("请输入密码:")
if username == "admin" and password == "666888":
print("登录成功!")
elif username == "root" and password == "563777":
print("登录成功!")
elif username == "zhangsan" and password == "123456":
print("登录成功!")
else:
print("登录失败,用户名或密码错误!")
练习二
购物折扣计算:根据输入的购物车的商品总额,以及如下的折扣规则,计算实际应付的金额。
- 金额 >= 500: 8折
- 300 <= 金额 < 500: 9折
- 100 <= 金额 < 300: 95折
- 金额 < 100: 无折扣
python
# 初步写的(需要纠正)
sum = float(input("购物车的商品总额:"))
if sum >= 500:
print(f"实际应付:{sum * 0.8}元")
elif 300 <= sum < 500:
print(f"实际应付:{sum * 0.9}元")
elif 100 <= sum < 300:
print(f"实际应付:{sum * 0.95}元")
else:
print(f"实际应付:{sum}元")
# 更好的写法
# sum 是 Python 自带内置关键字,不建议拿来当变量名,容易出错,换成total_money更规范。
# 购物金额算折扣
# 接收输入的购物总金额,转为小数
total_money = float(input("购物车的商品总额:"))
# 满500及以上 打8折
if total_money >= 500:
pay = total_money * 0.8
# 满300不足500 打9折
elif 300 <= total_money < 500:
pay = total_money * 0.9
# 满100不足300 95折
elif 100 <= total_money < 300:
pay = total_money * 0.95
# 小于100 不打折
else:
pay = total_money
# 统一输出,只写一次打印,更整洁
print(f"实际应付金额:{pay:.2f} 元")
# 精简经典写法(看懂即可,日常用上面标准版)
total = float(input("购物车的商品总额:"))
if total >= 500:
rate = 0.8
elif total >= 300:
rate = 0.9
elif total >= 100:
rate = 0.95
else:
rate = 1.0
real_pay = total * rate
print(f"实际应付:{real_pay:.2f}元")
# 巧思路:不用写上限,从上到下判断就行,简洁好记。
综合案例
python
# 三角形类型判断:根据输入的三个边的边长(正整数),判定是等边三角形、等腰三角形、普通三角形,还是不能构成三角形。
#(小学数学:构成三角形的条件,即任意两边之和要大于第三边。)
# 1、接收输入的三角形三个边的边长
a = int(input("请输入第一个边的边长:"))
b = int(input("请输入第二个边的边长:"))
c = int(input("请输入第三个边的边长:"))
# 2、判断三角形的类型 - pass 是一个空语句,起到一个语法占位的作用
# if a + b > c and a + c > b and b + c > a:
# pass
# else:
# print(f"{a} {b} {c} 这三个边长不能构成三角形!!!")
if a + b > c and a + c > b and b + c > a:
if a == b and b == c:
print(f"{a} {b} {c} 这三个边长构成等边三角形!!!")
elif a ==b or b == c or c == a:
print(f"{a} {b} {c} 这三个边长构成等腰三角形!!!")
else:
print(f"{a} {b} {c} 这三个边长构成普通三角形!!!")
else:
print(f"{a} {b} {c} 这三个边长不能构成三角形!!!")
# 更简洁的经典写法
# 三角形判断 简洁规范版
a = int(input("请输入第一条边长:"))
b = int(input("请输入第二条边长:"))
c = int(input("请输入第三条边长:"))
# 先排除负数、0
if a <= 0 or b <= 0 or c <= 0:
print("边长必须是正整数!")
elif a + b > c and a + c > b and b + c > a:
if a == b == c: # 更简洁:a==b==c
print("等边三角形")
elif a == b or b == c or c == a:
print("等腰三角形")
else:
print("普通三角形")
else:
print("不能构成三角形")
练习三
北京市居民年度用电电费计算:根据输入的用电度数,计算电费
北京市居民电费采用阶梯电价计价方式,所谓阶梯电价是指按照用户消费的电量分段定价,用电价格随用电量增加呈阶梯状逐级递增的一种电价定价机制。
阶梯电价规则:
- 第一档:2880度以下,电费单价0.4883元/度
- 第二档:2880-4800度,电费单价0.5383元/度
- 第三档:4800度以上,电费单价0.7883元/度
python
# 北京居民阶梯电价
# 第一档:2880度及以内,0.4883元/度
# 第二档:2880~4800度,超出2880的部分0.5383元/度
# 第三档:超过4800度,超出4800的部分0.7883元/度
# 获取用户输入的用电度数,并转成浮点数
kwh = float(input("请输入年度用电度数:"))
# 初始化电费
total_money = 0
if kwh <= 2880:
# 全部在第一档
total_money = kwh * 0.4883
elif kwh <= 4800:
# 2880度按一档,剩下的按第二档
part1 = 2880 * 0.4883
part2 = (kwh - 2880) * 0.5383
total_money = part1 + part2
else:
# 2880一档,(4800-2880)二档,剩余按三档
part1 = 2880 * 0.4883
part2 = (4800 - 2880) * 0.5383
part3 = (kwh - 4800) * 0.7883
total_money = part1 + part2 + part3
# 输出结果,保留2位小数
print(f"年度总电费为:{total_money:.2f}元")
**声明:**本篇学习笔记参考黑马程序员相关课程,部分素材来源于网络公开资料及本人补充;文中为个人整理复盘,仅供学习交流使用。