Проблема вызвана вызовом функции chooseAnswer1
в ваших условных выражениях.
if chooseAnswer()=='yes':
# First call of chooseAnswer1
if chooseAnswer1()=='bike':
...Code Removed for Readability...
# second call of chooseAnswer1
elif chooseAnswer1()=='skateboard':
if chooseAnswer12()=='awake':
Чтобы исправить это, вы захотите присвоить вызов функции переменной, а затем сравнить возвращаемый объект с этой переменной в вашем условии. Скорее всего, вы захотите сделать это для всех функций в вашей программе:
# Single call of chooseAnswer
answer0 = chooseAnswer()
if answer0 == 'yes':
# Single call of chooseAnswer1
answer1 = chooseAnswer1()
if answer1 == 'bike':
...Code Removed for Readability...
# Since the variable is assigned to the returned object,
# the function is not called again in the elif condition.
elif answer1 == 'skateboard':
answer12 = chooseAnswer12()
if answer12 == 'awake':
Также может быть полезен новый оператор моржа :=
Python 3.8, но я все еще использую 3.7 поэтому я оставлю это кому-то другому, чтобы предоставить примеры кода о том, как использовать его в этой ситуации.
Редактировать: OP сказал в комментарии к моему ответу:
Поэтому я столкнулся с другой проблемой. Я назначил все переменные функций, поэтому, когда я думаю, что все идет по порядку, я помещаю переменные. То, что я говорю, это когда появляется первый вопрос, он отвечает на него так, как будто я сказал «да», и хотя я говорю «скейтборд», он дает мне велосипедную дорожку.
Мой ответ слишком длинный, чтобы публиковать его в комментариях из-за того, как долго URL-адрес этой python ссылки репетитора , но я рекомендую их сравните их размещение их вызовов функций с тем, где я их разместил в моем примере:
answer0 = chooseAnswer()
if answer0 == 'yes':
answer1 = chooseAnswer1()
if answer1 == 'bike':
answer11 = chooseAnswer11()
if answer11 == 'right':
print("right path")
elif answer11 == 'left':
print("left path")
elif answer1 == 'skateboard':
answer12 = chooseAnswer12()
if answer12 == 'sleep':
print("sleep path")
elif answer12 == 'awake':
print("awake path")
Ключевая деталь здесь - это размещение вызовов функций.