【问题标题】:Stop Function Call停止函数调用
【发布时间】:2017-09-22 19:23:37
【问题描述】:

我试图在执行“退出”用户输入后停止我的函数调用。但未能做到这一点。 下面是我的代码。

> def ufun():
>         while True:
>                 uipt = str(raw_input('Please enter your choice? [y|n]:'))
>                 if uresp == "y":
>                         ufun.uipt = "y"
>                         break
>                 elif uresp == "n":
>                         ufun.uipt = "n"
>                         break
>                 else:
>                         print("Please enter either [y|n]") def anofunc():
> 
> def anofunc():
>         ulist = str(raw_input('Enter your choice [ALL|AB|BC|EXIT] : ')).upper()
>         ufun()
>         if ulist == "ALL":
>            #execute something
>         elif ulist == "AB":
>            #execute something
>         elif ulist == "BC":
>            #execute something
>         elif ulist == "EXIT":
>            return
>         else:
>            print "Please enter a valid option"
>            anofunc() 
anofunc()

因此,当我在输入“EXIT”用户输入时尝试退出代码时,它会询问我“请输入您的选择?[y|n]:”,这是我在退出时不想要的。我希望我的代码立即退出。 如果我能做到这一点,请帮助我。

Enter your choice [ALL|AB|BC|EXIT] : exit
Please enter your choice? [y|n]:

【问题讨论】:

  • 您在第一次提示后立即调用 ufun().. 这可能就是发生这种情况的原因
  • @ryekayo Yaactaully 我希望该功能只执行一次,即使我提供多个用户输入,例如:AB|BC
  • 在这种情况下,我会在您的 EXIT 条件之后添加 exit()。
  • @ryekayo 正如你所建议的,我尝试了同样的方法,但出现以下错误:exit() TypeError: 'str' object is not callable
  • 尝试使用 return 而不是 exit()。抱歉,我认为这将是为了杀死程序而存在的东西..

标签: python-2.7


【解决方案1】:

您应该在调用 ufun() 函数之前检查 EXIT 的条件。现在,由于检查结束,这会调用显示文本“请输入您的选择?”的 ufun() 函数。 [y|n]:'。

另外,在 ufun() 函数中的最后一个条件中,我认为您正在尝试调用 anofunc() 函数。为此,您只需要编写不带 def 的 anofunc() 即可。 def 用于定义函数定义。

您还不断地一次又一次地调用每个函数,我认为这不是您打算做的。例如,如果您键入了 exit 以外的其他内容,然后键入 EXIT,则在 return 调用之后仍会返回较早的函数。如果我没记错的话,你就是在不断地询问用户他想做什么,直到他们输入 exit。

一种方法是将while循环引入anofunc()函数:

def ufun():
    uipt = raw_input('Please enter your choice? [y|n]:')
    if uipt == "y":
        ufun.uipt = "y"
    elif uipt == "n":
        ufun.uipt = "n"
    else:
        print("Please enter either [y|n]")

def anofunc():
    while True:
        ulist = raw_input('Enter your choice [ALL|AB|BC|EXIT] : ').upper()
        if ulist == "EXIT":
            break
        ufun()
        if ulist == "ALL":
            #execute something
        elif ulist == "AB":
            #execute something
        elif ulist == "BC":
            #execute something
        else:
            print("Please enter a valid option")
anofunc()

【讨论】:

    猜你喜欢
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多