From 23cc7d6244ac7315925e6684f7f7660f9948bf8c Mon Sep 17 00:00:00 2001 From: danil_chuzhikov Date: Sun, 21 Jun 2020 11:23:59 +0300 Subject: [PATCH 1/6] hw2 --- .../task_1/task_1_1.py" | 23 + .../task_1/task_1_2.py" | 38 + .../task_2/task_2_1.py" | 11 + .../task_2/task_2_2.py" | 17 + .../task_3/task_3_1.py" | 11 + .../task_3/task_3_2.py" | 12 + .../task_4/task_4_1.py" | 10 + .../task_4/task_4_2.py" | 14 + .../task_5/task_5_1.py" | 11 + .../task_5/task_5_2.py" | 18 + .../task_6/task_6_1.py" | 19 + .../task_6/task_6_2.py" | 20 + .../task_7/task_7_1.py" | 1025 ++++++++++++++++- .../task_7/task_7_2.py" | 14 + .../task_8/task_8_1.py" | 22 + .../task_8/task_8_2.py" | 22 + .../task_9/task_9_1.py" | 26 + .../task_9/task_9_2.py" | 23 + 18 files changed, 1334 insertions(+), 2 deletions(-) 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/task_1_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/task_1_1.py" index eef38aad..9d53589f 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/task_1_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/task_1_1.py" @@ -32,3 +32,26 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ """ +type_op = None +sign = set('+-*/') +while True: + type_op = input("Введите операцию (+, -, *, / или 0 для выхода) : ") + if type_op == '0': + break + if type_op in sign: + env1 = int(input("Введите значение первой переменной : ")) + env2 = int(input("Введите значение второй переменной : ")) + if type_op == '+': + output = f"{env1} + {env2} = {env1 + env2}" + elif type_op == '-': + output = f"{env1} - {env2} = {env1 - env2}" + elif type_op == '*': + output = f"{env1} * {env2} = {env1 * env2}" + elif type_op == '/': + if env2 == 0: + output = 'Деление на 0 недопустимо' + else: + output = f"{env1} / {env2} = {env1 // env2}" + elif type_op == '0': + break + print(output) 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/task_1_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_1/task_1_2.py" index 342d0a7a..8bb15450 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/task_1_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_1/task_1_2.py" @@ -33,3 +33,41 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ + + +def recursion(): + """RECURSION""" + sign = set('+-*/') + type_op = input('Введите операцию (+, -, *, / или 0 для выхода) : ') + if type_op == '0': + return 0 + + if type_op in sign: + env1 = int(input("Введите значение первой переменной : ")) + env2 = int(input("Введите значение второй переменной : ")) + try: + if type_op == '+': + print(f'{env1} + {env2} = {env1 + env2}') + recursion() + elif type_op == '-': + print(f'{env1} - {env2} = {env1 - env2}') + recursion() + elif type_op == '*': + print(f"{env1} * {env2} = {env1 * env2}") + recursion() + elif type_op == '/': + if env2 == 0: + print('Деление на 0 недопустимо !!!') + recursion() + else: + print(f"{env1} / {env2} = {env1 // env2}") + recursion() + except ValueError: + print('Неверно указанные данные! Попробуйте снова : ') + recursion() + else: + print("Введены некорректные данные! Укажите корректное выражение : ") + recursion() + + +recursion() 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/task_2_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_2/task_2_1.py" index c2e12627..23528d23 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/task_2_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_2/task_2_1.py" @@ -12,3 +12,14 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ """ + +user_number = int(input('Введите натуральное число: ')) +count_even = 0 +count_odd = 0 +while user_number != 0: + if user_number % 10 % 2 == 0: + count_even += 1 + else: + count_odd += 1 + user_number = user_number // 10 +print(f"В числе {user_number} всего {count_odd+count_even} цифр, из которых {count_even} чётных и {count_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_2/task_2_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/task_2_2.py" index 893f1b5e..b5a74d41 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/task_2_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/task_2_2.py" @@ -15,3 +15,20 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ + + +def check_number(user_number, count_even=0, count_odd=0): + if user_number == 0: + return count_odd, count_even + else: + numeral = user_number % 10 + user_number = user_number // 10 + if numeral % 2 == 0: + count_even += 1 + return check_number(user_number, count_even, count_odd) + else: + count_odd += 1 + return check_number(user_number, count_even, count_odd) + + +print(f'Итого {check_number(112332)}') 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/task_3_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_3/task_3_1.py" index d7067abf..102f7d15 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/task_3_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_3/task_3_1.py" @@ -12,3 +12,14 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ """ + + +num = int(input("Ввеедите число")) +new_num = "" +while True: + if num == 0: + break + else: + new_num += str(num % 10) + num //= 10 +print(new_num) 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/task_3_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_3/task_3_2.py" index c139669e..080ee7fa 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/task_3_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_3/task_3_2.py" @@ -14,3 +14,15 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ + + +def revert(num, new_num=""): + if num == 0: + return new_num + else: + new_num += str(num % 10) + num //= 10 + return revert(num, new_num) + + +print(revert(1337)) 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/task_4_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_4/task_4_1.py" index 0a96b2c3..9fe9487f 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/task_4_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_4/task_4_1.py" @@ -8,3 +8,13 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ """ + +n = int(input("")) +start = 1 +summ = 0 +while n != 0: + summ += start + start = start / 2 * -1 + n -= 1 + +print(summ) 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/task_4_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_4/task_4_2.py" index 02adc999..245658d4 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/task_4_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_4/task_4_2.py" @@ -8,3 +8,17 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ + + +def mnozh(n, start=1, sum=0): + if n== 0: + return sum + else: + sum += start + start /= 2 * -1 + n -=1 + return mnozh(n,start,sum) + + +print(mnozh(55)) + \ No newline at end of file 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/task_5_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_5/task_5_1.py" index bc8285be..e0f5dd65 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/task_5_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_5/task_5_1.py" @@ -17,3 +17,14 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ """ +import string + +n = 32 +string_end = 0 +while n < 128: + print(f"{n} - {chr(n)}", sep='',end=' ') + string_end += 1 + if string_end == 10: + string_end = 0 + print() + n+=1 \ No newline at end of file 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/task_5_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_5/task_5_2.py" index feb0e323..3e571bc3 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/task_5_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_5/task_5_2.py" @@ -17,3 +17,21 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ + +def recur_method(from_symbol, to_symbol, output_str=''): + """Рекурсия""" + for i in range(from_symbol, to_symbol): + if i <= LAST_ASCII_NUM: + output_str += f'{i} - {chr(i)} ' + print(output_str) + if to_symbol < LAST_ASCII_NUM: + return recur_method(from_symbol + STEP, to_symbol + STEP) + + +first_ascii_num = 32 +LAST_ASCII_NUM = 127 +STEP = 10 + +print("Это вывод рекурсии: ") + +recur_method(first_ascii_num, first_ascii_num + STEP) 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/task_6_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_6/task_6_1.py" index ddbc867a..dcf915a6 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/task_6_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_6/task_6_1.py" @@ -7,3 +7,22 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ """ +import random +count_user = 0 +min_env = 0 +max_env = 100 +chislo = random.randint(min_env, max_env) +while count_user <= 10: + user_otv = int( + input("Попробуйте угадать число которое загадал компьютер (от 0 до 100): ")) + count_user += 1 + if user_otv > chislo: + print("Ваше число больше загаданного!!!") + elif user_otv < chislo: + print("Ваше чилсо меньше загаданного!!!") + elif user_otv == chislo: + print( + f"Мои поздравления!!! Вы угадали загаданное число за {count_user} попыток!") + break + +print(chislo) 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/task_6_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_6/task_6_2.py" index 30af7191..9ebe9bb1 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/task_6_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_6/task_6_2.py" @@ -7,3 +7,23 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ +import random + + +def guess_answer(count, numb): + + print(f"Попытка {count}") + answer = int(input("Введите число от 0 до 100: ")) + if count == 10 or answer == numb: + if answer == numb: + print("Верно!") + print(f"Загаданное число: {numb}") + else: + if answer > numb: + print(f"Загаданное число меньше чем {numb}") + else: + print(f"Загаданное число больше чем {numb}") + guess_answer(count + 1, numb) + + +guess_answer(1, random.randint(0, 100)) 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/task_7_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_7/task_7_1.py" index c8f24b6d..dd5196e8 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/task_7_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_7/task_7_1.py" @@ -1,7 +1,1028 @@ """ 7. Напишите программу, доказывающую или проверяющую, что для множества натуральных чисел выполняется равенство: 1+2+...+n = n(n+1)/2, -где n - любое натуральное число. + где n - любое натуральное число. -ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ +ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ + + +def checkin(n): + equality1 = 0 + for i in range(1, n + 1): + equality1 += i + equality2 = n * (n + 1) // 2 + print(f"Равенство: {equality1 == equality2}") + + +try: + n = int(input("Введите число n: ")) + checkin(n) +except ValueError: + print('Вы допустили ошибку при вводе значения. Попробуйте еще раз: ') + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/task_7_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_7/task_7_2.py" index 492fc7de..77241370 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/task_7_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_7/task_7_2.py" @@ -5,3 +5,17 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ + + +def checkin(n,equality1 = 0, equality2 = 1 ): + if equality1 == equality2: + return print(f"{equality1} = {equality2}") + elif equality1 < equality2 : + checkin(n, equality1+1, n * (n + 1) // 2) + + +try: + n = int(input("Введите число n: ")) + checkin(n) +except ValueError: + print('Вы допустили ошибку при вводе значения. Попробуйте еще раз: ') 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_8/task_8_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_8/task_8_1.py" index 6a6ae98c..ede209c5 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_8/task_8_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_8/task_8_1.py" @@ -12,3 +12,25 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ """ + + +def count_num(n, b): + count = 0 + for i in range(1, n + 1): + try: + m = int(input(f"Число {str(i)}: ")) + while m > 0: + if m % 10 == b: + count += 1 + m = m // 10 + except ValueError: + print("л") + print(f"Было введено {count} цифр '{b}'") + + +try: + N = int(input("Сколько будет чисел? - ")) + B = int(input("Какую цифру считать? - ")) + count_num(N, B) +except ValueError: + print("Введено неверное значение! ") 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_8/task_8_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_8/task_8_2.py" index c66ced94..9c83e44e 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_8/task_8_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_8/task_8_2.py" @@ -12,3 +12,25 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ +GL_COUNT = 0 + + +def count_num(n, b): + global GL_COUNT + if n == 0: + return f"Было введено {GL_COUNT} цифр {b}" + m = int(input(f"Число: ")) + while m > 0: + if m % 10 == b: + GL_COUNT += 1 + m = m // 10 + + return count_num(n-1, b) + + +try: + N = int(input("Сколько будет чисел? - ")) + B = int(input("Какую цифру считать? - ")) + print(count_num(N, B)) +except ValueError: + print("Вы вместо числа ввели строку (((. Исправьтесь") 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_9/task_9_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_9/task_9_1.py" index 414cd456..8e6d3eed 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_9/task_9_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_9/task_9_1.py" @@ -10,3 +10,29 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ ЦИКЛ """ + +def highest_sum(quant): + """Цикл""" + steps = 0 + max_sum = 0 + for _ in range(0, quant): + try: + numb = input("Введите очередное число: ") + summ = 0 + for i in numb: + summ += int(i) + if summ > max_sum: + max_sum = summ + highest_numb = numb + steps += 1 + except ValueError: + print("Введено недопустимое значение") + + return f"Наибольшее число по сумме цифр: {highest_numb}, сумма его цифр: {max_sum}" + + +try: + QUANT = int(input("Введите количество чисел: ")) + print(highest_sum(QUANT)) +except ValueError: + print("Введено недопустимое значение") 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_9/task_9_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_9/task_9_2.py" index 1ca50d66..f5ab82fa 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_9/task_9_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_9/task_9_2.py" @@ -10,3 +10,26 @@ ЗДЕСЬ ДОЛЖНА БЫТЬ РЕАЛИЗАЦИЯ ЧЕРЕЗ РЕКУРСИЮ """ + + +def recur_method(quantity, steps, highest_numb, max_sum): + summ = 0 + try: + numb = input("Введите число: ") + for i in numb: + summ += int(i) + if summ > max_sum: + max_sum = summ + highest_numb = numb + steps += 1 + if steps == quantity: + return f"Наибольшее число по сумме цифр: {highest_numb}, сумма его цифр: {max_sum}" + else: + return recur_method(quantity, steps, highest_numb, max_sum) + except ValueError: + print("Введено неверное значение") + + +STEPS = 0 +HIGHEST_NUMB = 0 +MAX_SUM = 0 From 5556518433af66f50ffa0340e11b42d63046da87 Mon Sep 17 00:00:00 2001 From: danil_chuzhikov Date: Sun, 21 Jun 2020 15:21:20 +0300 Subject: [PATCH 2/6] hw3 --- .../task_1.py" | 27 ++++++++++++++ .../task_2.py" | 21 +++++++++++ .../task_3.py" | 32 ++++++++++++++++- .../task_4.py" | 15 ++++++++ .../task_5.py" | 14 ++++++++ .../task_6.py" | 36 +++++++++++++++++++ 6 files changed, 144 insertions(+), 1 deletion(-) diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 a3eb8cb5..8228c103 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -14,3 +14,30 @@ В диапазоне 2-99: 12 чисел кратны 8 В диапазоне 2-99: 11 чисел кратны 9 """ + + +# вариант 1 +def task_1_1(): + lst_1 = list(range(2, 100)) + lst_2 = list(range(2, 10)) + for elem in lst_2: + numb = 0 + for i in lst_1: + if i % elem == 0: + numb += 1 + print(f"В диапазоне 2-99: {numb} чисел кратны {elem}") + + +task_1_1() + +print() + + +# вариант 2 +def task_1_2(): + for i in range(2, 10): + new_list = [el for el in range(2, 100) if el % i == 0] + print(f'В диапазоне 2-99: {len(new_list)} чисел кратны {i}') + + +task_1_2() diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 af8e1d66..ff64fa6c 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -10,3 +10,24 @@ Пример: Исходный массив: [8, 3, 15, 6, 4, 2], результат: [0, 3, 4, 5] """ + + +def task_2_1(orig_lst): + """Вариант 1""" + new_lst = [] + for elem in orig_lst: + if elem % 2 == 0: + new_lst.append(orig_lst.index(elem)) + print(f"Исходный массив: {orig_lst}, результат: {new_lst}") + + +def task_2_2(orig_lst): + """Вариант 2""" + print( + f"Исходный массив: {orig_lst}, результат: " + f"{[elem for elem in range(len(orig_lst)) if orig_lst[elem] % 2 == 0]}") + + +ORIG_LIST = [8, 3, 15, 6, 4, 2] +task_2_1(ORIG_LIST) +task_2_2(ORIG_LIST) diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 f987b9cc..a61aa0ec 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -1,4 +1,4 @@ -""" + """ Задание_3. В массиве случайных целых чисел поменять местами минимальный и максимальный элементы. @@ -11,3 +11,33 @@ 6 позиции, а минимальное число -49 стоит на 0 позиции [-49, 26, 41, 75, 23, 52, 88, 60, 69, -18] """ + +from random import randint + + +def task_3(lst): + """Задание 3""" + max_val = max(lst) + min_val = min(lst) + ind_max = lst.index(max_val) + ind_min = lst.index(min_val) + + print( + f'В данном массиве чисел максимальное число {max_val:4} стоит на {ind_max:4} позиции, ' + f'а минимальное число {min_val:4} стоит на {ind_min:4} позиции') + + print('Заменяем их') + print(lst) + + lst[ind_max], lst[ind_min] = min_val, max_val + ind_max = lst.index(max_val) + ind_min = lst.index(min_val) + print( + f'В данном массиве чисел максимальное число {max_val:4} стоит на {ind_max:4} позиции, ' + f'а минимальное число {min_val:4} стоит на {ind_min:4} позиции') + + print(lst) + + +LST = [randint(-100, 100) for i in range(10)] +task_3(LST) diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 d906bdaa..ed4416f6 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -3,3 +3,18 @@ Подсказка: можно применить ф-цию max с параметром key """ + +import random + + +def task_4(lst): + """Задача 4""" + print(f"Исходный массив: {lst}") + # key параметром функции max() является функция, которая вычисляет ключ, + # который используется для определения того, как ранжировать элементы. + numb = max(lst, key=lst.count) + print(f"Число {numb} встречается {lst.count(numb)} раза") + + +LST = [random.randint(-100, 100) for i in range(50)] +task_4(LST) diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 c6d2fdde..78e5aef5 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -8,3 +8,17 @@ Базовый список: [-55, -69, -5, 72, -41, -58, -79, 58, 74, 1] Максимальный отрицательный элемент в данном массиве = -5, его индекс 2 """ + +from random import randint + + +def task_5(lst_base): + """Задача 5""" + print(f'Базовый список: {lst_base}') + lst = [el for el in lst_base if el < 0] + print(f"Максимальный отрицательный элемент в данном массиве = {max(lst)}, " + f"его индекс {lst_base.index(max(lst))}") + + +LST_BASE = [randint(-100, 100) for i in range(10)] +task_5(LST_BASE) diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 923e89af..37bf50a1 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -13,3 +13,39 @@ Массив: [88, 58, 50, 77, 49, 6, 42, 67, 14, 79] Сумма элементов между минимальным (6) и максимальным (88) элементами: 234 """ + +from random import randint + + +def task_6(lst): + """Задача 6""" + + print(f"Массив: {lst}") + + min_index = 0 + max_index = 0 + step = 1 + common_sum = 0 + + for i in lst: + if lst[min_index] > i: + min_index = lst.index(i) + elif lst[max_index] < i: + max_index = lst.index(i) + + if max_index - min_index < 0: + step = -1 + + for i in lst[min_index + step:max_index:step]: + common_sum += i + + print( + f"Сумма элементов между минимальным ({lst[min_index]})", + f" и максимальным ({lst[max_index]}) элементами: {common_sum}" + ) + + +try: + NUM = int(input('Введите количество элементов в массиве: ')) + LST = [randint(1, 100) for x in range(NUM)] + task_6(LST) From c92693f703ab9a225763c9f0716759e0e35d16c5 Mon Sep 17 00:00:00 2001 From: danil_chuzhikov Date: Mon, 22 Jun 2020 20:20:58 +0300 Subject: [PATCH 3/6] append hw3 --- .../task_7.py" | 24 +++++++++++++ .../task_8.py" | 23 ++++++++++++ .../task_9.py" | 36 +++++++++++++++++++ 3 files changed, 83 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 7e93662d..cfc50ac4 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -7,3 +7,27 @@ Наименьший элемент: -86, встречается в этом массиве 1 раз Второй наименьший элемент: -73 """ + +from random import randint + + +def task_7(lst_base): + + print(f"Исходный массив: {lst_base}") + + min_1 = min(lst_base) + count = 0 + for el in lst_base: + if el == min_1: + lst_base.remove(el) + count += 1 + + print(f"Наименьший элемент: {min_1}, встречается в этом массиве {count} раз") + + if count == 1: + min_2 = min(lst_base) + print(f"Второй наименьший элемент: {min_2}") + + +LST_BASE = [randint(-100, 100) for i in range(10)] +task_7(LST_BASE) diff --git "a/\320\243\321\200\320\276\320\272 3.\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_8.py" "b/\320\243\321\200\320\276\320\272 3.\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_8.py" index e6e47a32..b0bd8a19 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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_8.py" +++ "b/\320\243\321\200\320\276\320\272 3.\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_8.py" @@ -36,3 +36,26 @@ [3, 3, 3, 3, 12] [3, 3, 3, 3, 12] """ + + +def task_8(): + """Задача 8""" + row_n = 5 + col_n = 4 + matrix = [] + for i in range(row_n): + string = [] + s = 0 + print(f"{i+1}-я строка: ") + for j in range(col_n): + n = int(input()) + s += n + string.append(n) + string.append(s) + matrix.append(string) + + for i in matrix: + print(i) + + +task_8() diff --git "a/\320\243\321\200\320\276\320\272 3.\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_9.py" "b/\320\243\321\200\320\276\320\272 3.\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_9.py" index 5380a1d5..224036a4 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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_9.py" +++ "b/\320\243\321\200\320\276\320\272 3.\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_9.py" @@ -11,3 +11,39 @@ [13, 12, 7, 15] минимальные значения по столбцам Максимальное среди них = 15 """ + +from random import randint + + +def task_9(row_numb, col_numb): + """Задача 9""" + + matrix = [] + # Создаем матрицу + for i in range(row_numb): + string = [] + for j in range(col_numb): + string.append(randint(0, 50)) + print(f'{string[j]:3}', end='') + matrix.append(string) + print() + + # Создаем список, в который будем заносить минимальные элементы по столбцам + min_lst = [] + # определяем минимальные элементы по столбцам + for i in range(col_numb): + min_l = [] + for j in range(row_numb): + min_l.append(matrix[j][i]) + min_lst.append(min(min_l)) + + print(f"{min_lst} минимальные значения по столбцам") + print(f"Максимальное среди них = {max(min_lst)}") + + +try: + ROW_NUMB = int(input("Задайте количество строк в матрице: ")) + COL_NUMB = int(input("Задайте количество столбцов в матрице: ")) + task_9(ROW_NUMB, COL_NUMB) +except ValueError: + print("Вы вместо числа ввели строку (((. Исправьтесь") From 4ad84bf91c21ea0863bffaadd91de9e5f3fbbfbe Mon Sep 17 00:00:00 2001 From: danil chuzhikov Date: Sun, 28 Jun 2020 13:22:50 +0300 Subject: [PATCH 4/6] hw 4 --- .../task_1.py" | 51 +++++++++++++++ .../task_2.py" | 65 +++++++++++++++++++ 2 files changed, 116 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 4. \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 4. \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 ad375e7b..c26f5e3c 100644 --- "a/\320\243\321\200\320\276\320\272 4. \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 4. \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" @@ -11,4 +11,55 @@ ВНИМАНИЕ: ЗАДАНИЯ, В КОТОРЫХ БУДУТ ГОЛЫЕ ЦИФРЫ ЗАМЕРОВ (БЕЗ АНАЛИТИКИ) БУДУТ ПРИНИМАТЬСЯ С ОЦЕНКОЙ УДОВЛЕТВОРИТЕЛЬНО +--------------------------------------------------------------------------------------------------------------------- +Задание_1. В диапазоне натуральных чисел от 2 до 99 определить, +сколько из них кратны каждому из чисел в диапазоне от 2 до 9. + +Подсказка: используйте вложенный цикл + +Пример: +В диапазоне 2-99: 49 чисел кратны 2 +В диапазоне 2-99: 33 чисел кратны 3 +В диапазоне 2-99: 24 чисел кратны 4 +В диапазоне 2-99: 19 чисел кратны 5 +В диапазоне 2-99: 16 чисел кратны 6 +В диапазоне 2-99: 14 чисел кратны 7 +В диапазоне 2-99: 12 чисел кратны 8 +В диапазоне 2-99: 11 чисел кратны 9 """ + + +from timeit import Timer + + +def task_1_1(): + lst_1 = list(range(2, 100)) + lst_2 = list(range(2, 10)) + for elem in lst_2: + numb = 0 + for i in lst_1: + if i % elem == 0: + numb += 1 + print(f"В диапазоне 2-99: {numb} чисел кратны {elem}") + + +# вариант 2 +def task_1_2(): + for i in range(2, 10): + new_list = [el for el in range(2, 100) if el % i == 0] + print(f'В диапазоне 2-99: {len(new_list)} чисел кратны {i}') + + +t1 = Timer("task_1_1()", "from __main__ import task_1_1") +# task_1_1 : 0.5289953999999999 milliseconds +print("task_1_1 :", t1.timeit(number=1000), "milliseconds") +print('\n \n \n') +t2 = Timer("task_1_2()", "from __main__ import task_1_2") +# task_1_2 : 0.19618209999999991 millisecond +print("task_1_2 :", t2.timeit(number=1000), "millisecond") + +# Вложенный цикл в функции task_1_1 сказывается на производительности алгоритма Так же регистрация доп переменных в +# первой функции будет замедлять выполнениe алгоритма. Генератор в цикле максимально хорошо смотрится как оптимальное +# решение данной задачи т.к. Все необходимые операции и условия укладываются в конструкцию генератора, +# да и кода писать нужно порядком меньше. Генератор выигрывает у вложенных циклов примерно в 2.5 раза, +# о чем свидетельствуют показатели t1 и t2. diff --git "a/\320\243\321\200\320\276\320\272 4. \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 4. \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 01c0b79d..9012ec54 100644 --- "a/\320\243\321\200\320\276\320\272 4. \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 4. \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" @@ -12,3 +12,68 @@ ВНИМАНИЕ: ЗАДАНИЯ, В КОТОРЫХ БУДУТ ГОЛЫЕ ЦИФРЫ ЗАМЕРОВ (БЕЗ АНАЛИТИКИ) БУДУТ ПРИНИМАТЬСЯ С ОЦЕНКОЙ УДОВЛЕТВОРИТЕЛЬНО """ +import timeit + + +def eratosfen(i): + + n = 2 + l = 10000 + sieve = [x for x in range(l)] + sieve[1] = 0 + while n < l: + if sieve[n] != 0: + m = n * 2 + while m < l: + sieve[m] = 0 + m += n + n += 1 + return [p for p in sieve if p != 0][i - 1] + + +def isPrime(n): + if n % 2 == 0: + return n == 2 + d = 3 + while d * d <= n and n % d != 0: + d += 2 + return d * d > n + + +def without_eratosfen(i): + i = int(i) + start_num = 2 + slt = [] + s = 0 + while s != i: + if isPrime(start_num): + slt.append(start_num) + s += 1 + start_num += 1 + return slt[s - 1] + + +i = int(input('i- ')) +print( + timeit.timeit( + "eratosfen(i)", + setup="from __main__ import eratosfen, i", + number=100)) +print( + timeit.timeit( + "without_eratosfen(i)", + setup="from __main__ import without_eratosfen, i", + number=100)) + +# 0.4782986 - 10 eratosfen() +# 0.0009734000000003462 - 10 without_eratosfen() + +# 0.4783588000000001 - 100 eratosfen() +# 0.024854699999999674 - 100 without_eratosfen() + +# 0.4787002 - 1000 eratosfen() +# 0.7335972000000002 - 1000 without_eratosfen() + +# При работе с поиском простых чисел малого порядкового номера лучше +# не использовать решето Эратосфена т.к данный алгоритм производителен при работе с большими индексами, а при работе с +# малыми, он уступает аналогу. From 7685cf36288db4528eb3d77e8e2fd85fed6fcc28 Mon Sep 17 00:00:00 2001 From: danil chuzhikov Date: Sun, 28 Jun 2020 13:35:37 +0300 Subject: [PATCH 5/6] hw5 --- .../task_1.py" | 67 +++++++++++++++++++ .../task_2.py" | 48 +++++++++++++ 2 files changed, 115 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 5. \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 5. \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 82b46bcf..049eb483 100644 --- "a/\320\243\321\200\320\276\320\272 5. \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 5. \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" @@ -25,3 +25,70 @@ Предприятия, с прибылью ниже среднего значения: Копыта """ + +""" +1. Пользователь вводит данные о количестве предприятий, их наименования и прибыль +за 4 квартала (т.е. 4 отдельных числа) для каждого предприятия. +Программа должна определить среднюю прибыль (за год для всех предприятий) +и вывести наименования предприятий, чья прибыль выше среднего и отдельно +вывести наименования предприятий, чья прибыль ниже среднего. + +Подсказка: +Для решения задачи обязательно примените какую-нибудь коллекцию из модуля collections +Для лучшее освоения материала можете даже сделать несколько решений этого задания, +применив несколько коллекций из модуля collections +""" + + +import collections + + +def calc(): + n = int(input("Введите количество предприятий для расчета прибыли: ")) + d = dict() + a = 1 + + for i in range(n): + name = input("Введите название предприятия: ") + pr = input( + "через пробел введите прибыль данного предприятия\n" + "за каждый квартал(Всего 4 квартала): ") + profit = pr.split(" ") + d[name] = profit + a += 1 + print() + + fab = collections.Counter(d) + + b = 0 + t = 0 + for i in fab: + summ = 0 + for j in fab[i]: + summ += int(j) + fab[i] = summ + t += summ + b += 1 + sec = t / b + + print("Средняя годовая прибыль всех предприятий: " + str(sec)) + bigger = [] + smaller = [] + for i in fab: + if int(fab[i]) >= sec: + bigger.append(i) + else: + smaller.append(i) + + print("Предприятия, с прибылью выше среднего значения: ", end="") + for i in bigger: + print(i, end=" ") + print() + print() + print("Предприятия, с прибылью ниже среднего значения: ", end="") + for i in smaller: + print(i, end=" ") + print() + + +calc() diff --git "a/\320\243\321\200\320\276\320\272 5. \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 5. \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 35add0f1..7c7ad512 100644 --- "a/\320\243\321\200\320\276\320\272 5. \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 5. \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" @@ -11,3 +11,51 @@ Также попробуйте решить задачу вообще без collections и применить только ваши знания по ООП (в частности по перегрузке методов) """ + +""" +2. Написать программу сложения и умножения двух шестнадцатеричных чисел. +При этом каждое число представляется как массив, элементы которого это цифры числа. +Например, пользователь ввёл A2 и C4F. Сохранить их как [‘A’, ‘2’] и [‘C’, ‘4’, ‘F’] соответственно. +Сумма чисел из примера: [‘C’, ‘F’, ‘1’], произведение - [‘7’, ‘C’, ‘9’, ‘F’, ‘E’]. + +Подсказка: +Для решения задачи обязательно примените какую-нибудь коллекцию из модуля collections +Для лучшее освоения материала можете даже сделать несколько решений этого задания, +применив несколько коллекций из модуля collections +Также попробуйте решить задачу вообще без collections и применить только ваши знания по ООП +(в частности по перегрузке методов) + +Пример: +Введите первое число: A2 +Введите второе число: C4F +Сумма: deque(['C', 'F', '1']) +Произведение: deque(['7', 'C', '9', 'F', 'E']) +""" + +from collections import deque + + +def hex_sum(x, y): + x = "".join([i for i in x]) + y = "".join([i for i in y]) + s = hex((int(float.fromhex(x) + float.fromhex(y)))) + s = deque(s[2::].upper()) + print(f"Сумма: {s}") + + +def hex_mul(x, y): + x = "".join([i for i in x]) + y = "".join([i for i in y]) + s = hex((int(float.fromhex(x) * float.fromhex(y)))) + s = deque(s[2::].upper()) + print(f"Произведение: {s}") + + +try: + x = deque(input("Введите первое число: ")) + y = deque(input("Введите второе число: ")) + + hex_sum(x, y) + hex_mul(x, y) +except ValueError: + print("Ошибка ввода!") From 72614119875fd72cd36f341a1de53ca972f9e86f Mon Sep 17 00:00:00 2001 From: danil chuzhikov Date: Sat, 4 Jul 2020 15:53:02 +0300 Subject: [PATCH 6/6] hw7 --- .../task_1.py" | 33 +++++++++++++ .../task_2.py" | 47 +++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 7. \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 7. \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 07560cfa..5e3c5b63 100644 --- "a/\320\243\321\200\320\276\320\272 7. \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 7. \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" @@ -9,3 +9,36 @@ Подсказка: обратите внимание, сортируем не по возрастанию, как в примере, а по убыванию """ + + +from random import randint +import timeit + + +def bubble(lst): + n = 1 + while n < len(lst): + for i in range(len(lst)-n): + if lst[i] < lst[i+1]: + lst[i], lst[i+1] = lst[i+1], lst[i] + n += 1 + return lst + + +def new_bubble(lst): + n = 1 + sort = 0 + while n < len(lst): + for i in range(len(lst)-n): + if lst[i] < lst[i+1]: + lst[i], lst[i+1] = lst[i+1], lst[i] + sort = 1 + if sort == 0: + break + n +=1 + return lst + +lst = [randint(-100, 100) for i in range(100)] + +print(timeit.timeit("bubble(lst)", setup="from __main__ import bubble, lst")) +print(timeit.timeit("new_bubble(lst)", setup="from __main__ import new_bubble, lst")) diff --git "a/\320\243\321\200\320\276\320\272 7. \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 7. \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 73d3dfb6..7c42e31b 100644 --- "a/\320\243\321\200\320\276\320\272 7. \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 7. \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" @@ -8,3 +8,50 @@ Исходный - [46.11436617832828, 41.62921998361278, 18.45859540989644, 12.128870723745806, 8.025098788570562] Отсортированный - [8.025098788570562, 12.128870723745806, 18.45859540989644, 41.62921998361278, 46.11436617832828] """ + +import random + + +def merge(lst): + + if len(lst) > 1: + mid = len(lst) // 2 + left_half = lst[:mid] + right_half = lst[mid:] + + merge(left_half) + merge(right_half) + + i = 0 + j = 0 + k = 0 + while i < len(left_half) and j < len(right_half): + if left_half[i] < right_half[j]: + lst[k] = left_half[i] + i = i + 1 + else: + lst[k] = right_half[j] + j = j + 1 + k = k + 1 + + while i < len(left_half): + lst[k] = left_half[i] + i = i + 1 + k = k + 1 + + while j < len(right_half): + lst[k] = right_half[j] + j = j + 1 + k = k + 1 + return lst + +try: + n = int(input("Введите число элементов: ")) +except ValueError: + print('Ошибка ввода, Введите цифру') + +LST = [random.random()*50 for i in range(n)] + +print(f"Стартовый массив - {LST}") +NEW_LST = merge(LST) +print(f"Исходный массив - {NEW_LST}") \ No newline at end of file