• 预备
  • 基础语法
  • 容器类型
  • 函数
  • 面向对象
  • 输入输出
  • 进程控制
  • 线程控制
  • 正则表达式
  • 网络编程
  • 图形界面
  • 常见问题
  • API 帮助手册

  • 设置

3279

16 分钟

#循环控制

在编写程序时,我们经常需要重复执行同一段代码。例如在游戏中释放了一个持续的治疗技能,效果是一段时间内不断的回血,总计回复十次。

这样的写法显然不合适:

hp:int = 10 # 治疗 hp += 1 hp += 1 hp += 1 hp += 1 hp += 1 hp += 1 hp += 1 hp += 1 hp += 1 hp += 1

此时就需要使用循环来优化代码,Python 有两种循环语法,分别由 whilefor 控制。

#while 循环

while 循环的结构如下:

# 只要 `循环条件` 为 `True`,就循环执行 `循环体`,直到 `循环条件` 变为 `False` 时结束循环,继续执行后面的代码。 while 循环条件: 循环体
Gstart开始condition循环判断start->conditionloop_body循环体condition->loop_bodyend结束condition->endloop_body->condition

参考:Python 官方文档

例如:

hp:int = 10 times:int = 10 # 治疗 while times > 0: print("恢复 1 点 HP,当前 HP 为", hp) hp += 1 times -= 1 print("最终 HP 为", hp)
Loading...

#for 循环

for 循环的结构如下:

# 从 `可迭代对象` 中逐个取出值,赋值给 `循环变量` 并执行 `循环体`,直到 `可迭代对象` 的值被取完时结束循环,继续执行后面的代码。 for 循环变量 in 可迭代对象: 循环体

参考:Python 官方文档

例如:

hp:int = 10 # 治疗 for _ in range(10): print("恢复 1 点 HP,当前 HP 为", hp) hp += 1 print("最终 HP 为", hp)
Loading...
  • 这里的 range 是一个内建函数,他会返回一个可迭代对象,依次得到 0 至 n-1,此处为 0 至 9。
  • 由于我们只需要循环 10 次,而不需要迭代的值,因此使用特殊变量 _ 来接收。

#range 函数

range 函数十分常用,它由三种用法:

range(stop) # 迭代对象依次得到 0 至 stop,不含 stop 本身,每次递增 1 range(start, stop) # 迭代对象依次得到 start 至 stop,不含 stop 本身,每次递增 1 range(start, stop, step) # 迭代对象依次得到 start 至 stop,不含 stop 本身,每次递增 step

示例:

for num in range(10): print(num, end=", ") # 通过 end 参数替换掉结尾默认的换行 print("") # 打印空字符串,结尾默认换行 for num in range(5, 10): print(num, end=", ") print("") for num in range(5, 10, 3): print(num, end=", ") print("")
Loading...

#break 和 continue

在循环中有两个十分常用的操作,breakcontinue

  • break 的作用是提前结束整个循环
  • continue 的作用是结束本轮循环,进入下一轮循环。

例如,我们的生命值上限是 15 点,如果生命值已经达到了上限就不应该继续治疗了。

可以在生命值达到上限时通过 break 结束治疗:

MAX_HP:int = 15 hp:int = 10 # 治疗 for _ in range(10): print("恢复 1 点 HP,当前 HP 为", hp) if hp >= MAX_HP: # 如果 hp 已经满了就结束治疗 break hp += 1 print("最终 HP 为", hp)
Loading...

这种方式下,如果在持续时间内玩家会受到伤害,由于治疗技能已经提前结束了,因此无法进行恢复。

另一种方式是在生命值达到上限时通过 continue 跳过本次回复:

MAX_HP:int = 15 hp:int = 10 # 治疗 for _ in range(10): print("恢复 1 点 HP,当前 HP 为", hp) if hp >= MAX_HP: # 如果 hp 已经满了就跳过本次 continue hp += 1 print("最终 HP 为", hp)
Loading...

这种方式下,如果在持续时间内玩家会受到伤害,治疗技能将在下一次回复时恢复生命值。

#循环中的 else

Python 可以在循环后接 else,它的代码块将在循环结束时执行,但通过 break 结束循环时不执行 else 的代码块。
如果循环条件从一开始就是 False(或者可迭代对象是空的),也会执行 else 的代码块。

while 条件: 循环体代码块 else: 代码块
for 循环变量 in 可迭代对象: 循环体代码块 else: 代码块

#练习

请实现判断一个正整数是否是质数,通过 input 获取输入。

  • 特别规定 1 不是质数。
  • 只能被 1 和自己整除的正整数是质数,否则不是。
number:int = int(input("请输入一个整数:")) is_prime:bool = False # 请在此处实现代码,如果 number 是质数就将 is_prime 改为 True if is_prime: print(number, "是质数") else: print(number, "不是质数")
Loading...

创建于 2025/4/11 03:41:55

更新于 2025/5/4 19:15:41