From 4be27d223773e464603ea87edf2f79b4bf38ab0f Mon Sep 17 00:00:00 2001 From: pajjilykk Date: Mon, 23 Mar 2026 21:41:32 +0700 Subject: [PATCH] add lab 1 --- lab1.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 lab1.py diff --git a/lab1.py b/lab1.py new file mode 100644 index 0000000..6092296 --- /dev/null +++ b/lab1.py @@ -0,0 +1,60 @@ +from decimal import Decimal, InvalidOperation + + +def parse_int(value): + try: + # Пытаемся обработать как Decimal (поддерживает 1e32) + num = Decimal(value) + + # Проверяем, что это целое число (без дробной части) + if num != num.to_integral_value(): + raise ValueError("Число не является целым") + + return int(num) + + except InvalidOperation: + raise ValueError("Некорректный формат числа") + + +def get_numbers(): + while True: + raw = input("Введите 15 целых чисел через пробел: ").strip() + + if not raw: + print("Ошибка: ввод пустой. Попробуйте снова.\n") + continue + + parts = raw.split() + + if len(parts) != 15: + print(f"Ошибка: требуется ровно 15 чисел, получено {len(parts)}.\n") + continue + + numbers = [] + error_found = False + + for i, part in enumerate(parts, start=1): + try: + num = parse_int(part) + numbers.append(num) + except ValueError as e: + print(f"Ошибка в элементе #{i} ('{part}'): {e}") + error_found = True + break + + if error_found: + print("Попробуйте снова.\n") + continue + + return numbers + + +def main(): + nums = get_numbers() + nums.sort() + print("\nОтсортированный список:") + print(nums) + + +if __name__ == "__main__": + main()