последовательность в питоне через for или while
1 2 3 5 6 8 11 12 13 15 16 18 и так до 40 то есть 3 цифры пишешь пропускает 1, 2 пишешь пропускает 1, 1 пишешь пропускает 2, и так по кругу до 40
и да я знаю что это для многих легко но я еще полный профан в программирование и многих команд еще не знаю( покрайней мере могу тут спросить
Ответы (2 шт):
когда не знаешь как делать - делай в лоб:
алгоритм:
мы помещаем в список последовательно по 3 числа, одно число пропускам, по 2 числа, одно число пропускам и т.д.
а затем выбираем из полученного списка только число не больше 40 (потому что в список могли попасть числа и больше)
res = []
pos = 0
while pos <= 40:
for i in range(0, 3):
pos += 1
res.append(pos)
pos += 1
for i in range(0, 2):
pos += 1
res.append(pos)
pos += 1
for i in range(0, 1):
pos += 1
res.append(pos)
pos += 2
print(*filter(lambda x: x <= 40, res))
тот же алгоритм, но слегка покороче
res = []
pos = 1
while pos <= 40:
res += [(pos + i) for i in range(0, 3)]
pos += 4
res += [(pos + i) for i in range(0, 2)]
pos += 3
res += [(pos + i) for i in range(0, 1)]
pos += 3
print(*filter(lambda x: x <= 40, res))
но честно говоря цикл while тут не нужен от слова совсем:
res = []
for pos in range(1, 40, 10):
res += [0 + pos + i for i in range(0, 3)]
res += [4 + pos + i for i in range(0, 2)]
res += [7 + pos + i for i in range(0, 1)]
print(*filter(lambda x: x <= 40, res))
Всё просто, так как у вас есть период 10:
for i in range(40):
if i % 10 in (4, 7, 9, 0):
continue
print(i, end=' ')
print()
Ну, или с list comprehensions:
res = [i for i in range(40) if i % 10 not in (4, 7, 9, 0)]
print(' '.join(map(str, res)))