# Создайте собственный класс-исключение, который должен проверять содержимое списка на наличие только чисел.
# Проверить работу исключения на реальном примере. Необходимо запрашивать у пользователя данные и заполнять список
# только числами. Класс-исключение должен контролировать типы данных элементов списка. Примечание: длина списка не
# фиксирована. Элементы запрашиваются бесконечно, пока пользователь сам не остановит работу скрипта, введя, например,
# команду “stop”. При этом скрипт завершается, сформированный список с числами выводится на экран. Подсказка: для
# данного задания примем, что пользователь может вводить только числа и строки. При вводе пользователем очередного
# элемента необходимо реализовать проверку типа элемента и вносить его в список, только если введено число.
# Класс-исключение должен не позволить пользователю ввести текст (не число) и отобразить соответствующее сообщение.
# При этом работа скрипта не должна завершаться.

class NotNumErr(Exception):
    pass


def notnumber(user_inp):
    check = user_inp
    if check.startswith("-"):
        check = check[1:]
    check = check.split(".")
    if len(check) > 2 or not check[0].isnumeric() or (len(check) == 2 and not check[1].isnumeric()):
        raise NotNumErr("Введенный элемент не будет добавлен в список.")


r_list = []

while True:
    next_num = input("Введите число или q для завершения: ")
    try:
        if next_num == "q":
            print(f"Список:{r_list} . Программа завершена.")
            break
        notnumber(next_num)
        r_list.append(next_num)
    except NotNumErr as err:
        print(err)
