В вашем коде эта строка всегда истина, следовательно, бесконечное l oop:
if player1.lower() != 'o' or player1.lower() != 'x':
Подумайте об этом: если игрок вводит 'o'
, то это верно, потому что player1.lower() != 'x'
верно. Если игрок вводит 'x'
, то это правда, потому что player1.lower() != 'o'
это правда. Если игрок вводит что-то еще, тогда player1.lower() != 'o'
- это истина. Вы видите проблему? это всегда правда, независимо от того, что вы печатаете!
Вы должны были использовать and
, а не or
. И в любом случае l oop можно упростить, вот что вы намеревались сделать:
player1 = input("Player 1: please choose 'X' or 'O': ")
while player1.lower() != 'o' and player1.lower() != 'x':
player1 = input("Player 1: please choose 'X' or 'O': ")
return player1