为什么“普通”用户密码总​​是打印而无法使用

时间:2019-04-12 23:48:07

标签: python authentication passwords

我的代码总体上可以运行,但是有一些错误。当您键入“ 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()

我希望不要在生成密码时重复打印生成的密码和“普通”用户密码。

1 个答案:

答案 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()