Форум сайта python.su
Привет!
Решаю задачу с курса, и возникла вот такая оказия. Условия задачи:
Напишите программу, которая выводит часть последовательности 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 … (число повторяется столько раз, чему равно). На вход программе передаётся положительное целое число n — столько элементов последовательности должна отобразить программа. На выходе ожидается последовательность чисел, записанных через пробел в одну строку.
Например, если n = 7, то программа должна вывести 1 2 2 3 3 3 4.
Мой код:
n = int(input()) b = '' for i in range(0, n+1): b += (str(i) + ' ')*i c = (b[0:n *2]) print(c)
Офлайн
Код сыпется на входном числе 47 (например), то есть с того момента, когда появляются “10”, которые разбиваются на “1” и “0”.
Как этого избежать?
first_list = [41,42,43] second_list = [] for arg in first_list: second_list += str(arg) * 3 print(second_list)
Офлайн
тогда проблем не должно возникнутьВ таком случае на выходе тоже получается список, а необходимо чтобы были числа
Офлайн
Betonимеете ввиду строка должна получиться?
получается список, а необходимо чтобы были числа
Офлайн
Beton
В таком случае на выходе тоже получается список, а необходимо чтобы были числа
second_list = ['1', '1', '1', '2', '2', '2', '3', '3', '3'] for arg in second_list: print(int(arg), end =' ') 1 1 1 2 2 2 3 3 3
Офлайн
Спасибо ответившим. Но я продолжаю тупить
Код переписан, но продолжает оставаться прежняя проблема с “10” и “1” и “0”.
a = int(input()) b = [] for i in range(1, a+1): b += (str(i) + ' ') * i c = b[0:a*2] print(''.join(c), end = ' ')
Офлайн
shaptmos
собирать данные не в виде строки, а в виде списка
Betonтак внутри цикла вы по по прежнему работает со строкой
Код переписан, но продолжает оставаться прежняя проблема
a = int(input()) result = [] for i in range(1, a+1): temp_list = [] temp_list += [i] * i
Офлайн
Beton
Код переписан, но продолжает оставаться прежняя проблема с “10” и “1” и “0”.
b += (str(i) + ' ') * i
Офлайн
a = int(input(">> ")) result = [] for n in range(1, a + 1): seq = [n] * n # создать последовательность из n result.extend(seq) # добавить seq в результирующий список print(*result, sep=" ") # вывести результат
Отредактировано vrabey (Дек. 20, 2015 21:41:53)
Офлайн
ежели я правильно понимаю логику происходящего, сначала происходит сложение строк внутри скобок, каждое значение полученной строки передается в список последовательно i раз.Да
Офлайн