Как сделать так, чтоб 3 числа складывались столько раз, сколько нужно, по порядку?

f1+f2+f3+f1+f2+f3 и так столько раз, сколько мне нужно, ввел 10 будет: f1+f2+f3+f1+f2+f3+f1+f2+f3+f1


Ответы (5 шт):

Автор решения: ganz
var=input('введите выражение')
#2+2*2+2
print(eval(var))
#8

upd eval не безопасная функция её исспользование на непроверенных данных не допустимо

→ Ссылка
Автор решения: Zhihar

понял, что имел автор кажется

т.е. если вводят 5, то будет f1 + f2 + f3 + f1 + f2, а если введут 1, то будет просто f1

fs = [1, 2, 3]

n = 10

res = 0

for i in range(n):
    res += fs[i % len(fs)]

print(res)

код можно свернуть в 1 строчку

fs = [1, 2, 3]

n = 10

res = sum(fs[i % len(fs)] for i in range(n))

print(res)
→ Ссылка
Автор решения: alex
f1 = 1 # Первое число
f2 = 2 # Второе число
f3 = 3 # Третье число
sm = 0 # Сумма
n = int( input( 'Количество раз ' ) ) # Вводим повторы
i = 0 # Обнуляем счётчик
while i < n :  # Повторяем до тех пор, пока не закончатся повторы
    i += 1 # Увеличиваем счётчик
    if i % 3 == 1 :
        sm += f1 # При первом повторе добавляем число 1
    if i % 3 == 2 :
        sm += f2 # При втором повторе добавляем число 2
    if i % 3 == 0 :
        sm += f3 # Далее добавляем число 3 и так далее
print( sm ) # Выводим результат
→ Ссылка
Автор решения: CrazyElf

Ещё вариант:

lst = [1, 2, 3, 1, 2, 3]
n = 10
print(sum((lst * (n // len(lst) + 1))[:n]))

Вывод:

19

В чём суть:

  • "размножаем" список с запасом, так, чтобы там было заведомо немного больше элементов, чем нам нужно
  • берём с помощью среза из получившегося списка сколько нужно элементов
  • суммируем и печатаем
→ Ссылка
Автор решения: Stanislav Volodarskiy

itertools.cycle строит бесконечный цикл. itertools.islice отрезает нужной длины кусок:

@>>> print(*itertools.islice(itertools.cycle((1, 10, 100)), 10))
1 10 100 1 10 100 1 10 100 1

@>>> sum(itertools.islice(itertools.cycle((1, 10, 100)), 10))
334
→ Ссылка