python - 打破while循环
问题描述
所以这是我更大代码的简化版本(在我的主代码中有一些不必要的位更有意义),我似乎无法理解为什么它既没有打破播放也没有打破战斗循环:
fight = True
a = "enemy"
t = ""
ccd = False,False
playing = True
def lvl():
playing = True
fight = True
while fight:
if a == "enemy":
t = "enemy"
else:
if a == "enemy":
t = "enemy"
else:
t = "player"
while t == "enemy":
print ("enemy attacks player")
t = "player"
while t == "player":
if ccd == (False , False):
fight = False
playing = False
turn = "no one"
t = "enemy"
fight = True
while playing:
fight = True
lvl()
while not playing:
print ("no")
解决方案
您的程序实际上正在跳出“战斗”循环,但由于播放循环仍在运行,它被立即送回。
您没有跳出播放循环的原因是您的“播放”变量是本地的,而不是全局的。因此,当您更改函数中的变量时,它不会更改 main 中的变量(即使它们具有相同的名称),您可以使用它来控制 while 循环。一个可能的解决方案是在函数结束时返回“正在播放”。以下是一些修改后的代码,应该适合您的目的:
'''
fight = True
a = "enemy"
t = ""
ccd = False,False
playing = True
def lvl():
playing = True
fight = True
while fight:
if a == "enemy":
t = "enemy"
else:
t = "player"
while t == "enemy":
print ("enemy attacks player")
t = "player"
while t == "player":
if ccd == (False , False):
fight = False
playing = False
t = "enemy"
return playing
fight = True
while playing:
fight = True
playing = lvl()
while not playing:
print ("no")
'''
推荐阅读
- reactjs - 我对这个 HOC(高阶组件)代码是否正确?
- javascript - 从 React App 上的 Google Picker 中的选定工作表访问数据
- http - Angular 7,如何为多个 HTTP 调用添加单个加载器
- javascript - 使用 javascript 创建交互式 3-D 地球仪
- git - 在詹金斯工作中动态选择git repo
- android - android.view.InflateException:错误膨胀类按钮
- javascript - 创建直接显示子行的数据表
- mysql - 使用 JSON_EXTRACT 时遇到路径问题
- reactjs - 如何使用 Lodash 查找数组中的特定项,然后使用 setState() 对其进行更新?
- python - 使用 sqlalchemy 创建审计日志