Я думаю, что основная проблема с кодом связана с областью действия переменной choicenumber. Вы задаете его как глобальную переменную со строкой
choicenumber = ("choice1")
. В функции она присваивается локально входному значению, но это глобальная переменная области видимости, которая используется в решении if-else на конец кода. Вы можете проверить это, вставив эту опцию в конце вашего кода:
elif choicenumber == "choice1":
print("Global!")
Вы всегда получите «Global!» отображается, потому что локальное значение из функции игнорируется вместо глобального значения.
Есть несколько способов обойти это. Один из них - объявить переменную choicenumber как глобальную внутри функции:
while True:
global choicenumber
choicenumber=input(choice)
Однако использование глобальных переменных считается плохой практикой по причинам, которые вы можете посмотреть.
Альтернативой является используйте функцию для возврата значения choicenumber в ответ на вызов функции:
def whiletrueloop():
while True:
choicenumber=input(choice)
if choicenumber.lower() not in (options):
print(repeatsentence)
else:
return choicenumber
choice=("What is bigger, an elephant or a mouse?")
options=('elephant','mouse')
repeatsentence=("That isn't an answer!")
choicenumber = whiletrueloop()
if choicenumber=="elephant":
print("Correct!")
elif choicenumber=="mouse":
print("Wrong!")