Почему «обычный» пароль пользователя всегда печатает и не работает - PullRequest
0 голосов
/ 13 апреля 2019

Мой код в целом работает, но имеет некоторые ошибки.Когда вы набираете «master», он запрашивает пароль, а после ввода генерирует пароль для «обычных» пользователей.

О «обычных» пользователях: генерирует пароль, но при вводе он не работает и генерирует другой.Я попытался изменить расположение useraccess () ниже usertype () и продолжаю делать то же самое.Также другой, где "useraccess (user =" normal ", pswd = None") "с usertype () создает переменную типа" functions = "", используя ее с вызывающими функциями ниже операторов типа "functions = masterkey ()"и «functions = passwordgenerator ()» с «return functions» в конце.Остальное, что вы можете себе представить ...

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 голосов
/ 13 апреля 2019

У вас много ненужных print(). Если вы удалите их, программа будет работать как положено. Помните, что print() ничего не возвращает, поэтому любое присвоение, такое как x = print(whatever), приведет к x, равному None.

userpassword = print(passwordgenerator()). распечатка звонка не нужна. Он маскирует возвращаемое значение, как описано выше. Просто сделай:

userpassword = passwordgenerator()
print(userpassword)

print(masterkey()) и print(masterkey()). распечатывать звонки снова не нужно. Они просто печатают None, так как обе функции ничего не возвращают. Просто вызовите функции без print().

О обычных пользователях: генерирует пароль, но при вводе он не работает и после этого перепечатывает другой пароль.

Это связано с тем, что вы звоните снова useraccess() после usertype(). Удалите его и позвоните только usertype().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...