Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 引发异常后未分配变量_Python_Python 2.7 - Fatal编程技术网

Python 引发异常后未分配变量

Python 引发异常后未分配变量,python,python-2.7,Python,Python 2.7,我正在编写一个Python程序,以便在我的计算机上为不同的编程语言创建项目。这从选择这个特定项目的语言开始,我试图以一种处理错误相当好的方式来做 到目前为止,我有这个代码 def prompt_user(): print "Enter the number of the project you would like to create.\n" aOptions = ["1. Java", "2. C/C++", "3. Python", "4. Web"] for sO

我正在编写一个Python程序,以便在我的计算机上为不同的编程语言创建项目。这从选择这个特定项目的语言开始,我试图以一种处理错误相当好的方式来做

到目前为止,我有这个代码

def prompt_user():
    print "Enter the number of the project you would like to create.\n"

    aOptions = ["1. Java", "2. C/C++", "3. Python", "4. Web"]
    for sOption in aOptions:
        print sOption

    try:    
        iOptionChosen = int(raw_input("> "))
        if not(1 <= iOptionChosen <= 4):
            raise ValueError
        else:
            return iOptionChosen
    except ValueError:
        print "\nInvalid value entered. Try again."
        prompt_user()

print prompt_user()
def prompt_user():
打印“输入要创建的项目的编号。\n”
aooptions=[“1.Java”、“2.C/C++”、“3.Python”、“4.Web”]
对于A选项中的sOption:
印刷版
尝试:
IOPTIONSELECTED=int(原始输入(“>”)

如果不是(1在
中,除了
情况:

except ValueError:
    print "\nInvalid value entered. Try again."
    prompt_user()
您只能递归调用
prompt\u user
。相反,您需要返回它给出的值:


情况下,除
外:

except ValueError:
    print "\nInvalid value entered. Try again."
    prompt_user()
您只能递归调用
prompt\u user
。相反,您需要返回它给出的值:


您可以考虑将<>代码> 添加到逻辑中,这样您就可以在<代码>中保留循环,直到输入有效。

user_deciding = True
while user_deciding:
    try:
        choice = int(raw_input("> "))
        if choice in list_of_choices:
            user_deciding = False
        else:
            raise ValueError
    except ValueError:
        print "Please make a valid choice."

handle_choice_made(choice)

可选地,您可以使用<代码> > 5 >选择> 0代码/>语法,但是使用一个简单地借用现有列表或字典的数据结构,而不是检查表示有效数据项的魔法范围可能是值得的。

您可以考虑将<>代码>而添加到逻辑中,这样您就可以简单地REM了。ain在
的同时
循环,直到输入有效

user_deciding = True
while user_deciding:
    try:
        choice = int(raw_input("> "))
        if choice in list_of_choices:
            user_deciding = False
        else:
            raise ValueError
    except ValueError:
        print "Please make a valid choice."

handle_choice_made(choice)

或者,您可以使用
if 5>choice>0
语法,但可能值得使用一种数据结构,它只是借用现有列表或字典,而不是检查表示有效数据输入的神奇范围。

您可能会发现有用。您可能会发现有用。我会尽快接受您的答案!不过,我还是个简单的问题,因为我对编程还不熟悉。为什么返回提示用户()和只提示用户()之间有区别重要信息?如果您不使用函数返回的值执行某些操作,它将被丢弃。在这种情况下,您希望返回该值,因此可以使用
return
。在其他情况下,您可以将其存储在变量中。我将尽快接受您的答案!不过,这是一个快速的问题,因为我是编程新手。我们之间的区别是什么en返回prompt_user()并仅提示_user()重要信息?如果不使用函数返回的值执行某些操作,它将被丢弃。在这种情况下,您希望返回值,因此使用
return
。在其他情况下,您可以将其存储在变量中。这是一个好主意。我需要停止使用这些幻数类型的东西。这是一个好主意。我需要停止使用这些幻数n数字型的东西。