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
14 changes: 14 additions & 0 deletions hw3_1.py
Original file line number Diff line number Diff line change
@@ -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('Введите второе число - ')))
16 changes: 16 additions & 0 deletions hw3_2.py
Original file line number Diff line number Diff line change
@@ -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))
11 changes: 11 additions & 0 deletions hw3_3.py
Original file line number Diff line number Diff line change
@@ -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)
35 changes: 35 additions & 0 deletions hw3_4.py
Original file line number Diff line number Diff line change
@@ -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))
24 changes: 24 additions & 0 deletions hw3_5.py
Original file line number Diff line number Diff line change
@@ -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)
9 changes: 9 additions & 0 deletions hw3_6.py
Original file line number Diff line number Diff line change
@@ -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), ' ')
72 changes: 72 additions & 0 deletions sudoku.py
Original file line number Diff line number Diff line change
@@ -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} подстановок')