def Commands():
command = raw_input("Type 'Mod', 'Run', 'Exit', or 'Help':")
elif command == "Run" :
restart = True
break
if groups == 4 :
restart = True
while restart :
restart = False
Commands()
如何让此功能正常工作? “restart = True”“break”行不会再次启动前一个“while”循环。我在多个“if”语句中使用命令,并希望避免为每个语句重复80行代码。我删除了无法正常运行的代码。
答案 0 :(得分:3)
而不是在循环外尝试use a global variable或break(您的当前用法应该给出语法错误) - 您应该return一个布尔值并评估返回值的功能,如:
def Commands():
command = raw_input("Type 'Mod', 'Run', 'Exit', or 'Help':")
if command.lower() == "run" :
return True
# changed this to use lower (so it sees run or Run or RUn)
# and now it just returns a True value to say - keep going
return False
# assuming that everything else means break out of loop just return False if not "Run"
while True:
if not Commands():
break
print "We're out"
您也可以将while循环设置为while Commands():
并移除break
,如this answer to a related question
答案 1 :(得分:0)
当函数返回时变量restart不为true,因为它超出了范围。一个简单的解决方案可能只是让Commands()返回值true或false,并在分配该值的while循环中重新启动。
restart = Command() #Where command returns true or false
答案 2 :(得分:0)
使用返回值最简单。如果您想进一步消除样板,可以使用例外:
def Commands():
command = raw_input("Type 'Mod', 'Run', 'Exit', or 'Help':")
if command != "Run" :
raise StopIteration
if groups == 4 :
try:
while True:
Commands()
except StopIteration:
print('Done')