
"""
Сформувати функцію для введення з клавіатури послідовності чисел і виведення її на екран у зворотному порядку
(завершаючий символ послідовності – крапка).

Виконав Іваненко Андрій Вадимович
"""


""" У даному випадку для визначення функції доцільніше використати ітерації ніж рекурсію, оскільки функція визначена 
через рекурсію витрачає більше часу та займає більше пам'яті за функцію визначену через ітерації. """


def array_output1():  # Функція для введення послідовності чисел і виведення її у зворотному порядку (через ітерації)

    array = []
    print("Введіть послідовність чисел (введення продовжується до першої введеної крапки):")
    while True:  # Введення послідовності чисел до першої крапки
        try:
            item = input()
            if item == ".":
                break
            else:
                array.append(int(item))
        except ValueError:
            print("Вводьте правильні дані!")

    print("Задана послідовність чисел у зворотному порядку дорівнює: ", end="")
    for i in range(len(array) - 1, -1, -1):  # Виведення послідовності чисел у зворотному порядку
        print(array[i], end="")
        if i != 0:
            print(", ", end="")
        else:
            print(".")


def array_output2():  # Функція для введення послідовності чисел і виведення її у зворотному порядку (через рекурсію)

    def array_input(a):  # Внутрішня функція для введення послідовності чисел

        try:
            item = input()

            """ Якщо введена крапка, то функція array_input посилається на функцію array_output, 
            яка призначена для виведення послідовності чисел. """
            if item == '.':
                print("Задана послідовність чисел у зворотному порядку дорівнює: ", end="")
                return array_output(a)

            a.append(int(item))
            return array_input(a)
        except ValueError:
            print("Вводьте правильні дані!")
            return array_input(a)

    def array_output(a):  # Внутрішня функція для виведення послідовності чисел у зворотному порядку
        if len(a) > 1:
            print(a.pop(), end=", ")
            return array_output(a)
        else:
            print(f"{a.pop()}.")
            return

    """ Функція array_output2 посилається на внутрішню функцію array_input, 
    яка призначена для введення послідовності чисел. """
    print("Введіть послідовність чисел (введення продовжується до першої введеної крапки):")
    array_input([])


answer = '1'
while answer == '1':

    print("(Визначено через ітерації):")
    array_output1()
    print("(Визначено через рекурсію):")
    array_output2()

    answer = input("Введіть '1' для повторення:")
