Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lesson7 #870

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
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