2013-12-16 3 views
1

Я пытаюсь написать программу, которая позволяет мне получить имя пользователя и пароль из файла. Я чувствую, что нахожусь на правильном пути, но, когда я запускаю программу, чтобы проверить, работает ли он или нет, я получаю:Получение имени пользователя и пароля из файла (Python)

Name error: global name Username is not defined.

Любые идеи, где я пошло не так? Приносим извинения, если форматирование отключено.

def login(): 
     UserName = input("Please enter your user name: ") 
     passw = input("Please enter your password: ") 
     check(UserName, passw) 
     return UserName, passw 

    def check(user, password): 
     pword = {} 
     for line in open('unames_passwords.txt','r'): 
      user, password = line.split() 
      pword[user] = password 
      if user == UserName and password == passw: 
       return True 
       print("Thank you for logging in.") 
      else: 
       print("Username or password is incorrect") 

    def main(): 
     login() 

    main() 
+4

** Не храните пароли в текстовом формате **. Вы должны _hash_ свои пароли. – SLaks

+0

@SLaks ** Не давайте нежелательных советов, не давая объяснений. ** - Там я тоже могу писать смелые! Но если серьезно, если вы чувствуете необходимость комментировать проблемы безопасности очевидного приложения для игрушек, пожалуйста, по крайней мере, поделитесь своими рассуждениями, а не просто напишите заявление. – l4mpi

ответ

3

Ваш check функция не имеет переменную с именем UserName.
Вместо этого он имеет параметр с именем user, который затем переопределяется линией из файла.

Вам необходимо изменить параметр на уникальное имя, а затем использовать это имя.

+0

Спасибо, теперь я просто пытаюсь понять, как остановить повторение утверждения печати. – user3107805

+0

@ user3107805: Похоже, вы хотите распечатать, если не найдете _any_ соответствия строк (что означает, после того, как вы закончите просмотр всех строк), а не для каждой несогласованной строки. – SLaks

+0

Любые советы о том, как я буду это делать? – user3107805

Смежные вопросы