From f13617d087dc474acb06a0e0a82cc592a1b8eb3d Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Mon, 13 Sep 2021 09:36:01 +0300 Subject: [PATCH 01/11] branch create hw3 --- hw3_1.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hw3_1.py diff --git a/hw3_1.py b/hw3_1.py new file mode 100644 index 0000000..e69de29 From da0d2145fe3b0a39bbf7807d0330deedb0bf59bb Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Mon, 13 Sep 2021 14:22:54 +0300 Subject: [PATCH 02/11] add 1 hw3_1 --- hw3_1.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw3_1.py b/hw3_1.py index e69de29..ecfab52 100644 --- a/hw3_1.py +++ b/hw3_1.py @@ -0,0 +1,14 @@ +# 1. Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. +# Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль. + +def divide(num_1, num_2): + try: + num_1, num_2 = int(num_1), int(num_2) + divide_num = num_1 / num_2 + except ValueError: + return 'valueerror' + except ArithmeticError: + return 'Делить на ноль нельзя! Марти, возникнет Сингулярность, и весь пространственно-временной континиум будет уничтожен' + return round(divide_num, 2) + +print(divide(input('Введите первое число - '), input('Введите второе число - '))) \ No newline at end of file From a05ff9eb621c7bc542b0df0c4098cfc9706b30b7 Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Mon, 13 Sep 2021 14:52:59 +0300 Subject: [PATCH 03/11] add hw3_2 --- hw3_2.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 hw3_2.py diff --git a/hw3_2.py b/hw3_2.py new file mode 100644 index 0000000..4b494c0 --- /dev/null +++ b/hw3_2.py @@ -0,0 +1,12 @@ +def get_person(**kwargs): + return ' '.join(kwargs.values()) + + +name = input('Введите name - ') +surname = input('Введите surname - ') +birthday = input('Введите birthday - ') +city = input('Введите city - ') +email = input('Введите email - ') +phone = input('Введите phone - ') + +print(get_person(name=name, surname=surname, birthday=birthday, city=city, email=email, phone=phone)) \ No newline at end of file From 7a8a73f85981b070c646135b8027c92f7a4acb83 Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Mon, 13 Sep 2021 14:55:24 +0300 Subject: [PATCH 04/11] add hw3_2 changed --- hw3_2.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw3_2.py b/hw3_2.py index 4b494c0..8b6a5c4 100644 --- a/hw3_2.py +++ b/hw3_2.py @@ -1,3 +1,7 @@ +# 2. Реализовать функцию, принимающую несколько параметров, описывающих данные пользователя: +# имя, фамилия, год рождения, город проживания, email, телефон. +# Функция должна принимать параметры как именованные аргументы. Реализовать вывод данных о пользователе одной строкой. + def get_person(**kwargs): return ' '.join(kwargs.values()) From 31373f3a3627b080660cf43143da039ecaf33799 Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Mon, 13 Sep 2021 15:27:28 +0300 Subject: [PATCH 05/11] add hw3_3 --- hw3_3.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 hw3_3.py diff --git a/hw3_3.py b/hw3_3.py new file mode 100644 index 0000000..2b23ca4 --- /dev/null +++ b/hw3_3.py @@ -0,0 +1,11 @@ +# 3. Реализовать функцию my_func(), которая принимает три позиционных аргумента, +# и возвращает сумму наибольших двух аргументов. + +def my_func(num1, num2, num3): + my_list = [num1, num2, num3] + return sum(sorted(my_list)[1:]) + + +print(my_func(42, 11, 5)) + +my_func = lambda num_1, num_2, num_3: (num_1 + num_2 + num_3) - min(num_1, num_2, num_3) From e3b554917e776c5932c7394a2b6ae8b6f5c8a069 Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Mon, 13 Sep 2021 16:17:17 +0300 Subject: [PATCH 06/11] add hw3_4 --- hw3_4.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 hw3_4.py diff --git a/hw3_4.py b/hw3_4.py new file mode 100644 index 0000000..2a7f847 --- /dev/null +++ b/hw3_4.py @@ -0,0 +1,35 @@ +# 4. Программа принимает действительное положительное число x и целое отрицательное число y. +# Необходимо выполнить возведение числа x в степень y. +# Задание необходимо реализовать в виде функции my_func(x, y). +# При решении задания необходимо обойтись без встроенной функции возведения числа в степень. +# Подсказка: попробуйте решить задачу двумя способами. +# Первый — возведение в степень с помощью оператора **. +# Второй — более сложная реализация без оператора **, предусматривающая использование цикла. + + +# # x = 2 +# # y = -4 +# # result = 1 +# +# for i in range(abs(y)): +# result *=x +# +# if n < 0: +# re = 1 / result +# +# print((f'{x}**{n}==', result)) +# +# def pow_func(x, y): +# if y == 0: +# return 1 +# else: +# factor = pow_func(x, y//2) +# if y%2 == 0: +# return factor * factor +# else: +# return factor * factor * x + +def my_pow_func(x, y): + return 1 if y == 0 else my_pow_func(x, y + 1) * 1 / x + +print(my_pow_func(3, -2)) \ No newline at end of file From b575fd8b8c80be758de5807f5a7c36263d4c5377 Mon Sep 17 00:00:00 2001 From: MikeSalnikov <90041153+MikeSalnikov@users.noreply.github.com> Date: Mon, 13 Sep 2021 16:19:50 +0300 Subject: [PATCH 07/11] Delete hw3_4.py --- hw3_4.py | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 hw3_4.py diff --git a/hw3_4.py b/hw3_4.py deleted file mode 100644 index 2a7f847..0000000 --- a/hw3_4.py +++ /dev/null @@ -1,35 +0,0 @@ -# 4. Программа принимает действительное положительное число x и целое отрицательное число y. -# Необходимо выполнить возведение числа x в степень y. -# Задание необходимо реализовать в виде функции my_func(x, y). -# При решении задания необходимо обойтись без встроенной функции возведения числа в степень. -# Подсказка: попробуйте решить задачу двумя способами. -# Первый — возведение в степень с помощью оператора **. -# Второй — более сложная реализация без оператора **, предусматривающая использование цикла. - - -# # x = 2 -# # y = -4 -# # result = 1 -# -# for i in range(abs(y)): -# result *=x -# -# if n < 0: -# re = 1 / result -# -# print((f'{x}**{n}==', result)) -# -# def pow_func(x, y): -# if y == 0: -# return 1 -# else: -# factor = pow_func(x, y//2) -# if y%2 == 0: -# return factor * factor -# else: -# return factor * factor * x - -def my_pow_func(x, y): - return 1 if y == 0 else my_pow_func(x, y + 1) * 1 / x - -print(my_pow_func(3, -2)) \ No newline at end of file From 9acb85e7c5fb161b0b7db9f36e756fd989852e6a Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Mon, 13 Sep 2021 16:20:00 +0300 Subject: [PATCH 08/11] add hw3_4 --- hw3_4.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw3_4.py b/hw3_4.py index 2a7f847..6446599 100644 --- a/hw3_4.py +++ b/hw3_4.py @@ -29,7 +29,7 @@ # else: # return factor * factor * x -def my_pow_func(x, y): - return 1 if y == 0 else my_pow_func(x, y + 1) * 1 / x +def my_func(x, y): + return 1 if y == 0 else my_func(x, y + 1) * 1 / x -print(my_pow_func(3, -2)) \ No newline at end of file +print(my_func(3, -2)) \ No newline at end of file From fdb1a507c5fc8da487e4561da3ec750604f46e46 Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Mon, 13 Sep 2021 16:22:34 +0300 Subject: [PATCH 09/11] add hw3_4_new --- hw3_4.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw3_4.py b/hw3_4.py index 2a7f847..6446599 100644 --- a/hw3_4.py +++ b/hw3_4.py @@ -29,7 +29,7 @@ # else: # return factor * factor * x -def my_pow_func(x, y): - return 1 if y == 0 else my_pow_func(x, y + 1) * 1 / x +def my_func(x, y): + return 1 if y == 0 else my_func(x, y + 1) * 1 / x -print(my_pow_func(3, -2)) \ No newline at end of file +print(my_func(3, -2)) \ No newline at end of file From 443fcbabbd3542139bdc84b179dbaa883f813632 Mon Sep 17 00:00:00 2001 From: MikeSalnikov Date: Tue, 14 Sep 2021 13:48:44 +0300 Subject: [PATCH 10/11] add hw3_5 +hw3_6 --- hw3_5.py | 24 ++++++++++++++++++++++++ hw3_6.py | 9 +++++++++ 2 files changed, 33 insertions(+) create mode 100644 hw3_5.py create mode 100644 hw3_6.py diff --git a/hw3_5.py b/hw3_5.py new file mode 100644 index 0000000..8b72a52 --- /dev/null +++ b/hw3_5.py @@ -0,0 +1,24 @@ +def sum_num(): + s = 0 + while True: + in_list = input('Введите число или Q для выхода: ').split() + for num in in_list: + if num == 'q': + return s + else: + try: + s+= int(num) + except ValueError: + print('Чтобы выйти из программы нажмите q - ') + + print(f'Сумма чисел = {s}') + + +num = 0 +try: + while num != 'q': + for i in map(int, input('Для выхода наберите q Введите числе используя пробел - ').split()): + num += i + print(num) +except ValueError: + print(num) \ No newline at end of file diff --git a/hw3_6.py b/hw3_6.py new file mode 100644 index 0000000..a769361 --- /dev/null +++ b/hw3_6.py @@ -0,0 +1,9 @@ +def int_func(word): + latin_char = 'qwertyuiopasdfghjklzxcvbnm' + return word.title() if not set(word).difference(latin_char) else False + +words = input('Введите строку из слов разделенных пробелами ').split() +for w in words: + result = int_func(w) + if result: + print(int_func(w), ' ') \ No newline at end of file From 20af3efdf7b51a946d30e604b7941996cfa697de Mon Sep 17 00:00:00 2001 From: MikeSalnikov <90041153+MikeSalnikov@users.noreply.github.com> Date: Tue, 11 Oct 2022 13:45:46 +0300 Subject: [PATCH 11/11] Create sudoku.py --- sudoku.py | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 sudoku.py diff --git a/sudoku.py b/sudoku.py new file mode 100644 index 0000000..786e44e --- /dev/null +++ b/sudoku.py @@ -0,0 +1,72 @@ +board = [ + [7,8,0,4,0,0,1,2,0], + [6,0,0,0,7,5,0,0,9], + [0,0,0,6,0,1,0,7,8], + [0,0,7,0,4,0,2,6,0], + [0,0,1,0,5,0,9,3,0], + [9,0,4,0,6,0,0,0,5], + [0,7,0,3,0,0,0,1,2], + [1,2,0,0,0,7,4,0,0], + [0,4,9,2,0,6,0,0,7] +] +tries = 0 +def print_board(bo): + for i in range(len(bo)): + if i%3 == 0 and i !=0: + print('- - - - - - - - - - -') + for j in range(len(bo[i])): + if j%3 == 0 and j !=0: + print('| ', end='') + if j == 8: + print(bo[i][j]) + else: + print(str(bo[i][j]) + ' ', end='') + +def find_empty(bo): + for i in range(len(bo)): + for j in range(len(bo[i])): + if bo[i][j] == 0: + return(i,j) #строка, столбец + return None + +def valid(bo, num, pos): + #Проверка строки + for i in range(len(bo[0])): + if bo[pos[0]][i] == num and pos[1] != i: + return False + #Проверка столбца + for i in range(len(bo[0])): + if bo[i][pos[1]] == num and pos[0] != i: + return False + #Проверка квадрата + box_x = pos[1] // 3 + box_y = pos[0] // 3 + + for i in range(box_y*3, box_y*3+3): + for j in range(box_x*3, box_x*3+3): + if bo[i][j] == num and (i,j) != pos: + return False + return True + +def solve(bo): + global tries + find = find_empty(bo) + if not find: + return True + else: + row, col = find + for i in range(1,10): + if valid(bo, i, (row,col)): + bo[row][col] = i + tries += 1 + if solve(bo): + return True + + bo[row][col] = 0 + return False + +print_board(board) +solve(board) +print('________________') +print_board(board) +print(f'Решено за {tries} подстановок')