Задать вопрос
@KoRgYaSh

Программа работает неправильно, что сделать, чтобы программа заработала?

Программа должна выбрать 3 самых низких числа, идущих подряд из введённых.
Вопрос вот в чём, программа при таких данных на ввод:
10
-5
-2
-1
6
3
0
-2
-2
-3
-3
0
5
8
по идее должна выводить
-5
-2
-1
так как в сумме они дают -8 и вводятся первее чем -2 -2 -3
но программа выводит именно
-2
-2
-3
удаляя в принципе вариант с -5 -2 -1 из словаря.
Я хочу чтобы было наоборот, чтобы из словаря удалялось именно -2 -2 -3, так как оно вводится позже.
Подскажите пожалуйста, как исправить
Программа:
import sys
from sys import stdin
lst1 = []
lst2 = []
for line in sys.stdin.readlines():
    replacedline = line.replace('\n', '')
    lst1.extend(replacedline.split(';'))
    intlst = [int(s) for s in lst1]
    intlst.append(100000)
    intlst.append(100000)
for i in range(len(intlst) - 2):
    lst2.append(intlst[i] + intlst[i + 1] + intlst[i + 2])
dict1 = {}
for j in range(len(intlst) - 2):
    dict1[lst2[j]] = intlst[j], intlst[j + 1], intlst[j + 2]
del dict1[100013]
del dict1[200008]
intlst = intlst[:-2]
lst2 = lst2[:-2]
keys = list(dict1.keys())
minkey = min(lst2)
answer = dict1.get(minkey)
for k in answer:
    print(k)
print()

Ввод делается через Ctrl + D
А и да, эти странные числа, которые я добавляю, а затем удаляю - это я искал как обойти IndexError. Если знаете как можно сделать это по-человечески - подскажите пожалуйста.
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
ElonMask2
@ElonMask2
Autor of Tesla Machini and SpaxeX
s = [10,
-5,
-2,
-1,
6,
3,
0,
-2,
-2,
-3,
-3,
0,
5,
8]

ss = []
window = 2
for _ in range(0, len(s)-2):
   window += 1
   frame = s[window - 3:window]
   ss.append(sum(frame))

mi = ss.index(min(ss))
slice = s[mi: 3 + mi]
print(slice)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы