Я новичок в Python и пытаюсь создать простую игру Tic-Tac-Tock. Когда я получаю информацию от пользователя, она переходит в бесконечный цикл - PullRequest
1 голос
/ 20 сентября 2019
def player_input():
    player1=''
    player2=''
    while player1 != "X" or player1 !="O":
        player1=input('Choose from X or O').upper()

    if player1=='X':
        player2 = 'O'
        return (player1,player2)
    elif player1=='O':
        player2='X'
        return (player1,player2)

Когда я бегу, он идет в бесконечный цикл.Но когда я изменяю цикл while на while not(player1 =="X" or player1=="O"), мой код работает нормально.Так может кто-нибудь объяснить разницу между моими циклами while?

1 Ответ

0 голосов
/ 20 сентября 2019

Ваше условие неверно, вы в основном хотите быть в цикле while, пока пользователь не введет либо X, либо O. Таким образом, это означает:

not (player1 == "X" or player1 =="O")

Это может немного смущать, особенно если выне знаком с булевой алгеброй.В основном у вас есть следующее:

X and Y, поэтому not (X and Y) логически эквивалентно not X or not Y.В вашем случае у вас есть:

not (player1 == "X" or player1 =="O")

, что логически эквивалентно:

player1 != "X" and player1 != "O"

Если вы хотите узнать больше об этом, вы можете прочитать о законах Де Моргана

...