Форум сайта python.su
Условие
Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число, для этого она называет некоторые множества натуральных чисел. Август отвечает Беатрисе YES, если среди названных ей чисел есть задуманное или NO в противном случае. После нескольких заданныъх вопросов Беатриса запуталась в том, какие вопросы она задавала и какие ответы получила и просит вас помочь ей определить, какие числа мог задумать Август.
В первой строке задано n - максимальное число, которое мог загадать Август. Далее каждая строка содержит вопрос Беатрисы (множество чисел, разделенных пробелом) и ответ Августа на этот вопрос.
Вы должны вывести через пробел, в порядке возрастания, все числа, которые мог задумать Август.
n=int(input())
b=set(range(1, n+1))
while True:
i=input().split()
if i[0]=='HELP':
break
else:
i=float(i)
ans=input()
if ans =='YES':
b=b|set(i)
else:
b=b-set(i)
b=list(b)
for k in range (len(b)):
if b[k]>b[k-1]:
b[k], b[k-1]=b[k-1], b[k]
print(b)
Офлайн
а что там у вас в b до его преобразования в list? потому как
>>> b = {21,13,23,45,67} >>> print(type(b)) <class 'set'> >>> b = list(b) >>> print(type(b),b) <class 'list'> [67, 13, 45, 21, 23]
Офлайн
marvellikВот входные данные:
а что там у вас в b до его преобразования в list? потому как
Офлайн
я вам предлагал найти ошибку в вашем коде проверив что за тип b если вызывает ошибку при преобразовании. а решение готовое не проблема но вам то оно что даст:?
n = int(input()) all_nums = set(range(1, n + 1)) possible_nums = all_nums while True: guess = input() if guess == 'HELP': break guess = {int(x) for x in guess.split()} answer = input() if answer == 'YES': possible_nums &= guess else: possible_nums &= all_nums - guess print(' '.join([str(x) for x in sorted(possible_nums)]))
Офлайн
Решение етой задачи есть готовое в нете и гуглиться за 5 минут.
Офлайн