Форум сайта python.su
Всем Коничива! Условие задачи:
“Дана последовательность целых чисел (вводится с клавиатуры), заканчивающаяся числом 0. Выведите эту последовательность в обратном порядке. При решении этой задачи нельзя пользоваться массивами и прочими динамическими структурами данных.Рекурсия вам поможет.”
Мое решение:
def reverse(l): if len(l) > 1: print(l[len(l)-1]) del l[len(l)-1] return reverse(l) else: return l[0] def ss(n): if n != 0: l.append(n) return ss(int(input())) elif n == 0 and len(l) == 0: return n elif n == 0 and len(l) != 0: l.append(n) return reverse(l) l = [] print(ss(int(input())))
Отредактировано kamikadze (Янв. 10, 2018 09:50:17)
Офлайн
>>> def print_reversed(seq, pos=0): ... elem = seq[pos] ... if elem != 0: ... print_reversed(seq, pos + 1) ... print(elem) ... >>> print_reversed([1, 2, 3, 4, 5, 0]) 0 5 4 3 2 1 >>>
kamikadzeДинамическая структура данных - это такая структура данных, количество элементов которой может меняться после её создания. Примеры: стек, очередь, дек, линейный список, множество, динамический вектор. В питоне многие из этих динамических структур реализованы в виде встроенных типов: стек - list, множество - set(), нагруженное множество - dict, динамический вектор - list. При этом есть и библиотечный тип: дек - collections.deque. А вот динамической структуры последовательность в питоне не реализовано, но частично её роль выполняют итераторы, так как не все операции над последовательностью можно выполнять с итератором (нельзя добавить элемент после создания, нельзя сделать подсматривание следующего элемента без его взятия и нельзя опустошить итератор в любое время и начать заново заполнять).
Кстати, рылся в интернете, так и не нашел толком, что такое ч точки зрения Python динамические и (не динамические) статические структуры данных.
Отредактировано py.user.next (Янв. 10, 2018 09:59:30)
Офлайн
py.user.nextСпасибо, конечно, но последовательность вводится с клавиатуры. Поэтому у меня и стоят операторы input().
Офлайн
kamikadzeПосле того, как ты ввёл последовательность, её надо подать в функцию обращения. То, что ты там трактуешь, что якобы ни одного списка быть не должно во всём коде, - это просто твои домыслы, потому что ты неправильно понял условия выполнения заданий подобного рода. Нельзя применять список внутри самой функции обращения для временного хранения элементов.
но последовательность вводится с клавиатуры. Поэтому у меня и стоят операторы input().
Отредактировано py.user.next (Янв. 10, 2018 10:03:06)
Офлайн
py.user.nextСогласен, что я там неправильно что-то понял или не понял. Но только то, что написано в условиях задачи, то я и читаю. А там написано: “При решении этой задачи нельзя пользоваться массивами и прочими динамическими структурами данных.” Тут не сказано, что их нельзя использовать только в пределах функций или каких-то других конкретных частях кода. Тут сказано: “в пределах задачи”. А додумывать за автора задачи никто не может, кроме него самого. ХЗ, что он там имел ввиду. Ну а то, что у вас есть опыт решения подобных задач, просто потому, что вы с этим уже сталкивались, не дает права “тыкать” остальным. А за разъяснения спасибо большое.
Офлайн
kamikadze
Но только то, что написано в условиях задачи, то я и читаю.
kamikadze
Дана последовательность целых чисел (вводится с клавиатуры), заканчивающаяся числом 0.
print_reversed(tuple(map(int, input().split())))
Отредактировано py.user.next (Янв. 10, 2018 10:33:36)
Офлайн
py.user.nextБлин, никогда бы не поверил, что незатейливое обсуждение логики кода может перейти в “халивар” интелектов.
Прикреплённый файлы: 1.png (38,4 KБ)
Офлайн
Скопируй сюда точно то, что туда отправил в последний раз.
Офлайн
def reverse(l): if len(l) > 1: print(l[len(l)-1]) del l[len(l)-1] return reverse(l) else: return l[0] def ss(n): if n != 0: l.append(n) return ss(int(input())) elif n == 0 and len(l) == 0: return n elif n == 0 and len(l) != 0: l.append(n) return reverse(l) l = [] print(ss(int(input())))
Офлайн
Отправь туда
def print_reversed(seq, pos=0): elem = seq[pos] if elem != 0: print_reversed(seq, pos + 1) print(elem) print_reversed(tuple(map(int, input().split())))
Офлайн