Python22-26:核心语法-流程控制语句-if条件判断

数据的逻辑处理中最核心的就是流程控制语句(其主要涉及到三类:条件判断、模式匹配、循环)

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}元")

**声明:**本篇学习笔记参考黑马程序员相关课程,部分素材来源于网络公开资料及本人补充;文中为个人整理复盘,仅供学习交流使用。

相关推荐
不是万能的豆学长2 小时前
filetidy 文件整理助手:一键归类 + 规范重命名(Python 零依赖单文件工具)
大数据·开发语言·python·技术美术
gCode Teacher 格码致知3 小时前
Pandas教学-18:number与numeric的区别
python·pandas
梦想不只是梦与想6 小时前
Python 中subprocess 模块:执行外部命令
python·subprocess·调用外部命令
懂点Tech6 小时前
ctfshow MISC入门图片篇(信息附加):misc41解题思路
开发语言·python
爱上纯净的蓝天11 小时前
不用云做 RAG:一个本地笔记问答工具的取舍与坑
python·开源·大模型·rag·本地部署
cspttty11 小时前
2027风险管理岗准备路线:数学与应用数学如何补齐金融、SQL与Python
开发语言·python·金融
用户83562907805111 小时前
如何使用 Python 格式化 Excel 单元格中的长文本
后端·python
我命由我1234512 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
严谨的麻辣烫12 小时前
Python HTTP 连接池怎么用?从连接复用到请求异常排查
开发语言·python·http·requests·网络排查
摇滚侠12 小时前
《Java并发编程之美》第 4 章 Java 并发包中原子操作类原理剖析 阅读笔记 7
java·笔记·python