Как проверить, находится ли введенное значение в ключе - Python - PullRequest
0 голосов
/ 08 октября 2018

Я пытался создать действительно простой экран входа на python для развлечения.Где-то еще в программе я сохранил введенные имя пользователя и пароль в виде str (в формате dict) во внешнем файле.Я могу заставить его проверить, правильно ли введено имя пользователя ключа, но я не могу найти способ заставить его проверить, является ли введенный пароль паролем, связанным с ключом - значением - я мог бы сформулировать это странно, но есть ли у кого-нибудьесть идеи как?

def login():
clear()
gap()
loginu = input("ENTER YOUR USERNAME:")
gap()
file = open("usernamesf.txt","r")
usernra = file.read()
usernr = usernra.replace("'","")
usernw = '"{' + usernr + '}"'
print (usernw)
usernwl = ast.literal_eval(usernw)
print (usernwl)
if loginu in usernwl:
    gap()
    loginp = input("ENTER YOUR PASSWORD:")
    loginpc = usernw[loginu]
    if loginp in loginpc:
        print ("yay")

else:
    gap()
    print ("NO USERNAME FOUND...")
    time.sleep(0.5)
    gap()
    signu = input("Would you like to sign up?")
    if signu in ['yes','y','Y','Yes',' yes',' Yes',' y',' Y']:
        sign()
    else:
        menu()

1 Ответ

0 голосов
/ 08 октября 2018

Сначала я бы порекомендовал вам использовать библиотеку json для разбора вашего файла - она ​​может преобразовывать словари python в строку и наоборот, что действительно полезно.

Для преобразования dict вstr: json.dumps(dictionary)

Для преобразования str в dict: json.loads(string)

При этом, чтобы прочитать словарь из файла, достаточно просто:

import json
with open("usernamesf.txt") as f:
     user_dictionary = json.loads(f.read())
     if loginu in user_dictionary:
         password = input("ENTER YOUR PASSWORD")
         if user_dictionary[username] == password:
             # success

Обратите внимание, как я использовал здесь выражение with для файла - это гарантирует, что файл правильно закрыт python после того, как вы покончили с ним - то есть после выхода из блока with.Вы можете прочитать больше об этом в официальной документации Python по файловому вводу / выводу здесь: https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects

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