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

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

相关推荐
程序员清风1 小时前
PydanticAI 实战:用类型安全构建可靠的 Python Agent
开发语言·python·安全
梦想画家2 小时前
SQLMesh Python 模型入门(三):前后置语句、蓝图建模与避坑指南
大数据·python·sqlmesh
迅猛龙办公室2 小时前
Python实现绘制同切圆
开发语言·python
言乐63 小时前
Python语音检索
开发语言·python·django·virtualenv·pygame
泡茶喝茶写代码3 小时前
A股量化数据工程:从 REST 接口到策略信号(第 1 篇):指数列表与实时行情接入
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据接口
happylifetree3 小时前
Python34-35:核心语法-流程控制语句-循环-综合案例
python
吃饱了得干活4 小时前
Agent 的记忆与工具:从上下文窗口到 MCP
python·agent·mcp
燐妤4 小时前
LangGraph-复习总览
python·ai·面试·agent·学习方法·langgraph
尹人入圣4 小时前
市面上IP驱动产业新场景新工具
运维·网络·python·tcp/ip