我将如何创建一个函数,其中一个变量(退出)确定“while”循环是否运行,并能够在不同的函数中更改它,以便第一个函数中的 while 循环停止
while exit == 0:
option = (raw_input("What would you like to do? "))
if option == exit:
exit()
def exit():
exit = 1
这只是我正在尝试做的一个例子。
当我尝试运行它时,它不会离开 while 循环,这样做也不会结束程序。我怎样才能使 while 循环识别出 exit 现在是 1 并离开循环? 抱歉,如果问题不是很好,因为这是我第一次使用 stackoverflow 提问。
补充:我想知道如何跨函数更改变量,因为我将在程序的某些部分执行此操作。此外,我将在退出前保存数据,这就是为什么我在不同的函数中使用“退出”
请您参考如下方法:
这里的问题是范围 - exit 是函数 exit() 的局部变量,因此不会影响循环中的变量 exit范围。
更好的解决方案是:
exit = False
while not exit:
option = raw_input("What would you like to do?")
if option == "exit":
exit = True
或者简单地说:
while True:
option = raw_input("What would you like to do?")
if option == "exit":
break
请注意在 1 和 0 上使用 True 和 False - 这更符合 Python 风格,因为你的意思是这里是真值,而不是整数。我还更改为与字符串 "exit" 进行比较,因为我认为这就是您想要的,而不是将用户输入与 exit 的值进行比较。
如果您的问题是您想要拥有相同的作用域,您可能希望让您的代码成为类的一部分。
class Doer: #Naturally, give it a real name based on it's purpose.
def __init__(self):
self.exit = False
while not self.exit:
option = raw_input("What would you like to do?")
if option == "exit":
self.exit()
def exit(self):
self.exit = True
这里 exit 是一个实例变量(因此从 self 访问)因此两次我们都引用同一个变量。
如果您的代码不是对更复杂问题的简化,那么这在很大程度上是矫枉过正,因为第一个解决方案会更合适。
