Выполнение задачи цикла while в Python - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу, чтобы пользователь набрал «right» или «left», и в соответствии с вводом произойдет какое-то действие.

Если пользователь введет «right» первые два раза, смайлик станет грустными не могу выбраться из леса.Если пользователь печатает «право» больше раз, смайлик всегда расстраивается, рубит несколько деревьев, делает стол и переворачивает его, поскольку он не может выйти из леса.

Как толькопользователь набирает «left», смайлик выходит из леса.

Вот мой код Python:

n = input("You are in the Lost Forest\n****************\n****************\n :)\n****************\n****************\nGo left or right? ")
i = 1
while n == "right" or n == "Right" and i < 3:
    n = input("You are in the Lost Forest\n****************\n****************\n :(\n****************\n****************\nGo left or right? ")
    i = i + 1
while n == "right" or n == "Right" and i >= 3:
    n = input("You are in the Lost Forest\n****************\n******       ***\n  (╯°□°)╯︵ ┻━┻\n****************\n****************\nGo left or right? ")
print("\nYou got out of the Lost Forest!\n\o/")

Проблема в том, что даже если пользователь печатает «right», третий, четвертыйили в пятый раз, и так далее, действие «выкидывания» не происходит.Смайлик становится только грустным, он не выходит из первого цикла.

Что я здесь не так делаю?

Ответы [ 4 ]

0 голосов
/ 12 февраля 2019

Я бы посоветовал вам заменить n == "right" or n == "Right" на (n.lower() == "right")

Таким образом, пользователь также может ввести право, и это не повлияет на вашу программу.

Кроме того, причина, по которой ваш код не работал, заключалась в отсутствии скобок, как вы, вероятно, можете прочитать в других ответах.

0 голосов
/ 12 февраля 2019

Ваше условие if не работает должным образом, так как условие оценивается по порядку.Следовательно, если значение n=="right" равно true, значение i не имеет значения.Вместо этого вы должны изменить его на:

n = input("You are in the Lost Forest\n****************\n****************\n :)\n****************\n****************\nGo left or right? ")
i = 1
while (n == "right" or n == "Right") and i < 3:
    n = input("You are in the Lost Forest\n****************\n****************\n :(\n****************\n****************\nGo left or right? ")
    i = i + 1
while (n == "right" or n == "Right") and i >= 3:
    n = input("You are in the Lost Forest\n****************\n******       ***\n  (╯°□°)╯︵ ┻━┻\n****************\n****************\nGo left or right? ")
print("\nYou got out of the Lost Forest!\n\o/")
0 голосов
/ 12 февраля 2019

Вам не нужно несколько циклов while, а просто if-elif внутри цикла:

n = input("You are in the Lost Forest\n****************\n****************\n :)\n****************\n****************\nGo left or right? ")
i = 1
while (n.lower() == "right"):
    if i < 3:
        n = input("You are in the Lost Forest\n****************\n****************\n :(\n****************\n****************\nGo left or right? ")
    elif i >= 3:
        n = input("You are in the Lost Forest\n****************\n******       ***\n  (╯°□°)╯︵ ┻━┻\n****************\n****************\nGo left or right? ")
    i = i + 1
0 голосов
/ 12 февраля 2019

В вашем заявлении while отсутствуют скобки.Следующее должно дать вам то, что вы хотите:

n = input("You are in the Lost Forest\n****************\n****************\n :)\n****************\n****************\nGo left or right? ")
i = 1
while (n == "right" or n == "Right") and i < 3:
    n = input("You are in the Lost Forest\n****************\n****************\n :(\n****************\n****************\nGo left or right? ")
    i = i + 1
while (n == "right" or n == "Right") and i >= 3:
    n = input("You are in the Lost Forest\n****************\n******       ***\n  (╯°□°)╯︵ ┻━┻\n****************\n****************\nGo left or right? ")
print("\nYou got out of the Lost Forest!\n\o/")
...