Python控制结构篇(三)

控制结构

控制结构(Control Structures)是编程语言中的一种概念,用于控制代码执行的顺序和流程。它们决定了程序的执行路径,使得程序可以根据不同的条件执行不同的操作,或者重复执行某些代码块。
在编程中,代码的执行通常是线性的,从上到下依次执行。然而,通过控制结构,我们可以引入条件判断、循环等,使得程序可以在特定条件下改变其执行路径或者重复执行某段代码。

控制结构主要包括以下几类:

  • 顺序结构:默认的执行方式,从上到下逐行执行代码。没有特别的跳转或条件判断。

  • 条件结构:根据条件的真或假,选择性地执行某一代码块。这包括:

    • if 语句:如果条件为真,则执行某段代码。
    • elif 和 else 语句:处理多种可能的条件,或在所有条件为假时执行默认代码。
      循环结构:用于重复执行一段代码,直到满足某种条件为止。主要包括:
  • for 循环:遍历一个序列或可迭代对象,并对每个元素执行代码块。

  • while 循环:只要条件为真,就反复执行代码块。

  • 跳转结构:在特定情况下改变代码执行的顺序。这包括:

    • break:终止循环或跳出某个代码块。
    • continue:跳过当前循环中的剩余代码,进入下一次循环。
    • pass:占位符,不执行任何操作,但保证语法正确

条件语句

条件语句(Conditional Statements)是编程语言中的一种结构,用于根据一个或多个条件的真或假来决定是否执行特定的代码块。条件语句使程序能够在不同的条件下采取不同的行动,从而实现决策和分支逻辑

条件语句的工作原理

  • 条件语句根据表达式或条件的结果(通常是布尔值 True 或 False)来决定程序的执行路径。如果条件为真,则执行与该条件相关的代码块;如果为假,则可以选择执行另一个代码块或跳过执行
if, elif, else

if 语句:用于在条件为真时执行某段代码

if 表达式:

示例

x = 10
if x > 5:
    print("x大于5")

条件为真,则会打印x大于5

elif语句: 是用于检查另一个条件的语句,当前面的 if 或 elif 条件为假时执行。它可以用于处理多个条件

if 表达式:
elif 表达式:

示例

x = 10
if x > 15:
    print("x 大于 15")
elif x > 5:
    print("x 大于 5 小于 15")

这里,x > 15 的条件为假,因此执行 elif 的代码,输出x 大于 5 小于 15

else 语句:是在所有 if 和 elif 条件都为假时执行的代码块。它是可选的,但通常用来处理所有未被其他条件捕获的情况

if 表达式:
elif 表达式:
else:

示例

x = 3
if x > 5:
    print("x 大于 5")
elif x > 10:
    print("x 大于 10")
else:
    print("x 小于 5")

在这个例子中,前面的条件都为假,因此会执行 else 语句,输出 x 小于 5

案例实操

成绩管理系统

# 获取学生信息
student_name = input("请输入学生姓名: ")
score = float(input("请输入学生分数 (0-100): "))

# 初始化等级和建议变量
grade = ""
advice = ""

# 使用if-elif-else结构进行成绩评级
if score < 0 or score > 100:  # 首先检查分数是否有效
    print("错误:分数必须在0到100之间。")
elif score >= 90:  # 如果分数大于等于90
    grade = "A"
    advice = "优秀!继续保持。"
elif score >= 80:  # 如果分数在80到89之间
    grade = "B"
    advice = "很好,但还有提升空间。"
elif score >= 70:  # 如果分数在70到79之间
    grade = "C"
    advice = "及格,需要更多努力。"
elif score >= 60:  # 如果分数在60到69之间
    grade = "D"
    advice = "勉强及格,请加倍努力。"
else:  # 如果分数低于60
    grade = "F"
    advice = "不及格,需要补考。请寻求额外帮助。"

# 输出结果
if grade:  # 如果grade不为空字符串(即分数有效)
    print(f"\n学生: {student_name}")
    print(f"分数: {score}")
    print(f"等级: {grade}")
    print(f"建议: {advice}")

    # 根据不同等级给出额外的建议
    if grade in ["A", "B"]:
        print("你是班级的榜样!")
    elif grade == "C":
        print("建议你多做课后练习。")
    else:
        print("建议你寻求老师的帮助,并制定复习计划。")
  • 嵌套的if-elif-else结构:首先检查分数是否有效,然后根据不同的分数范围给出等级
  • 输入验证:确保输入的分数在有效范围内
  • 变量的使用:使用变量存储等级和建议,使代码更加清晰和易于维护
  • 字符串格式化:使用f-string来格式化输出信息
  • 条件判断的组合:使用and操作符来组合多个条件(在合法分数的判断中)
  • 额外的条件判断:在主要的评分逻辑之后,还有一个额外的if-elif-else结构来根据等级给出更具体的建议
  • 防御性编程:使用if grade来确保只有在grade被赋值(即分数有效)的情况下才输出结果

循环语句

循环语句(Loop Statements)是编程语言中的一种控制结构,用于反复执行一段代码,直到满足特定条件为止。循环语句使得程序能够处理重复性的任务,从而减少代码的冗余,提高程序的效率

循环语句的工作原理

  • 循环语句会重复执行其包含的代码块,直到循环条件不再满足或被明确终止。通常有两种主要类型的循环:

    • 确定次数的循环:循环的次数是预先确定的,通常用于遍历列表、数组等集合
    • 不确定次数的循环:循环的次数取决于某个条件,可能会因条件的变化而终止
for循环

for 循环用于遍历一个序列或其他可迭代对象,依次访问其中的每个元素,并对其执行相同的操作

for item in iterable:

示例

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    print(num)

这个代码会依次打印列表中的每一个数字

for 循环还可以配合 range() 函数使用,用于生成一个整数序列,通常用于需要执行固定次数的循环。

for i in range(5):
    print(i)

这个代码会输出 0 到 4,range(5) 生成了从 0 开始、到 5(不包括 5)的整数序列

while循环

while 循环在指定条件为真时,反复执行代码块。这个条件会在每次循环开始时进行检查,如果条件为假,循环终止

while 表达式:

示例

count = 0
while count < 5:
    print("count是", count)
    count += 1

这个代码会输出数字 0 到 4,每次循环结束时 count 增加 1,直到 count 不再小于 5

循环控制:break, continue, pass

Python 还提供了几种控制循环行为的语句:

  • break 语句:用于立即终止循环,跳出循环体

示例

for num in range(10):
    if num == 5:
        break
    print(num)

这个代码会输出 0 到 4,当 num 等于 5 时,循环终止

  • continue 语句:用于跳过当前循环的剩余部分,直接开始下一次循环
for num in range(10):
    if num % 2 == 0:
        continue
    print(num)

这个代码会输出所有的奇数,因为当 num 为偶数时,continue 语句会跳过 print 语句,直接进入下一次循环

  • pass 语句:pass 是一个空操作,占位符,不执行任何操作,通常用于在语法上需要代码块但暂时不需要执行代码的地方
for num in range(10):
    if num % 2 == 0:
        pass  
    else:
        print(num)

在这个例子中,pass 什么都不做,只是占位,偶数的情况下不执行任何操作,奇数则输出

案例实操

猜数字游戏

import random

# 生成一个1到100之间的随机数
target_number = random.randint(1, 100)
guess_count = 0
max_guesses = 7

print("欢迎来到猜数字游戏!")
print(f"我已经想好了一个1到100之间的数字,你有{max_guesses}次机会猜它。")

# 使用while循环来控制游戏进行
while guess_count < max_guesses:
    # 使用try-except来处理可能的输入错误
    try:
        guess = int(input(f"\n请输入你的第{guess_count + 1}次猜测: "))
    except ValueError:
        print("请输入一个有效的整数!")
        continue  # 跳过本次循环,重新开始

    guess_count += 1

    # 使用if-elif-else结构来判断猜测结果
    if guess < target_number:
        print("太小了!再大一点。")
    elif guess > target_number:
        print("太大了!再小一点。")
    else:
        print(f"恭喜你,猜对了!你用了{guess_count}次就猜到了答案。")
        break  # 猜对了,跳出循环

    # 使用if语句来提示剩余猜测次数
    if guess_count < max_guesses:
        print(f"你还有{max_guesses - guess_count}次机会。")

# 使用for循环来打印游戏结果
if guess != target_number:
    print(f"\n很遗憾,你没有猜出正确答案。正确答案是{target_number}。")
    print("以下是你的所有猜测:")
    for i in range(1, guess_count + 1):
        print(f"第{i}次猜测:{input(f'请输入你的第{i}次猜测:')}")
  • while 循环:用于控制整个游戏的进行,直到猜对或用完所有猜测机会。
  • for 循环:在游戏结束后,用于打印出所有的猜测记录。
  • continue 语句:在输入无效时,跳过当前循环的剩余部分,直接开始下一次循环。
  • break 语句:在猜对数字时,提前结束while循环。
  • 条件语句的使用:使用if-elif-else来判断猜测结果,使用if来提示剩余猜测次数。
  • 异常处理:使用try-except来处理可能的输入错误,提高程序的健壮性。
  • 随机数生成:使用random.randint()生成目标数字。
  • f-string:用于格式化输出字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huhy~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值