Автор | Сообщение |
|
Отправлено: 16.02.23 20:02. Заголовок: 17 задание №332
Помогите пожалуйста Е. Джобс) В файле 17-332.txt содержится последовательность целых чисел. Элементы последовательности – четырёхзначные натуральные числа. Найдите все тройки элементов последовательности, в которых первое и последнее число тройки имеют одинаковую сумму цифр, а среднее число тройки меньше, чем среднее арифметическое всех чисел в файле, кратных 17. В ответе запишите количество найденных троек, затем самую часто встречающуюся сумму разрядов среди средних чисел таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности. мой код: a=b=[] sred=suma1=sama2=suma3=0 f=open("17-332.txt ") for s in f: a.append(int(s)) for x in a: if x%17==0: b.append(x) sred=sum(b)/len(b) kol=0 res=-1000 for i in range(1,len(a)-3): while (num != 0): suma1 = suma1 + a % 10 a = a // 10 while (num != 0): suma3 = suma3 + a[i+2] % 10 a[i+2] = a[i+2] // 10 while (num != 0): suma2 = suma2 + a[i+1] % 10 a[i+1] = a[i+1] // 10 res=max(res,summ2) if suma1==suma2 and a[i+1]< sred: kol+=1 print(kol,res) у меня изначально ошибка где-то в массиве "B", потому что он на экран не выводится.
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Сообщение: 3907
|
|
Отправлено: 18.02.23 13:48. Заголовок: Попробуйте оформить ..
Попробуйте оформить програму так, как написано в желтой рамке вверху. Сейчас очень сложно разбираться.
|
|
|
|
Отправлено: 18.03.23 07:43. Заголовок: Катя Иванова пишет: ..
Катя Иванова пишет: цитата: | a=b=[] sred=suma1=sama2=suma3=0 f=open("17-332.txt ") for s in f: a.append(int(s)) for x in a: if x%17==0: b.append(x) sred=sum(b)/len(b) kol=0 res=-1000 for i in range(1,len(a)-3): скорее всего будет необходимо заменить на for i in range(len(a)-2): while (num != 0): suma1 = suma1 + a % 10 a = a // 10 while (num != 0): suma3 = suma3 + a[i+2] % 10 a[i+2] = a[i+2] // 10 while (num != 0): suma2 = suma2 + a[i+1] % 10 a[i+1] = a[i+1] // 10 res=max(res,summ2) if suma1==suma2 and a[i+1]< sred: kol+=1 print(kol,res) |
| Катя Иванова, с переменными нужно быть аккуратнее, у одной и той же переменной буковки должны быть одинаковые (выделил жирным)! А у вас они пляшут! Катя Иванова пишет: цитата: | у меня изначально ошибка где-то в массиве "B", потому что он на экран не выводится. |
| Без правильного форматирования программы невозможно понять ошибку, возможно у вас код работающий с массивом b выглядит так: for x in a: if x%17 == 0: b.append(x) sred = sum(b)/len(b) вот он и выдает ошибку, надо отформатировать его так как показано ниже, кстати, начало: f=open("17-332.txt ") for s in f: a.append(int(s)) можно сократить, примерно так: a = [int(x) for x in open("17-332.txt")] for x in a: if x%17 == 0: b.append(x) sred = sum(b)/len(b) Этот код должен работать правильно. А каково назначение переменных, выделенных красным и откуда они берут свои начальные значения - остается только гадать... Поэтому, мне кажется, будет проще написать новый код, чем довести ваш до рабочего состояния.
|
|
|
|