Ваш код имеет две проблемы, я думаю:
1- Когда вы открываете файл, вы должны закрыть или сбросить этот файл, чтобы иметь возможность прочитать этот файл. Я использовал оператор with
для управления файлами.
2- Вы рекурсивно вызываете NameSay()
, и если человек вводит неправильное имя пользователя 10 раз, ваш стек вызовов функций должен сохранить их все. Итак, я отредактировал вашу последнюю строку кода, которая не вызывает функцию рекурсивно, и отредактировал функцию NameSay
, чтобы она возвращала True
или False
, чтобы определить, успешно это было или нет
def NameSay():
UserName = input(": ")
with open("UserName.txt", "w+") as UserNameFile:
UserNameFile.write(UserName)
print("So your name is "+ UserName + ", right?")
NameConfirm = input(": ")
if 'yes' in NameConfirm or 'Yes' in NameConfirm or 'right' in NameConfirm or 'Right' in NameConfirm or 'ya' in NameConfirm or 'Ya' in NameConfirm or 'yeah' in NameConfirm or 'Yeah' in NameConfirm:
print("Good to meet you, " + UserName + ". I'm Ene, your virtual assistant, friend, coworker, whatever you need me to be!")
print("Now, why don't you tell me a bit about yourself? What you like and all of that.")
UserLike = input(": ")
with open("UserLikes.txt", "w") as UserLikesFile:
UserLikesFile.write(UserLike)
print("Thank you! This is very interesting info.")
return True
if NameConfirm in ['no', 'No']:
print("Oh? Then tell me what your name is.")
return False
if os.path.isfile('UserName.txt') == True:
f = open("UserName.txt", "r")
file_contents = f.read()
welcomes = ["Welcome back, " + file_contents, "Hey-o! Good to see you again, " + file_contents]
print("\n" + welcomes[random.randint(0,1)])
Main_Menu()
if os.path.isfile('UserName.txt') == False:
print("\nHey-o! I don't think we've met before! What\'s your name?")
while(not NameSay())
continue