Как сделать так, чтоб 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