Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions Урок 2. Практическое задание/task_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
24 changes: 24 additions & 0 deletions Урок 2. Практическое задание/task_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}")
11 changes: 11 additions & 0 deletions Урок 2. Практическое задание/task_3.py
Original file line number Diff line number Diff line change
Expand Up @@ -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))
18 changes: 18 additions & 0 deletions Урок 2. Практическое задание/task_4.py
Original file line number Diff line number Diff line change
Expand Up @@ -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))
14 changes: 14 additions & 0 deletions Урок 2. Практическое задание/task_5.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
19 changes: 19 additions & 0 deletions Урок 2. Практическое задание/task_6.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
16 changes: 16 additions & 0 deletions Урок 2. Практическое задание/task_7.py
Original file line number Diff line number Diff line change
Expand Up @@ -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))