Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 19, 2019 13:41:34

zantal
Зарегистрирован: 2019-04-16
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помочь найти ошибку в коде

Уважаемые коллеги!
Прошу Вас помочь найти ошибку в коде:
Задача (из Питонтьютора):
Август и Беатриса играют в игру. Август загадал натуральное число от 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)

Офлайн

#2 Июнь 19, 2019 15:17:52

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

Прошу помочь найти ошибку в коде

 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)]))
Не факт, что правильно понял смысл задачи (если сам загадываешь число и сам у себя его угадываешь - наркомания какая-то)… Насчет комментария ??? - если введено YES, сразу запрашивается ввод следующего набора чисел, только после него можно ввести HELP, хотя по смыслу вроде как HELP - загаданное число уже угадано (или, скорее, просто забыто, учитывая, что сам с собой), вопросов ДА/НЕТ больше не задаем…

Отредактировано Egorro13 (Июнь 19, 2019 15:18:03)

Офлайн

#3 Июнь 19, 2019 16:10:53

zantal
Зарегистрирован: 2019-04-16
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помочь найти ошибку в коде

Огромное спасибо за уделённое время и развёрнутый ответ!


Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version