如果在任何时候为任何变量输入 0,则退出函数

exit function if 0 is entered at any time for any variable

def function():
   restart = 'yes'
   while restart == 'yes':
       **long program here**
       restart = input("would you like to restart?: ")

在 /long program/ 部分,我有很多变量,如果用户想退出函数,在每个变量上加上 'if' 语句会很疯狂,所以有没有一种方法可以在提示时输入变量,如果用户输入 0 程序退出函数?

谢谢

所以你想要像我下面的代码片段一样的东西,但用于退出函数。遗憾的是,这是不可能的。您需要重新考虑您的算法,以便将其拆分为多个子例程,在返回 while 块时检查这些子例程,然后跳出循环以退出该函数或使其继续运行。


第一个回答:

好吧,如果我没有正确理解你的问题,你希望能够在你要求用户输入时退出程序,当用户输入 0 时。如果我没有正确理解,你可以做一些事情像那样:

def exit_if_zero(val):
    if val.strip() == "0":
        sys.exit(0)
    return val

其中 returns 输入的值,但如果用户输入 0,它将退出。所以你可以按以下方式使用它:

value = exit_if_zero(input("enter a value"))

HTH

您可以使用 iter 的 2-arg 形式 - 在循环停止的地方为其提供标记值,例如:

def function():
    for value in iter(lambda: input('would you like to restart?:'), '0'):
        pass # do your stuff here
    return None # or some meaningful result here

nb:如果使用 Python 2.x

,则使用 raw_input

只需使用辅助函数来检查变量是否具有 "exit" 值,如果是,则退出整个程序(或抛出异常并捕获它并退出)。

例如(伪代码):

def check_exit(var, exit):
  if var == 0: 
    exit()
    return
  return var

该函数接受一个变量 "var" 和一个在退出时调用的函数,因此您可以传递自定义退出函数来执行您需要的操作

一个类似的替代方案(变体)是一次检查所有变量(一旦它们被用户插入)并且如果有人有 "exit value" 则退出。然后这个检查代码或函数可以在你的其他代码的末尾并且只为所有变量调用一次。正如评论中提到的那样,这是一个设计问题,而不是一个特定的 python 程序问题本身