что нужно ввести, чтобы цикл заработал как надо?
Мне надо чтобы я cмог ввести в случайном порядке "'m1','m9','p1','p9','s1','s9',WEST,SOUTH,NORTH,EAST,WHITE,RED,GREEN", но в каком бы я порядке не вводил, все равно цикл показывает что он не знает такой комбинации.
#тайлы ман
m={'m1','m2','m3','m4','m5','m6','m7','m8','m9'}
#тайлы пин
p={'p1','p2','p3','p4','p5','p6','p7','p8','p9'}
#тайлы соу
s={'s1','s2','s3','s4','s5','s6','s7','s8','s9'}
#ветра
w={'W','S','N','E'}
#драконы
d={'Wh','R','G'}
WEST='W'
SOUTH='S'
NORTH='N'
EAST='E'
WHITE='Wh'
RED='R'
GREEN='G'
#кокуши мусо
k_m= ('m1','m9','p1','p9','s1','s9',WEST,SOUTH,NORTH,EAST,WHITE,RED,GREEN)
#ввод твоей руки
hand=input ('какая у тебя рука?')
while hand==k_m:
#если рука кокуши
print('у тебя кокуши')
break
if hand!=k_m:
#если рука не кокуши
print('я не знаю такой комбинации')
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Покажу на примере, как нужно парсить ввод и проверять:
test = ('a', 'b', 'c')
def check_input(inp):
return sorted(map(str.strip, inp.split(','))) == sorted(test)
assert check_input('a,c, b') == True
assert check_input('a,c, b,d') == False
assert check_input('c, a,b') == True
assert check_input('c, a') == False
Это при условии, что итемы могут повторяться и наличие второго такого же итема (или наоборот недостача второго итема) ломает комбинацию. Если же повторные итемы комбинацию не ломают, то просто нужно написать set вместо обоих sorted.