Python 整数,输入,打印

Python 整数,输入,打印,python,python-3.x,Python,Python 3.x,我遇到的主要问题是打印,它不工作,因为它会给我错误: 命名错误;未定义名称“ask2” 我是Python的绝对初学者,因此我根本不知道如何使其全球化,或者在这些方面做些什么 ask = input("-Would you like to 1 input an existing number plate\n--or 2 view a random number\n1 or 2: ") if int(ask) == 1: print("============================

我遇到的主要问题是打印,它不工作,因为它会给我错误:

命名错误;未定义名称“ask2”

我是Python的绝对初学者,因此我根本不知道如何使其全球化,或者在这些方面做些什么

ask = input("-Would you like to 1 input an existing number plate\n--or 2 view a random number\n1 or 2: ")
if int(ask) == 1:
    print("========================================================================")
    ask2 = ""
    while ask2 != 'exit':
        ask2 = input("Please enter it in such form (XX00XXX): ")).lower()
        # I had no idea that re existed, so I had to look it up.
        # As your if-statement with re gave an error, I used this similar method for checking the format.
        # I cannot tell you why yours didn't work, sorry.
        valid = re.compile("[a-z][a-z]\d\d[a-z][a-z][a-z]\Z")
        #b will start and end the program, meaning no more than 3-4 letters will be used.
        # The code which tells the user to enter the right format (keeps looping)
        # User can exit the loop by typing 'exit'
        while (not valid.match(ask2)) and (ask2 != 'exit'):
            print("========================================================================")
            print("You can exit the validation by typing 'exit'.")
            time.sleep(0.5)

            print("========================================================================")
            ask2 = input("Or stick to the rules, and enter it in such form (XX00XXX): ").lower()
            if valid.match(ask2):
                print("========================================================================\nVerification Success!")
                ask2 = 'exit'  # People generally try to avoid 'break' when possible, so I did it this way (same effect)
            # This 'elif' is optional, it just provides a bit better feedback to the user so he knows he manually stopped
            elif ask2 == 'exit':

        #There are other parts of the code, but it's not necessary

else:
    plate = ""
    # This randomly adds two capital letters (your own code)
    for i in range(2):
        plate += chr(random.randint(65, 90))
    print()
    print(plate)

print("The program, will determine whether or not the car "+str(plate),ask2+" is travelling more than the speed limit")

您的代码当前的结构如下:

if some_condition:
    ask2 = ''
else:
    ...
print(ask2)
问题是,当
某些条件
False
else
块执行时,当您尝试打印
ask2
时,在
if
/
else
块执行后,您将得到
名称错误,因为
if
块从未运行且
ask2
未定义

您需要执行以下操作:

ask2 = ''
if some_condition:
    ...
else:
    ...
print(ask2)

同样,不相关,但是使用
break

绝对没有错,错误确实说明它相当好。ask2似乎没有定义

你以前在什么地方定义过int吗?如果您以前没有在某个地方声明它,您将无法使用它

if int(ask) == 1:
    print("========================================================================")
    ask2 = ""
    while ask2 != 'exit':

好像你在呼唤“ask2存在!”退出''',但您没有为其分配任何值。它只是说ask2=”“。尝试在之前给它赋值,可以通过定义它,也可以通过自动赋值

查看您如何在最后的print语句中引用
ask2
?它看起来像是在
if
语句中定义的,因此无法在该块之外访问它。考虑在
if
之前定义
ask2
。不幸的是,我不能,因为ask2链接到ask。我不理解这个问题。假设
ask2
未在第一个
if
块外定义,并且假设确实要在if/else块外打印其值,则必须在
if
之前定义
ask2
。试试看会发生什么。但是请注意,如果执行了
else
语句,
ask2
将不会被分配到任何内容。为了确保,如果
if
的外部
是否应该缩进一点?这不能是您的实际代码,行
ask2=input(“请以这种形式输入(XX00XXX):”)。下()
抛出一个语法错误,因为您有太多的
而此
elif ask2=='exit':
将出错,因为块中没有代码。如果您请求帮助的代码没有给出您所询问的错误,那么就很难提供帮助。你能把它编辑成你的问题代码吗?(你可以省略一些代码,但发布的代码应该会给出与你相同的错误)(如果单个位不起作用,你就很难让所有代码都起作用);然而,这是我的问题。我不知道如何在外部或全球范围内创建它。我是Python的新手,绝对初学者。如果你想调用它,你需要先定义它。您可能会给它起任何名字,它也会起作用,不过如果您没有给它指定名字“exit”,退出总是不平等的。这将有助于了解您试图归档的内容以及为什么首先需要第二个变量。我不太明白。我以前也没有申报过,什么?打开python解释器并键入
int
。它是内置式的。你完全可以不用自己定义就使用它。我设法修复了它,但我没有打印ask2,而是打印了ask。哈哈哈,我是多么的愚蠢和天真。现在的问题是板块,当我想打印出ask时,板块没有定义,有什么想法吗?遗憾的是,我的ask2直接链接到我的ask。ask 2是ask的选项。要求休息,我不知道。一位朋友提出了另一种选择,我是编程新手。
ask2
ask
没有直接链接。在
块内部,如果
块将其初始化为
ask2='
哦,那么我该怎么做呢?请再看一遍代码的开头,我已经把开头部分放进去了。介意给我一些建议吗?谢谢我最初的回答已经有了答案。如果
块当前位于
块的内部,则需要将
ask2=''
设置在
块的外部。我设法修复了它,但没有打印ask2,而是打印了ask。哈哈哈,我是多么的愚蠢和天真。现在的问题是印版,当我想打印出来问,印版没有定义,有什么想法吗?