Форум сайта python.su
Уважаемые коллеги!
Прошу Вас помочь найти ошибку в коде:
Задача (из Питонтьютора):
Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число, для этого она называет некоторые множества натуральных чисел. Август отвечает Беатрисе YES, если среди названных ей чисел есть задуманное или NO в противном случае. После нескольких заданных вопросов Беатриса запуталась в том, какие вопросы она задавала и какие ответы получила и просит вас помочь ей определить, какие числа мог задумать Август.
В первой строке задано n — максимальное число, которое мог загадать Август. Далее каждая строка содержит вопрос Беатрисы (множество чисел, разделенных пробелом) и ответ Августа на этот вопрос.
Вы должны вывести через пробел, в порядке возрастания, все числа, которые мог задумать Август.
Моё предполагаемое решение:
n = int(input())
i = True
j = 'YES'
A, B = set(), set()
for x in range (1, n + 1):
A.add(x)
while i == True:
if j == 'YES':
B = ([int(s) for s in input().split()])
j = str(input())
elif j == 'NO':
A.difference(B)
j == 'YES'
elif j == 'HELP':
i == False
else:
print('Введена неверная команда')
break
print(' '.join([str(g) for g in sorted(A)]))
Отредактировано zantal (Июнь 19, 2019 13:42:03)
Офлайн
n = int(input()) i = True j = 'YES' A, B = set(), set() for x in range (1, n + 1): A.add(x) while i == True: # достаточно while i: if j == 'YES': B = ([int(s) for s in input().split()]) # ??? j = str(input()) # зачем строку приводить к строке? elif j == 'NO': A.difference(B) # результат просто отбрасывается j == 'YES' elif j == 'HELP': i == False # в чем смысл этого сравнения? else: print('Введена неверная команда') break print(' '.join([str(g) for g in sorted(A)]))
Отредактировано Egorro13 (Июнь 19, 2019 15:18:03)
Офлайн
Огромное спасибо за уделённое время и развёрнутый ответ!
Офлайн