所以,我一直在编写一个Python'计算机软件',你基本上可以编辑一个登录用户名和密码。我试图添加一个允许你“删除”密码的功能(但更像是跳过它),但它不起作用。以下是跳过过程的代码:
def Access1():
print("Input first name")
print("")
answer = raw_input()
if(answer.lower() == username and PasswordSkip == True):
print("")
print("Access granted")
List1()
if(answer.lower() == username and PasswordSkip == False):
print("")
print("Access granted")
Access2()
*请注意,Access2()
是需要密码才能继续的功能,List1()
是系统的主菜单。
这是布尔值设置为True
的地方:
def PasswordRemove():
print("")
print("Are you sure you want to remove your password, <yes> or <no>?")
print("")
key = raw_input()
if(key.lower() == "yes"):
PasswordSkip = True
print("")
print("Ok, your password has been removed.")
print("")
List1()
elif(key.lower() == "no"):
DetailsChange()
else:
DetailsChange()
以下是我定义和全球化PasswordSkip
:
PasswordSkip = False
def Startup():
global PasswordSkip
(该函数持续时间更长,但不涉及布尔值。)
如果您需要更多关于我的代码的信息,我可以将它提供给您。
因此,当我运行我的代码时,它忽略了关于布尔值的if语句。如果布尔值为True
,则它应该转到不同的函数。但是,它会跳过该语句,因为它会调出Access2()
(密码函数)。
答案并非迫切需要,但谢谢。
答案 0 :(得分:3)
片段
def Startup():
global PasswordSkip
并未声明PasswordSkip
在任何地方都是全球性的。它声明在这个函数中,对设置PasswordSkip
的引用应该被视为全局变量PasswordSkip
而不是某个局部变量。
现在在函数PasswordRemove
中,您没有声明PasswordSkip
是一个全局范围。因此,PasswordSkip = True
等语句会设置本地变量PasswordSkip