Почему переменная, содержащая "c", не равна "c" в моем цикле while?Пытаясь сломаться, когда вход совпадает - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь реализовать систему подсчета очков, используя счетчики, которые были инициированы до этого кода.Однако я хочу продолжать проверять ввод, пока пользователь не введет правильного победителя.Если они входят в Adam, Bill или Draw в первый раз, программа пропускает цикл while.Однако, если они вводят параметр не здесь, например «Кэролайн», я застреваю в бесконечном цикле в цикле while (даже если я ввожу правильный ответ, как только мы войдем в цикл while).

Как только явойти в цикл while из-за первоначального сбоя, даже если я наберу «adam», я получаю ошибку печати, и я не уверен, почему, так как gameLower должен == «adam».Чего мне не хватает?

game = input("Who won, Adam or Bill, or a draw (enter D for draw): ")
gameLower = game.lower()
print(gameLower)

while gameLower != "adam" or gameLower != "bill" or gameLower != "d":
    print("Sorry, I didn't understand who the winner was. Adam, Bill or a draw (D)?")
    game = input("Who won, Adam or Bill, or a draw (enter D for draw): ")
    gameLower = game.lower()
else:
    break

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

мой друг.Сначала вам нужно использовать AND вместо OR в ваших условиях while, но в целом вы должны использовать другой способ, подобный тому, что я хочу вам сказать: потому что вы хотите проверять ответ пользователя снова и снова, пока он не введет правильный параметр, поэтомуВы должны использовать бесконечное WHILE (например: WHILE (1)), а в свое время вы должны использовать условие IF и ELSE!В вашем IF, если вы должны использовать это условие (которое у вас есть сейчас в WHILE) с AND!И в конце вашего IF, если вы должны использовать ПРОДОЛЖИТЬ, а в конце вашего ELSE вы должны использовать BREAK, чтобы выпрыгнуть из вашего WHILE!Если вам нужна дополнительная помощь, скажите мне написать ее для вас и отправить, если здесь.

0 голосов
/ 20 ноября 2018

Ваше условие цикла - это тавтология, выражение, истинное значение которого всегда равно true независимо от значений его переменных.Вам нужно использовать and вместо or.

gameLower value| != "adam" | != "bill" | != "d" | OR'ed | AND'ed
---------------+-----------+-----------+--------+-------+-------
"adam"         |  false    | true      | true   | true  | false
"bill"         |  true     | false     | true   | true  | false
"d"            |  true     | true      | false  | true  | false
"other value"  |  true     | true      | true   | true  | true
...