diff --git a/hw3_1.py b/hw3_1.py new file mode 100644 index 0000000..ecfab52 --- /dev/null +++ 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 diff --git a/hw3_2.py b/hw3_2.py new file mode 100644 index 0000000..8b6a5c4 --- /dev/null +++ b/hw3_2.py @@ -0,0 +1,16 @@ +# 2. Реализовать функцию, принимающую несколько параметров, описывающих данные пользователя: +# имя, фамилия, год рождения, город проживания, email, телефон. +# Функция должна принимать параметры как именованные аргументы. Реализовать вывод данных о пользователе одной строкой. + +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 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) diff --git a/hw3_4.py b/hw3_4.py new file mode 100644 index 0000000..6446599 --- /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_func(x, y): + return 1 if y == 0 else my_func(x, y + 1) * 1 / x + +print(my_func(3, -2)) \ No newline at end of file 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 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} подстановок')