Skip to content

条件判断

if基本格式

只有满足指定条件,才会执行对应的代码逻辑。判断语句的结果,必须是布尔类型True或False。如果为 True 则会执行if内的代码,False则不会执行。

python
# 语法:
if 要判断的条件:
    条件成立时, 要执行的操作
    
# 案例:
# 定义变量
score = 695

# 条件判断
if score > 680:
    print("欢迎你, 来清华读书")

注意:

  • Python中是通过缩进来描述代码的归属的,归属于if代码块的语句,需要在前方缩进空格。(按Tab键,PyCharm会自动转为空格)
  • 同一个if语句中的代码块,前面缩进的空格数量一致。

if ... else

如果条件成立,则执行操作1;否则,就执行操作2

python
# 语法:
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:根据用户输入的年份,判断这一年是闰年还是平年。

  1. 非整百年份,且能被4整除的年份是闰年
  2. 整百年份(如1900年、2000年)必须能被400整除才是闰年

if ... elif...else

涉及到多个分支条件判断时使用。在JS中我们使用if...elseif...else的结构。

Python
# 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。
python
# 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/666888root/547527zhangsan/123456,则输出登录成功
    • 否则就提示用户名或密码错误
python
# 案例: 根据输入的用户名和密码进行系统登录 -- 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("登录失败, 用户名或密码错误")
  • 案例根据输入的星期几,判断今天的工作日程安排 ?
python
# 工作日程安排
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中,给我们提供了模式匹配的语法,就可以很方便的来解决这个问题了。

模式匹配

结构模式匹配就是用一个清晰的 模板 去精准的匹配数据的结构和内容,匹配成功则执行相应的操作。

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 _ 是用来匹配其他所有情况的。
  • 代码演示如下:

python
# 工作日程安排
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("输入错误")
  • **案例:**简易计算器

需求:实现一个计算器,可以实现+ - * / 运算,用户输入需要运算的两个数以及运算符之后,就可以进行计算。

python
# 案例: 基于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,则结束循环。

python
# while语法结构

while 条件表达式: 
    循环体语句1
    循环体语句2
    ......
循环结束后要执行的代码

# 代码示例
# while 循环 : 打印10遍 "人生苦短, 我用Python~"
i = 0
while i < 10:
    print("人生苦短, 我用Python~")
    i += 1

案例计算1-100之间所有偶数的累加之和。

python
# 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中的代码就不执行。

python
# while语法结构

while 条件表达式: 
    循环体语句1
    循环体语句2
    ......
else:
    条件为False,循环正常结束时执行

for循环

while循环是通过条件表达式的运算结果来控制是否要进行下一次循环的。 而for循环,本质是一种轮询遍历机制,可以对一批内容进行逐个处理。

python
# for循环结构

for 元素 in 待处理数据集:
    循环体代码(对元素进行处理)
else:                    
    循环结束时, 执行的代码 
    
# 代码案例:
# 定义要遍历的字符串
message = "Hello-Python"

# 遍历字符串,并处理
for i in message :
    print(i)
else:
    print("循环结束")
  • for 循环与while 循环的应用场景?
    • while循环:用于在某个条件满足时一直循环,循环的次数通常是未知的,只知道循环开始/结束的条件。(关注的是循环的条件)
    • for循环:用于对一个已知的数据集进行遍历或已知次数的循环。(关注的是遍历每一个元素)

案例

  • 案例1: 计算 1 - 100 之间的所有奇数之和。
python
# 方法一:
# 计算 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的倍数的数字之和。
python
# 计算 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 这样一个数字序列

嵌套循环

所谓循环嵌套,指的就是在循环中又嵌套循环。

python
# 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()