我的代码总体上可以运行,但是有一些错误。当您键入“ master”时,它会询问您密码,并在键入后为“普通”用户生成密码。
关于“普通”用户:生成密码,但是在您键入密码时无效,并生成另一个密码。 我试图在usertype()下面更改useraccess()的位置,并继续这样做。还有一个不同的地方,其中带有usertype()的“ useraccess(user =“ normal”,pswd = None“)”创建类似于“ functions =”“的变量,并将其与诸如” functions = masterkey()“语句下面的调用函数一起使用和“功能=密码生成器()”,最后带有“返回功能”。其余您可以想象的...
import getpass
import uuid
#generate password for normal users
def passwordgenerator(pswdlength = 5):
random = str(uuid.uuid4().int) #convierte el uuid a un string en enteros
random = random.replace("-", " ") #reemplaza el uuid en el "-"
return random[0:pswdlength] #imprime la contrasenha (se reemplazara despues por una funcion que mande al user)
#create a password for the admin
def masterkey():
masterpswd = 519 #valor del masterkey
admpswd = getpass.getpass(prompt="Ingresa tu contrasenha: ")
if admpswd == "519":
print ("youre in")
else:
print ("try it again")
def useraccess(user = "normal"):
userpassword = print(passwordgenerator())
while True:
allpswd = getpass.getpass("Password: ")
if allpswd == userpassword:
print("hi")
break
else:
print("you didnt made it")
break
def usertype():
user = str(input("Type of user: Normal o Master "))
while True:
if user.lower() == "master":
print(masterkey())
break
elif user.lower() == "normal":
print(useraccess())
break
#calling functions
usertype()
useraccess()
我希望不要在生成密码时重复打印生成的密码和“普通”用户密码。
答案 0 :(得分:0)
您有很多不需要的print()
。如果删除它们,该程序将按预期运行。请记住,print()
不会返回任何内容,因此任何类似x = print(whatever)
的赋值都将导致x
等于None
。
userpassword = print(passwordgenerator())
。不需要打印呼叫。如上所述,它正在屏蔽返回值。只要做:
userpassword = passwordgenerator()
print(userpassword)
print(masterkey())
和print(masterkey())
。不再需要打印呼叫。它们只是打印None
,因为两个函数均不返回任何内容。只需调用不带print()
的函数即可。
关于普通用户:生成密码,但是当您键入密码时不起作用,并在此后重新打印另一个密码。
这是由于您在useraccess()
之后再次致电usertype()
。删除它,然后仅调用usertype()
。