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

时间:2015-03-07 15:49:27

标签: python variables exit

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

在/ long程序/部分中,我有很多变数,如果' if'如果用户想要退出该函数,则每个语句都有一个方法,那么当提示输入变量时,如果用户输入0,程序将退出该函数吗?

感谢

3 个答案:

答案 0 :(得分:1)

你可以使用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

答案 1 :(得分:0)

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

例如(伪代码):

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

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

类似的替代方案(变体)是一次性检查所有变量(一旦用户插入它们),并且如果任何人具有"退出值"则退出。然后,此检查代码或函数可能位于其他代码的末尾,并且仅对所有变量调用一次。正如评论中所见,这是一个设计问题而不是特定的python程序问题本身

答案 2 :(得分:-1)

所以你想要下面的代码片段,但要退出一个函数。可悲的是,这是不可能的。你需要的是重新考虑你的算法,这样你就可以将它分成多个子程序,当它们返回到while块时会被检查,并且要么退出循环以退出函数或保持它流动。


第一个回答:

好吧,如果我正确地理解了你的问题,那么当你要求用户输入时,你想让它可以退出程序,当用户输入0时。如果我理解正确,你可以做类似的事情:

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

返回输入的值,但如果用户提供0,则会退出。所以你可以用以下方式使用它:

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

HTH