def login():
user = raw_input("Username: ")
passw = raw_input("Password: ")
f = open("users.txt", "r")
for line in f.readlines():
us, pw = line.strip().split("|")
if (user in us) and (passw in pw):
print "Login successful!"
return True
print "Wrong username/password"
return False
def menu():
#here's a menu that the user can access if he logged in.
def main():
login()
log = login()
if log == True:
menu()
И users.txt является:Простая функция Войти в Python
john22|1234
max2|2211
jack6|1551
Проблема, когда я запускаю программу и введите правильное имя пользователя и пароль, он печатает «Вход успешной!» но он не будет продолжать menu(). Вместо этого он снова показывает «Имя пользователя» и «Пароль:». Однако, когда я снова вводим правильное имя пользователя и пароль (такую же или другую пару из users.txt), он входит в меню(), и все работает нормально. Так что я предполагаю, что вам по какой-то причине нужно ввести правильную информацию дважды, и я не хочу этого. Я искал везде, но я не могу понять, почему это происходит ...
Взгляните еще раз на основной(). Похоже, вы дважды вызываете login(). Вы можете удалить первый вызов, потому что он ничего не возвращает. – nofinator
И, пожалуйста, посмотрите https://docs.python.org/2/library/getpass.html :-). Потому что я предполагаю, что вы не хотите, чтобы пароль отображался на экране или в журналах. –