繁体   English   中英

为什么“普通”用户密码始终打印并且不起作用

[英]Why “normal” user password always prints and desn't work

我的代码一般有效,但有一些错误。 当您输入“master”时,它会询问您密码,输入后会生成“普通”用户的密码。

关于“普通”用户:生成密码,但是当您键入密码时它不起作用并生成另一个密码。 我试图改变useracype()下面的useraccess()的位置,并继续做同样的事情。 还有一个不同的地方,“useraccess(user =”normal“,pswd = None”)“with usertype()创建一个像”functions =“这样的变量,使用它与”functions = masterkey()“之类的语句之下的调用函数和“functions = passwordgenerator()”,最后带有“返回功能”。 其余的你可以想象......

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

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

你有很多不需要的print() 如果删除它们,程序将按预期工作。 请记住, print()不返回任何内容,因此任何赋值如x = print(whatever)将导致x等于None

userpassword = print(passwordgenerator()) 打印电话不需要。 如上所述,它掩盖了返回值。 做就是了:

userpassword = passwordgenerator()
print(userpassword)

print(masterkey())print(masterkey()) 再打印电话不需要。 它们只是打印None ,因为两个函数都不返回任何内容。 只需调用没有print()的函数。

关于普通用户:生成密码,但是当您键入密码时,密码无效并在此之后重新打印另一个密码。

这是因为,你再打电话的事实useraccess()后, usertype() 删除它,并仅调用usertype()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM