如何解决:NameError:未定义名称“密码”

时间:2019-08-13 15:00:36

标签: python python-3.x

版本:Python 3.7.4

嗨,这是我的第一个代码。如果我正确输入所有内容,它将很好地工作。但是,如果在某些点输入了错误的值,则会收到错误“ NameError:未定义名称'password'”。伴随着一个可能的解决方案,如果您可以查看我的代码并向我提供一些有关如何使它变得更好的反馈,那将是很棒的。请指导我尤达大师! :)

我尝试过的解决方案: 1.加括号,去掉括号,去掉结肠,加冒号。 2.分配变量名称。 3.阅读我正在学习的书,但根据这本书,我的代码可以。 4.阅读类似的帖子,但是它们的代码要高级得多,所以我既不了解代码,也不了解解决方案。 5.各种缩进。

此错误发生在:  -如果输入了错误的用户名,请输入第18行。  -如果输入的密码错误,请输入第30行(NameError:未定义名称“ age”)  -第43行NameError:名称“ ans”不是

我的代码:

#Displays what I have learnt so far : Variable assignment, comparision operators, arithmetic operators, value operators, logical operators,

print('Welcome')
print('Enter Username')
username = input()
if username == 'Evan' :
    print('Enter Password')
else:
    print('Wrong Username. Program terminated.')

if username == 'Evan' :
    password = input()
    if password == 'Great' :
        print('Additional identification confirmation required.')
    else:
        print('Wrong password. Program terminated.')

if password == 'Great':
    print('What is your age?')
    years = (27)
    age = int(input())
    if age < years :
        print('Seriously?')
    elif age > years :
        print('-_-"')
    else:
        age == years
        print('Welcome Evan!')

if age == years:
    print('Name one of the RGB colours.')
    rgb = 'Red' or 'Green' or 'Blue'
    colours = input()
    if colours == rgb :
        print('Good')
    else:
        print('Wrong Answer')

if age == years :
    print('Type Rock & Roll.')
    answer = 'Rock & Roll'
    ans = input()
if ans != answer :
    print('Learn to type.')
else:
    print('Good job!')

if age == years:
    print('Let me show you some math for entertainment :D')
result = '= '
print('2+2')
print(result + str(int(2+2)))
print('')
print('3 - 2')
print(result + str(int(3-2)))
print('')
print('2 x 2')
print(result + str(int(2*2)))
print('')
print('7 / 3')
print(7/3)
print('')
print('3 modulus 7')
print(result + str(int(3%7)))
print('')
print('2 exponent 10')
print(result + str(int(2**10)))
print('')
print('23 floor division 9')
print(result + str(int(23//9)))

3 个答案:

答案 0 :(得分:1)

您已经 password放入了封闭的if语句中。

if username == 'Evan' :
    password = input()

将其移动到该块之外以使用它。

password = None
if username == 'Evan' :
    password = input()

答案 1 :(得分:0)

问题在于,当您编写“程序终止”时,实际上并没有终止。该程序会检查所有if,如果您输入的用户名错误,则未定义“ password”,则会崩溃。

最好的解决方案是在函数中编写代码。这样,当您编写“程序终止”时,可以返回错误值并停止程序。

def function_name():
    #Some code
    if username == "Evan":
        #Some code
    else:
        #You want to terminate the function in this case
        return 1
    #Some code
#Function call
function_name()

答案 2 :(得分:0)

如果您确实要终止程序,则可以使用quit()函数,该函数在调用该程序时将其终止。

我可以看到您重复了if条语句,即他们正在检查相同的内容,因此请尝试嵌套else语句。我还建议使用一些结构化的代码,例如在程序开始时声明要使用的所有变量,并将它们初始化为 None