Skip to content
23 changes: 21 additions & 2 deletions lesson01/home_work/hw01_easy.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Субботин Андрей Владимирович'

# Задача-1: Дано произвольное целое число (число заранее неизвестно).
# Вывести поочередно цифры исходного числа (порядок вывода цифр неважен).
# Подсказки:
# * постарайтесь решить задачу с применением арифметики и цикла while;
# * при желании решите задачу с применением цикла for.

# код пишем тут...
num = 49845968549654165196878945165498674549874987747898

while num:
num_elment = num % 10
print(num_elment)
num = num // 10


# Задача-2: Исходные значения двух переменных запросить у пользователя.
Expand All @@ -18,7 +23,21 @@
# Не нужно решать задачу так:
# print("a = ", b, "b = ", a) - это неправильное решение!

a = input('Enter first number: \n')
b = input('Enter second number: \n')

a, b = b, a
print ('Now first number is: ', a, ' and the secoend is: ', b)


# Задача-3: Запросите у пользователя его возраст.
# Если ему есть 18 лет, выведите: "Доступ разрешен",
# иначе "Извините, пользование данным ресурсом только с 18 лет"


age = input('How old are you: \n')

if int(age) > 18:
print('Access granted.')
else:
print("Sorry, this source is only for people older then 18.")
8 changes: 7 additions & 1 deletion lesson01/home_work/hw01_hard.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Субботин Андрей Владимирович'

# Задание-1:
# Ваня набрал несколько операций в интерпретаторе и получал результаты:
Expand All @@ -14,3 +14,9 @@
# если точно известно, что её значение не изменялось?

# Подсказка: это значение точно есть ;)

a = float('inf')

print(a == a**2)
print(a == a*2)
print(a > 999999)
41 changes: 40 additions & 1 deletion lesson01/home_work/hw01_normal.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Субботин Андрей Владимирович'

from math import sqrt

# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа.
# Например, дается x = 58375.
Expand All @@ -10,6 +12,20 @@
# * постарайтесь решить задачу с применением арифметики и цикла while;
# * при желании и понимании решите задачу с применением цикла for.

num = 7854632568455841123657
max_num = 0

while num:
num_element = num % 10
if num_element == 9:
print("Maximum number is 9")
break
else:
if num_element > max_num:
max_num = num_element
num = num // 10
else:
print(max_num)

# Задача-2: Исходные значения двух переменных запросить у пользователя.
# Поменять значения переменных местами. Вывести новые значения на экран.
Expand All @@ -18,10 +34,33 @@
# * постарайтесь сделать решение через действия над числами;
# * при желании и понимании воспользуйтесь синтаксисом кортежей Python.

a = input('Enter first number: \n')
b = input('Enter second number: \n')

a, b = b, a
print ('Now first number is: ', a, ' and the secoend is: ', b)

# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида
# ax² + bx + c = 0.
# Коэффициенты уравнения вводятся пользователем.
# Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math:
# import math
# math.sqrt(4) - вычисляет корень числа 4

print('Введите коэффициенты для квадратного уравнения (ax² + bx + c = 0):')
a = float(input('a =\n '))
b = float(input('b =\n '))
c = float(input('c =\n '))

discr = b ** 2 - 4 * a * c
print('Дискриминант D = %.2f' % discr)

if discr > 0:
x1 = (-b + sqrt(discr)) / (2 * a)
x2 = (-b - sqrt(discr)) / (2 * a)
print('x1 = %.2f \nx2 = %.2f' % (x1, x2))
elif discr == 0:
x = -b / (2 * a)
print('x = %.2f' % x)
else:
print('Корней нет')
21 changes: 21 additions & 0 deletions lesson02/home_work/hw02_easy.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
__author__ = 'Субботин Андрей Владимирович'

# Задача-1:
# Дан список фруктов.
# Напишите программу, выводящую фрукты в виде нумерованного списка,
Expand All @@ -12,14 +14,33 @@
# 4. арбуз

# Подсказка: воспользоваться методом .format()
fruits = ["яблоко", "банан", "киви", "арбуз"]

for i, fruit in enumerate(fruits):
print('{}.{:>7}'.format(i + 1, fruit))

# Задача-2:
# Даны два произвольные списка.
# Удалите из первого списка элементы, присутствующие во втором списке.

list_a = {1, 2, 3, 4, 5,}
list_b = {3, 4, 5, 6, 7,}

print(list_a.difference(list_b))

# Задача-3:
# Дан произвольный список из целых чисел.
# Получите НОВЫЙ список из элементов исходного, выполнив следующие условия:
# если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два.

list_c = [1, 2, 3, 4, 5, 6, 7, 8, 9,]
list_d = []

for itm in list_c:
print(itm)
if (itm % 2) == 0:
list_d.append(itm / 4)
else:
list_d.append(itm * 2)

print(list_d)
64 changes: 36 additions & 28 deletions lesson02/home_work/hw02_hard.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,3 @@
# Задание-1: уравнение прямой вида y = kx + b задано в виде строки.
# Определить координату y точки с заданной координатой x.

equation = 'y = -12x + 11111140.2121'
x = 2.5
# вычислите и выведите y


# Задание-2: Дата задана в виде строки формата 'dd.mm.yyyy'.
# Проверить, корректно ли введена дата.
# Условия корректности:
# 1. День должен приводиться к целому числу в диапазоне от 1 до 30(31)
# (в зависимости от месяца, февраль не учитываем)
# 2. Месяц должен приводиться к целому числу в диапазоне от 1 до 12
# 3. Год должен приводиться к целому положительному числу в диапазоне от 1 до 9999
# 4. Длина исходной строки для частей должна быть в соответствии с форматом
# (т.е. 2 символа для дня, 2 - для месяца, 4 - для года)

# Пример корректной даты
date = '01.11.1985'

# Примеры некорректных дат
date = '01.22.1001'
date = '1.12.1001'
date = '-2.10.3001'


# Задание-3: "Перевёрнутая башня" (Задача олимпиадного уровня)
#
# Вавилонцы решили построить удивительную башню —
Expand All @@ -33,6 +6,11 @@
# затем идет два этажа, на каждом из которых по две комнаты,
# затем идёт три этажа, на каждом из которых по три комнаты и так далее:
# ...
#
# 27 28 29 30
# 23 24 25 26
# 19 20 21 22
# 15 16 17 18
# 12 13 14
# 9 10 11
# 6 7 8
Expand All @@ -53,4 +31,34 @@
# Выход: 6 2
#
# Вход: 11
# Выход: 5 3
# Выход: 5 3

from math import sqrt

def tower_elevator(seecing_room):
start_room = 0
floors = 0

for floore_group in range(1,2000000):
rooms_count = start_room + floore_group ** 2
if seecing_room in range(start_room, rooms_count + 1):

if int((seecing_room - start_room) % sqrt(rooms_count - start_room)):
current_group_flor = int((seecing_room - start_room) // sqrt(rooms_count - start_room)) + 1
else:
current_group_flor = int((seecing_room - start_room) // sqrt(rooms_count - start_room))

if int((seecing_room - start_room) % sqrt(rooms_count - start_room)):
room = int((seecing_room - start_room) % sqrt(rooms_count - start_room))
else:
room = int(sqrt(rooms_count - start_room))

print(current_group_flor + floors , room)

break

start_room = start_room + floore_group ** 2
floors += floore_group


tower_elevator(25)
54 changes: 54 additions & 0 deletions lesson02/home_work/hw02_normal.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,79 @@
__author__ = 'Субботин Андрей Владимирович'

# Задача-1:
# Дан список, заполненный произвольными целыми числами, получите новый список,
# элементами которого будут квадратные корни элементов исходного списка,
# но только если результаты извлечения корня не имеют десятичной части и
# если такой корень вообще можно извлечь
# Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2]

import math, random

list_a = [2, -5, 8, 9, -25, 25, 4]
list_b = []

for num in list_a:
if num >= 0 and not (math.sqrt(num) % 1):
list_b.append(int(math.sqrt(num)))

print(list_b)

# Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013.
# Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года.
# Склонением пренебречь (2000 года, 2010 года)

month = {'01': 'января', '02': 'февраля', '03': 'марта',
'04': 'апреля', '05': 'мая', '06': 'июня',
'07': 'июля', '08': 'августа', '09': 'сентября',
'10': 'октября', '11': 'ноября', '12': 'декабря',
}
days = {'01': 'первое', '02': 'второе', '03': 'третье',
'04': 'четвертое', '05': 'пятое', '06': 'шестое',
'07': 'седьмое', '08': 'восьмое', '09': 'девятое',
'10': 'десятое', '11': 'одиннадцатое', '12': 'двенадцатое',
'13': 'тринадцатое', '14': 'четырнадцатое', '15': 'пятнадцатое',
'16': 'шестнадцатое', '17': 'семнадцатое', '18': 'восемнадцатое',
'19': 'девятнадцатое', '20': 'двадцатое', '21': 'двадцать первое',
'21': 'двадцать второе', '21': 'двадцать третье', '21': 'двадцать четвертое',
'21': 'двадцать пятое', '21': 'двадцать шестое', '21': 'двадцать седьмое',
'21': 'двадцать восьмое', '21': 'двадцать девятое', '30': 'тридцатое',
'31': 'тридцать первое',
}

date = '02.11.2013'
date_lst = date.split('.')

print(days[date_lst[0]], month[date_lst[1]], date_lst[2], 'года')

# Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами
# в диапазоне от -100 до 100. В списке должно быть n - элементов.
# Подсказка:
# для получения случайного числа используйте функцию randint() модуля random

num_count = 100
list_c = []

for num in range(num_count):
list_c.append(random.randint(-100, 100))

print(list_c)

# Задача-4: Дан список, заполненный произвольными целыми числами.
# Получите новый список, элементами которого будут:
# а) неповторяющиеся элементы исходного списка:
# например, lst = [1, 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 2, 4, 5, 6]
# б) элементы исходного списка, которые не имеют повторений:
# например, lst = [1 , 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 4, 6]

list_d = {}
list_e = []

for num in list_c:

list_d = set(list_c)

if list_c.count(num) == 1:
list_e.append(num)

print(list_d)
print(list_e)
18 changes: 15 additions & 3 deletions lesson03/home_work/hw03_easy.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@
# Для решения задачи не используйте встроенные функции и функции из модуля math.

def my_round(number, ndigits):
pass

operate_num = number * 10**ndigits

if operate_num % 1 >= 0.5:
return (operate_num + 1) // 1 / 10**ndigits
else:
return operate_num // 1 / 10**ndigits

print(my_round(0.0045, 3))


print(my_round(2.1234567, 5))
print(my_round(2.1999967, 5))
Expand All @@ -20,9 +28,13 @@ def my_round(number, ndigits):
# !!!P.S.: функция не должна НИЧЕГО print'ить

def lucky_ticket(ticket_number):
pass
if (int(str(ticket_number)[-1]) + int(str(ticket_number)[-2])) == \
(int(str(ticket_number)[0]) + int(str(ticket_number)[1])):

return True
else:
return False

print(lucky_ticket(123006))
print(lucky_ticket(12321))
print(lucky_ticket(436751))
print(lucky_ticket(436751))
1 change: 1 addition & 0 deletions lesson03/home_work/hw03_hard.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# Вывод: 1 1/3



# Задание-2:
# Дана ведомость расчета заработной платы (файл "data/workers").
# Рассчитайте зарплату всех работников, зная что они получат полный оклад,
Expand Down
Loading