На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 1
ссылка на сообщение  Отправлено: 29.03.22 18:40. Заголовок: Задание 17 №4423


И так дорогие друзья вам пишет ученик 3 - его класса школы коррекции.
Вот решение и ответ которые нам предлагают.
 data = [int(x) for x in open('17.txt')] 

def cond(x):
return x > 0 and x % 10 == 9

ma = 0
count = 0
for i in range(2,len(data)):
if (not cond(data[i-2])) and cond(data[i-1]) and \
(not cond(data[ i])):
count += 1
ma = max(ma, sum(data[i-2:i+1]))

print( count, ma)


Ответ:206 23427

Итак, как мы все знаем при отрицании операнда И он превращается в операнд ИЛИ. Из-за этого в приведенном выше коде случается ошибка, когда не подходящие по условию числа учитываются в ответе.
МОЖНО ИСПРАВИТЬ ДАННЫЙ КОД, НАПИСАВ НОВЫЙ,(ЭТОТ УЖЕ НЕ СПАСТИ)(шутка).
Вот правильное написание:
 data = [int(x) for x in open('17.txt')] 

def cond1(x):
return x > 0 and x % 10 == 9
def cond(x):
return x > 0

ma = 0
count = 0
for i in range(2,len(data)):
if (not cond(data[i-2])) and cond1(data[i-1]) and \
(not cond(data[ i])):
count += 1
ma = max(ma, sum(data[i-2:i+1]))

print( count, ma)


Ответ: 63 6241
НО если вы мне не верите могу представить вашему вниманию еще один код:
 with open('17.txt') as f: 
s = [int(i) for i in f.readlines()]
d = []
for o in range(len(s)-2):
if s[o+1] > 0 and s[o] < 0 and s[o+2] < 0 and s[o+1] % 10 == 9:
d.append(s[o] + s[o+1] + s[o+2])
print(max(d),len(d))


Ответ: 6241 63

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]







Сообщение: 20
ссылка на сообщение  Отправлено: 29.03.22 22:20. Заголовок: В исходном коде нет ..


В исходном коде нет отрицания операнда И, оператор not относится только к функции cond(). Ответ на сайте правильный.
Можете решить задачу в Excel и наглядно увидеть эти 206 троек.

Спасибо: 1 
ПрофильЦитата Ответить





Сообщение: 2
ссылка на сообщение  Отправлено: 29.03.22 22:36. Заголовок: хмхмхм жалко нельзя ..


хмхмхм
жалко нельзя кидать скриншоты но вот моя формула в exel =ЕСЛИ(И(A1<0;A2>0;A3<0;ОСТАТ(A2;10)=9);1;0) и она тоже показывает 63.
КАК ХОРОШО ЧТО ЛЮДИ ПРОВЕРЯЮТ ИНФОРМАЦИЮ ПЕРЕД ТЕМ КАК ОТВЕТИТЬ.

Спасибо: 1 
ПрофильЦитата Ответить
Администратор




Сообщение: 3421
ссылка на сообщение  Отправлено: 30.03.22 11:58. Заголовок: Условие x > 0 an..


Условие x > 0 and x % 10 == 9 должно выполняться только для второго числа тройки. Это значит, что для остальных двух чисел должно выполняться обратное условие: x <= 0 or x % 10 != 9. Как вы правильно заметили, при инверсии and меняется на or.
Если вы хотели решить задачу с двумя условиями, это можно было сделать так:
 data = [int(x) for x in open('17-204.txt')] 

def cond1(x):
return x > 0 and x % 10 == 9
def cond(x):
return x <= 0 or x % 10 != 9

ma = 0
count = 0
for i in range(2,len(data)):
if cond(data[i-2]) and cond1(data[i-1]) and \
cond(data[ i]):
count += 1
ma = max(ma, sum(data[i-2:i+1]))

print( count, ma)
Ответ на сайте верный.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 3
ссылка на сообщение  Отправлено: 30.03.22 17:04. Заголовок: Задание 17 №4423


Но разве если там стоит or то это уже не будет ошибкой? приведу пример у нас есть тройка 1346 4539 -1244 так вот логической операции or достаточно выполнения одного условия из двух чтобы вернуть True поэтому мы зачтем эту тройку хотя в условии написано: Тройка идущих подряд чисел последовательности называется уникальной, если только второе из них является положительным числом. Поэтому я и написал сюда с просьбой исправить ответ или поменять формулировку задания

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 3424
ссылка на сообщение  Отправлено: 30.03.22 17:13. Заголовок: koBANov пишет: у нас..


koBANov пишет:
 цитата:
у нас есть тройка 1346 4539 -1244 так вот логической операции or достаточно выполнения одного условия из двух чтобы вернуть True поэтому мы зачтем эту тройку

Да, это подходяшщая тройка. Она соответствует условию задачи.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1880
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет