python - 满足条件时如何使两个循环都结束?
问题描述
#Knights and Fighters
Knight_HP = int(input("Enter the Knight's HP: "))
Knight_Damage = int(input( "Enter the Knight's Damage Attack: "))
Knight_Special = int(input("Enter the Knight's Special Attack damage: "))
Fighter_HP = int(input("Enter the Fighter's HP: "))
Fighter_Damage = int(input( "Enter the Fighter's Damage Attack: "))
Fighter_Special = int(input("Enter the Fighter's Special Attack damage: "))
print (" ")
Round_N = 0
while Knight_HP and Fighter_HP > 0:
print (" ")
print ("Round: " + str(Round_N))
for i in range(2):
if i == 0:
print ("The Knight goes first")
Fighter_HP = Fighter_HP - Knight_Damage
print ("Fighter: " + str(Fighter_HP))
print ("Knight: " + str(Knight_HP))
print ("")
else:
print ("The Fighter goes first")
Knight_HP = Knight_HP - Fighter_Damage
print ("Knight: " + str(Knight_HP))
print ("Fighter: " + str(Fighter_HP))
print (" ")
Round_N = Round_N + 1
if Knight_HP < Fighter_Special:
print ("Fighter Has Used Special Attack.")
print ("Knight Has Been Defeated.")
print ("Round Over")
break
elif Fighter_HP < Knight_Special:
print ("Knight Has Used Special Attack")
print ("Fighter Has Been Defeated.")
print ("Round Over")
break
我希望两个循环在其中一个的 HP 为 0 时中断(即当它使用特殊攻击时),但由于某种原因,它会继续循环,而不是在我需要时中断循环。轮数也会跳过一些轮次(0、2、4、6 等),这也让我很烦。
解决方案
将它放在一个函数中并使用return
它将结束该函数的所有其他操作。
例如
def update_round():
while Knight_HP and Fighter_HP > 0:
print (" ")
print ("Round: " + str(Round_N))
for i in range(2):
# other ifs
if Knight_HP < Fighter_Special:
print ("Fighter Has Used Special Attack.")
print ("Knight Has Been Defeated.")
print ("Round Over")
return # use return instead of break
推荐阅读
- visual-studio - 将 Visual Studio 2019 的现有项目添加到 Visual SourceSafe
- docker - 将 Docker 卷迁移到 Podman
- vue.js - 在Vue中重新加载或刷新页面时如何显示正确的嵌套子选项卡
- python - 比较两个数据框并保留另一个数据框的特定日期时间范围
- c# - 确定是否已发送消息或关闭 Outlook
- java - Java扫描程序正确读取字符串中的\ n,但在扫描文件时不正确?
- c# - c# | 有没有办法在不获取用户名甚至只获取其中一部分的情况下获取某个用户所属的组?
- javascript - 如何从最后一个按钮获取 id 并使用 react-id-generator 在 React 中将其删除
- confluent-platform - docker上的confluent平台组件服务url是什么
- delphi - 如何在将某些警告设置为 False 时将警告视为 Delphi 10.2 中的错误