约 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 有两种循环语法,分别由 while
和 for
控制。
while
循环的结构如下:
# 只要 `循环条件` 为 `True`,就循环执行 `循环体`,直到 `循环条件` 变为 `False` 时结束循环,继续执行后面的代码。
while 循环条件:
循环体
参考: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 循环变量 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。 _
来接收。 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
。
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...
这种方式下,如果在持续时间内玩家会受到伤害,治疗技能将在下一次回复时恢复生命值。
Python 可以在循环后接 else
,它的代码块将在循环结束时执行,但通过 break
结束循环时不执行 else
的代码块。
如果循环条件从一开始就是 False
(或者可迭代对象是空的),也会执行 else
的代码块。
while 条件:
循环体代码块
else:
代码块
for 循环变量 in 可迭代对象:
循环体代码块
else:
代码块
请实现判断一个正整数是否是质数,通过 input
获取输入。
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