我刚刚开始使用Python进行编程,而且我没有定义x,但我不知道为什么它会说考虑到我认为它是定义的.
def menu():
x = 0
while x != 1 or 2:
print "menu"
print "1)login"
print "2)under dev"
x = raw_input('select menu option')
if x == 1 or 2:
break
menu()
if x=='1':
print "enter username:"
y = raw_input()
if y=="username":
print "enter password:"
z = raw_input()
if z=="password":
print "password accepted"
elif x=='2':
print "under development"
elif y or z == False:
print "username or password incorrect"
Run Code Online (Sandbox Code Playgroud)
x是函数中的局部变量menu(),它不存在于外部menu().
您可以将其返回,menu()然后将值存储x在代码中的新值中:
def menu():
x = None
while x not in ('1', '2'):
print "menu"
print "1)login"
print "2)under dev"
x = raw_input('select menu option')
return x
x = menu()
Run Code Online (Sandbox Code Playgroud)
请注意,我也修复了您的代码中的几个问题menu().
raw_input()返回一个字符串,但你测试的x是if 是1还是2.我改变了代码来测试字符串'1'而'2'不是.
不要使用x != 1 or 2,但这并不意味着你认为这意味着什么.它测试if是否x != 1为True,如果不是,则测试是否2为True.2是总是 True因为所有非零数字是在布尔上下文视为真.
我用x not in ('1', '2')测试代替了它.
无需x再次在循环内部进行测试并执行break; 该while循环将自身只是退出而不该测试.
这并不重要,什么x是在开始时设置为menu(),只要它不是'1'或'2'.None是一个很好的选择,表明它是"空的".