diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" index eaea0088..3a025c7c 100644 --- "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" +++ "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" @@ -28,3 +28,32 @@ Вы вместо трехзначного числа ввели строку (((. Исправьтесь Введите операцию (+, -, *, / или 0 для выхода): """ + +OPS = { + "+": lambda x, y: x+y, + "-": lambda x, y: x-y, + "*": lambda x, y: x*y, + "/": lambda x, y: x/y, +} + + +def calc(): + op = input("Введите операцию (+, -, *, / или 0 для выхода): ") + if op == "0": + return None + if op in OPS: + try: + x = float(input("Введите первое число: ")) + y = float(input("Введите первое число: ")) + res = OPS[op](x, y) + print(x, op, y, '=', res) + except ValueError: + print("Ошибка при вводе числа") + except ZeroDivisionError: + print("Деление на ноль") + else: + print("Неизвестная операция, повторите ввод") + return calc() + + +calc() diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" index c0840774..376863cb 100644 --- "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" +++ "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" @@ -16,3 +16,27 @@ Введите число: 123 Количество четных и нечетных цифр в числе равно: (1, 2) """ + + +def even_odd(digits): + even = odd = 0 + for d in digits: + if d % 2 == 0: + even += 1 + else: + odd += 1 + return even, odd + + +def count_even_odd(n, digits=None): + if digits is None: + digits = [] + if n == 0: + return even_odd(digits) + return count_even_odd(n//10, [n % 10] + digits) + + +max_n = int(input("Введите целое число: ")) +print("Считаем четные и нечетные цифры числа ", max_n) +n_even, n_odd = count_even_odd(max_n) +print(f"Четных {n_even}, нечетных {n_odd}") diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" index a3f170d6..332e1ac2 100644 --- "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" +++ "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" @@ -15,3 +15,14 @@ Введите число, которое требуется перевернуть: 123 Перевернутое число: 321 """ + + +def reverse(n, rev_str=""): + if n == 0: + return rev_str + return reverse(n // 10, rev_str + str(n % 10)) + + +max_n = int(input("Введите целое число: ")) +print("Запишем наоборот цифры числа ", max_n) +print(reverse(max_n)) diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" index 83482bdd..5160061f 100644 --- "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" +++ "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" @@ -9,3 +9,21 @@ Решите через рекурсию. Решение через цикл не принимается. Для оценки Отлично в этом блоке необходимо выполнить 5 заданий из 7 """ + + +# вычисление суммы непосредственно +def serial_sum(n, x=1.0, s=0.0): + if n == 0: + return s + return serial_sum(n-1, -0.5*x, x+s) + + +# и по формуле суммы геометрической прогрессии +def exact_sum(n): + return (1 - (-0.5)**n)/1.5 + + +max_n = int(input(f"Введите целое число: ")) +print(f"Считаем сумму {max_n} членов геометрической прогрессии") +print("Непосредственно: ", serial_sum(max_n)) +print("По формуле: ", exact_sum(max_n)) diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" index 89942335..33e2636f 100644 --- "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" +++ "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" @@ -18,3 +18,17 @@ Решите через рекурсию. Решение через цикл не принимается. Для оценки Отлично в этом блоке необходимо выполнить 5 заданий из 7 """ + + +def print_ascii(code=32, row=0): + if code == 128: + print() + return None + if row == 10: + print() + row = 0 + print(f"{code} - {chr(code)} ", end="") + return print_ascii(code+1, row+1) + + +print_ascii() diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" index 5d5f0035..b449ae9c 100644 --- "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" +++ "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" @@ -9,3 +9,22 @@ Для оценки Отлично в этом блоке необходимо выполнить 5 заданий из 7 Для оценки Отлично в этом блоке необходимо выполнить 5 заданий из 7 """ + + +from random import randint + + +def guess(number, attempts): + if attempts == 0: + print("Слишком много попыток, это было число ", number) + return -1 + n = int(input("> ")) + if n == number: + print("Да!") + return 0 + print("Меньше..." if n > number else "Больше...") + return guess(number, attempts-1) + + +print("Угадайте целое число от 0 до 100") +guess(randint(0, 100), 10) diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" index 7bd6493a..a59f68d6 100644 --- "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" +++ "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_7.py" @@ -6,3 +6,19 @@ Решите через рекурсию. Решение через цикл не принимается. Для оценки Отлично в этом блоке необходимо выполнить 5 заданий из 7 """ + + +def arith_sum(n, s=0): + if n == 0: + return s + return arith_sum(n-1, s+n) + + +def exact_sum(n): + return n * (n+1) // 2 + + +max_n = int(input(f"Введите целое число: ")) +print(f"Считаем сумму {max_n} членов арифметической прогресии") +print("Непосредственно: ", arith_sum(max_n)) +print("По формуле: ", exact_sum(max_n))