Как правильно написать выражение или

У меня очень простая программа, где он просто проверяет пользователя вводить и в конце концов попросить правильный ввод.

player1 = input('Scissors (S), Rock (R), Paper (P) ?:')

while player1 is not 'S' or 'R' or 'P':
 player1 = input('Invalid Input, please choose correctly! /n Scissors (S), Rock (R), Paper (P) ?:')

Если player1 - «S», «R» или «P» тогда он по-прежнему запрашивает правильный ввод. Я не уверен, что мне не хватает. Извините, если это может показаться очень банальным.

Редактировать:

записывая это таким образом, все равно не распознает правильный ввод

   while player1 is not 'S' or player1 is not 'R' or player1 is not 'P':
   while player1 in {'S', 'R', 'P'}:

таким образом просто признать "S" правильным, если тип "R" по-прежнему неправильный.

while player1 != 'S' and 'R' and 'P':

Верный:

while player1 != 'S' and player1 != 'R' and player1 != 'P':

Не используйте is для проверки равенства, но ==, и логическим соединителем, вероятно, должен быть and, чтобы ваш код имел некоторый смысл.

schwobaseggl 10.09.2018 09:48

Ваш новый выпуск также является дубликатом (сейчас не могу его найти). TL; DR: используйте and, а не or.

melpomene 10.09.2018 09:49

Почему и? Следует ввести только одно входное значение, а не все три.

xava 10.09.2018 09:50
stackoverflow.com/questions/1504717/… - один из дураков.
melpomene 10.09.2018 09:50

@xava Потому что вы проводите проверку неравенства. Каждый вход либо не S, либо не R (т.е. условие всегда верно).

melpomene 10.09.2018 09:52
x != 'S' or x != 'R' всегда правда. Вы не найдете значение для x, для которого это не так.
schwobaseggl 10.09.2018 09:52

Я использовал now! = И логический соединитель 'and', но теперь правильно распознается только первое значение

xava 10.09.2018 09:56

Теперь мы вернулись к исходной проблеме.

melpomene 10.09.2018 09:58

Я исправил это сейчас, спасибо, что терпите меня

xava 10.09.2018 10:09
0
9
30
0

Другие вопросы по теме