条件判断
if基本格式
只有满足指定条件,才会执行对应的代码逻辑。判断语句的结果,必须是布尔类型True或False。如果为 True 则会执行if内的代码,False则不会执行。
# 语法:
if 要判断的条件:
条件成立时, 要执行的操作
# 案例:
# 定义变量
score = 695
# 条件判断
if score > 680:
print("欢迎你, 来清华读书")注意:
- Python中是通过缩进来描述代码的归属的,归属于if代码块的语句,需要在前方缩进空格。(按Tab键,PyCharm会自动转为空格)
- 同一个if语句中的代码块,前面缩进的空格数量一致。
if ... else
如果条件成立,则执行操作1;否则,就执行操作2
# 语法:
if 要判断的条件:
条件成立时, 要执行的操作1
else:
条件不成立时, 要执行的操作2
# 案例:
# B站登录功能的实现(正确账号和密码为 18888888888/666888)
# 正确的账号和密码
ok_account = "18888888888"
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("账号或密码错误 !")需求1:根据用户输入的年份,判断这一年是闰年还是平年。
- 非整百年份,且能被4整除的年份是闰年
- 整百年份(如1900年、2000年)必须能被400整除才是闰年
if ... elif...else
涉及到多个分支条件判断时使用。在JS中我们使用if...elseif...else的结构。
# if...elif...else 结构语法:
if 要判断的条件1:
条件成立时, 要执行的操作1
elif 要判断的条件2:
条件成立时,要执行的操作2
elif 要判断的条件3:
条件成立时,要执行的操作3
else:
所有条件不成立时, 要执行的操作4注意:
- elif 必须出现在if之后,不能独立存在。 if 之后可以有elif,也可以没有,也可以有多个elif。 最后的else,也是可有可无的。
- 满足第1个条件,就不会判断后面的条件了;第1个条件不成立,才会判断第2个条件;第2个不成立,才会判断第3个条件;前面所有的条件,都不成立,才会进入else。
# if...elif...else 案例 : 根据用户输入的数字, 判断数字是正数 , 还是负数, 还是0
num = int(input("请输入数字: "))
if num > 0:
print(f"{num} 是一个正数")
elif num < 0:
print(f"{num} 是一个负数")
else:
print(f"{num} 是0")- 案例:根据输入的用户名、密码完成系统登录
- 用户名、密码为
admin/666888或root/547527或zhangsan/123456,则输出登录成功 - 否则就提示用户名或密码错误
- 用户名、密码为
# 案例: 根据输入的用户名和密码进行系统登录 -- admin/666888 root/547527 zhangsan/123456
username = input("请输入用户名: ")
password = input("请输入密码: ")
if username == "admin" and password == "666888":
print("用户1登录成功")
elif username == "root" and password == "547527":
print("用户2登录成功")
elif username == "zhangsan" and password == "123456":
print("用户3登录成功")
else:
print("登录失败, 用户名或密码错误")- 案例:根据输入的星期几,判断今天的工作日程安排 ?
# 工作日程安排
day = input("请输入星期几(1-7):")
if day == "1":
print("周一:工作会议日")
elif day == "2":
print("周二:学习培训日")
elif day == "3":
print("周三:项目开发日")
elif day == "4":
print("周四:代码审查日")
elif day == "5":
print("周五:总结规划日")
elif day == "6" or day == "7":
print("周末:休息放松")
else:
print("输入错误")我们可以看到,通过if...elif...else 条件判断的语法,就可以很轻松实现上述的功能 。 但是大家也会看到,这种方式在实现的时候,我们在编写条件的时候,是比较繁琐的,存在大量重复性的等值判断 day ==。
那其实,在Python中,给我们提供了模式匹配的语法,就可以很方便的来解决这个问题了。
模式匹配
结构模式匹配就是用一个清晰的 模板 去精准的匹配数据的结构和内容,匹配成功则执行相应的操作。
# 语法规则如下:
match 表达式:
case 值1:
如果表达式的值为值1, 执行操作1
case 值2:
如果表达式的值为值2, 执行操作2
case 值3:
如果表达式的值为值3, 执行操作3
case 值4 | 值5 | 值6:
如果表达式的值为值4, 执行操作4
case _:
如果前面都没有匹配上, 执行该操作执行流程:
- 首先计算 match 指定的表达式的值
- 从上到下依次和case后面的值进行匹配,匹配正确,就执行对应的语句
- 如果前面所有的case都没有匹配上,就会执行默认的case _
符号解读:
- 其中的 | 表示 或 的关系,匹配多个值中的任意一个。
- case _ 是用来匹配其他所有情况的。
代码演示如下:
# 工作日程安排
day = input("请输入星期几(1-7):")
match day:
case "1":
print("周一:工作会议日")
case "2":
print("周二:学习培训日")
case "3":
print("周三:项目开发日")
case "4":
print("周四:代码审查日")
case "5":
print("周五:总结规划日")
case "6" | "7":
print("周末:休息放松")
case _:
print("输入错误")- **案例:**简易计算器
需求:实现一个计算器,可以实现+ - * / 运算,用户输入需要运算的两个数以及运算符之后,就可以进行计算。
# 案例: 基于match...case 实现一个简易的计算器,可以实现 + - * / 运算,用户输入需要运算的两个数以及运算符之后,就可以进行计算。
num1 = float(input("请输入第一个数: "))
num2 = float(input("请输入第二个数: "))
oper = input("请输入运算符(+ - * /) : ")
match oper:
case "+":
print(f"{num1} + {num2} = {num1 + num2}")
case "-":
print(f"{num1} - {num2} = {num1 - num2}")
case "*":
print(f"{num1} * {num2} = {num1 * num2}")
case "/" if num2 != 0: # if条件成立, 才匹配这个case
print(f"{num1} / {num2} = {num1 / num2}")
case _:
print("操作不支持!!!")循环
在Python中,关于循环的语法,分为两类:while循环和for循环。
while循环
while循环是通过条件表达式,来控制是否要进行下一次循环的。如果条件表达式为True,则执行循环体中的语句;如果条件表达式为False,则结束循环。
# while语法结构
while 条件表达式:
循环体语句1
循环体语句2
......
循环结束后要执行的代码
# 代码示例
# while 循环 : 打印10遍 "人生苦短, 我用Python~"
i = 0
while i < 10:
print("人生苦短, 我用Python~")
i += 1案例:计算1-100之间所有偶数的累加之和。
# while案例 : 计算1-100之间所有偶数的累加之和
total = 0 # 记录累加之和
i = 1 # 循环开始数字
while i <= 100:
if i % 2 == 0: # 偶数
total += i
i += 1
print(f"1-100之间的偶数的累加之和: {total}")continue和break关键字的作用
- continue:跳过本次循环,继续下一次循环
- break:结束当前循环(称为异常结束)
循环后的else语句
循环的最后可以使用else语句,定义循环正常结束时要执行的代码。如果在循环中遇到break关键字异常结束循环,else中的代码就不执行。
# while语法结构
while 条件表达式:
循环体语句1
循环体语句2
......
else:
条件为False,循环正常结束时执行for循环
while循环是通过条件表达式的运算结果来控制是否要进行下一次循环的。 而for循环,本质是一种轮询遍历机制,可以对一批内容进行逐个处理。
# for循环结构
for 元素 in 待处理数据集:
循环体代码(对元素进行处理)
else:
循环结束时, 执行的代码
# 代码案例:
# 定义要遍历的字符串
message = "Hello-Python"
# 遍历字符串,并处理
for i in message :
print(i)
else:
print("循环结束")- for 循环与while 循环的应用场景?
- while循环:用于在某个条件满足时一直循环,循环的次数通常是未知的,只知道循环开始/结束的条件。(关注的是循环的条件)
- for循环:用于对一个已知的数据集进行遍历或已知次数的循环。(关注的是遍历每一个元素)
案例:
- 案例1: 计算 1 - 100 之间的所有奇数之和。
# 方法一:
# 计算 1 - 100 之间的所有奇数之和。
total = 0
for i in range(1, 101):
if i % 2 == 1:
total += i
print("1 - 100 之间的所有奇数之和为: ", total)
# 方法二:
# 计算 1 - 100 之间的所有奇数之和。
total = 0
for i in range(1, 101, 2):
total += i
print("1 - 100 之间的所有奇数之和为: ", total)- 案例2:计算 100 - 500 之间所有3的倍数的数字之和。
# 计算 100 - 500 之间所有3的倍数的数字之和。
total = 0
for i in range(100, 501):
if i % 3 == 0:
total += i
print("100 - 500 之间所有3的倍数的数字之和为: ", total)那这里要求,通过for循环来实现,那么大家首先需要思考的就是 如何获取到 1 - 100 之间的数据集? 其实这里可以通过 range 语句来获取
range语句:
**作用:**内置函数
range()用于生成等差数列;(指一组按特定规律排列的数字)用法1:
range(end)-> 获取一个从0开始,到end结束的数字序列(不含end本身)range(5)获取的数据就是 0,1,2,3,4 这样一个数字序列
用法2:
range(start,end)-> 获取一个从start开始,到end结束的数字序列(不含end本身)range(2,8)获取的数据就是 2,3,4,5,6,7 这样一个数字序列
用法3:
range(start,end,step)-> 获取一个从start开始,到end结束的数字序列,step步长(不含end本身)range(0,10,2)获取的数据就是 0,2,4,6,8 这样一个数字序列range(1,10,2)获取的数据就是 1,3,5,7,9 这样一个数字序列
嵌套循环
所谓循环嵌套,指的就是在循环中又嵌套循环。
# for循环结构
for 元素 in 待处理数据集1:
循环体的代码1
循环体的代码2
...
for 元素 in 待处理数据集2:
循环体的代码1
循环体的代码2
...
...
# 案例:打印 99 乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j} * {i} = {i * j}", end="\t")
print()