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

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

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

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



Сообщение: 52
ссылка на сообщение  Отправлено: 05.01.23 12:59. Заголовок: задание 17 номер 349


Здравствуйте. Задача на маски вызвала у меня затруднение, если начало строки совпадает с искомым символом внутри строки. В задаче 349 маска 83*8*. Количество совпадений с маской 6, а должно быть 3 по ответам. Я вывела все найденные маски и увидела, что удовлетворяют условию только 3. Как это предусмотреть в программе подскажите, пожалуйста. Я пробовала использовать дополнительное условие p1.index('8')!=0 в ветвлении, но тогда результат программы вообще 0. Вот мой код программы на Питоне.

def f(n):
b=n
pr=1
while b>0:
pr*=(b%10)
b=b//10
return pr

a=[int(x) for x in open ('17-346.txt')]

i=0
k=0
max=0
while i<len(a)-2:
p=f(a)*f(a[i+1])*f(a[i+2])
p1=str(p)
if p<2_000_000_000 and (p1.startswith('83')) and ('8' in p1):
k+=1
if p>max:
max=p
print (p)
i+=1
print (k, max)

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







Сообщение: 81
ссылка на сообщение  Отправлено: 06.01.23 10:43. Заголовок: Программы "завор..


Программы "заворачивайте" в тэг [ pre2]...[ /pre2], при этом сохраняются все отступы и применяется моноширинный шрифт.

Маску неверно проверяете. (p1.startswith('83') and ('8' in p1) будет истиной, например. для числа 83, а оно не удовлетворяет маске.
p1.index('8')!=0 тоже плохо, поскольку такие числа все-таки начинаются с 8.
Предлагаю проверять, что в строке цифр 8 больше, чем одна.
 
def f(n):
b=n
pr=1
while b>0:
pr*=(b%10)
b=b//10
return pr


a=[int(x) for x in open ('17-346.txt')]

i=0
k=0
max=0
while i < len(a)-2:
p=f(a[ i])*f(a[ i+1])*f(a[ i+2])
p1=str(p)
if p < 2_000_000_000 and (p1.startswith('83')) and ('8' in p1) and p1.count('8') > 1:
k+=1
if p>max:
max=p
print(p)
i+=1
print(k, max)


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

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