Skip to content
Closed
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
53 changes: 50 additions & 3 deletions lesson01/home_work/hw01_easy.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,58 @@

# Задача-1: Дано произвольное целое число, вывести поочередно цифры исходного числа
__author__ = 'Кашин Леонид Михайлович'

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

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

# '''
i = 0
digit = input('Enter the last few (at least three) digit of your phone number - ')
# print(len(digit))
while i < len(digit):
print(digit[i])
i += 1
# '''

# Задача-2: Исходные значения двух переменных запросить у пользователя.
# Поменять значения переменных местами. Вывести новые значения на экран.
# Не нужно решать задачу так: print("a = ", b, "b = ", a) - это неправильное решение!
# Подсказка:
# * постарайтесь сделать решение через дополнительную переменную
# или через арифметические действия
# Не нужно решать задачу так:
# print("a = ", b, "b = ", a) - это неправильное решение!
# '''
a = input('Input A = ')
b = input('Input B = ')

print('A = ', a)
print('B = ', b)

print('Follow my hands!')

x = a
a = b
b = x

# Задача-3: Запросите у пользователя его возраст. Если ему есть 18 лет, выведите: "Доступ разрешен",
print('A = ', a)
print('B = ', b)
# '''

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

print('Attantion!!! Please enter your answer only by digit!')
user_age = int(input('How old are you? - '))

if user_age >= 18:
print('Access granted!')
else:
p = 18 - user_age
print('Son, please come back in ' + str(p) + 'years')


17 changes: 16 additions & 1 deletion lesson01/home_work/hw01_hard.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@

__author__ = 'Кашин Леонид Михайлович'

# Задание-1:
# Ваня набрал несколько операций в интерпретаторе и получал результаты:
# Код: a == a**2
Expand All @@ -6,4 +9,16 @@
# Результат: True
# Код: a > 999999
# Результат: True
# Вопрос: Чему была равна переменная a, если точно известно, что её значение не изменялось?

# Вопрос: Чему была равна переменная a,
# если точно известно, что её значение не изменялось?

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

import math

a = math.inf
print(a == a**2)
print(a == a*2)
print(a > 999999)

80 changes: 73 additions & 7 deletions lesson01/home_work/hw01_normal.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,82 @@
__author__ = ''

__author__ = 'Кашин Леонид Михайлович'

# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа.
# Например, дается x = 58375. Нужно вывести максимальную цифру в данном числе, т.е. 8.
# Подразумевается, что мы не знаем это число заранее. Число приходит в виде целого беззнакового.
# Например, дается x = 58375.
# Нужно вывести максимальную цифру в данном числе, т.е. 8.
# Подразумевается, что мы не знаем это число заранее.
# Число приходит в виде целого беззнакового.
# Подсказки:
# * постарайтесь решить задачу с применением арифметики и цикла while;
# * при желании и понимании решите задачу с применением цикла for.

# '''
i = 0
x = 0
digit = input('Enter the last few (at least three) digit of your phone number - ')
# print(len(digit))
while i < len(digit):
if int(digit[i]) > x:
x = int(digit[i])
# print(digit[i])
i += 1
print(x)
# '''


# Задача-2: Исходные значения двух переменных запросить у пользователя.
# Поменять значения переменных местами. Вывести новые значения на экран.
# Решите задачу, используя только две переменные.
# Подсказки:
# * постарайтесь сделать решение через действия над числами;
# * при желании и понимании воспользуйтесь синтаксисом кортежей Python.
# '''
a = input('Input A = ')
b = input('Input B = ')
print('A = ', a)
print('B = ', b)
print('Follow my hands!')
# version 1
x = a
a = b
b = x
print('A = ', a)
print('B = ', b)
# version 2
a, b = b, a
print('A = ', a)
print('B = ', b)
# version 3
a = int(a)
b = int(b)
a = a + b
b = a - b
a = a - b
print('A = ', a)
print('B = ', b)
# '''


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

# '''
a = float(input('Input A = '))
b = float(input('Input B = '))
c = float(input('Enter C = '))

discrim = b ** 2 - 4 * a * c
# print(discrim)
if discrim > 0:
x1 = (-b + math.sqrt(discrim)) / (2 * a)
x2 = (-b - math.sqrt(discrim)) / (2 * a)
print("x1 = %.2f \nx2 = %.2f" % (x1, x2)) #этот синтаксис я подсмотрел, а где про это можно почитать?
elif discrim == 0:
x = -b / (2 * a)
print("x = %.2f" % x)
else:
print("There is no roots")
# '''
45 changes: 41 additions & 4 deletions lesson02/home_work/hw02_easy.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Задача-1:
# Дан список фруктов. Напишите программу, выводящую фрукты в виде нумерованного списка, выровненного по правой стороне
# Дан список фруктов.
# Напишите программу, выводящую фрукты в виде нумерованного списка,
# выровненного по правой стороне.

# Пример:
# Дано: ["яблоко", "банан", "киви", "арбуз"]
# Вывод:
Expand All @@ -8,11 +11,45 @@
# 3. киви
# 4. арбуз

# Подсказка: использует метод .format()
# Подсказка: воспользоваться методом .format()

# '''
supe = ["яблоко", "банан", "киви", "арбуз"]
for i, sup in enumerate(supe):
print(i+1,'{:>7}'.format(sup), sep=".")
print(" ", end='\n\n')
# '''

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

# '''
l1 = ["яблоко", "банан", "киви", "арбуз", 1, 2, 3, 4, [1, 2, 3], [4, 5, 6,]]
l2 = ["дыня", "банан", "груша", 5, 6, 7, 4, [7, 8, 9], [4, 5, 6,]]

for i, l in enumerate(l1):
for n in l2:
if l == n:
l1.pop(i)
break
print(l1, end='\n\n\n')
# '''

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

g = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a = []
for i in g:
if i % 2 > 0:
a.append(i * 2)
else:
a.append(i / 4)
for n, letter in zip(g, a):
print('{:>5} {:>10}'.format(n, letter))



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

'''
equation = 'y = -12x + 11111140.2121'
x = 2.5
# вычислите и выведите y
ravno = equation.find("=")+1
iks = equation.find("x")
plu = equation.find("+")+1
k = float(equation[ravno:iks])
b = float(equation[plu:])
y = k * x + b
print("К = ", k, "В = ", b, ", соответственно Y = ", y)
# '''

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

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

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

# Задание-3: "Перевернутая башня" (Задача олимпиадного уровня)
# date = '01.11.1985'
#
# # Примеры некорректных дат
# date = '01.22.1001'
# date = '1.12.1001'
# date = '-2.10.3001'
'''
while True:
user_data = input("Введите дату в формате dd.mm.yyyy, (например: 02.11.2013): ")
m31 = ['01', '03', '05', '07', '08', '10', '12']
if len(user_data) != 10 or user_data[2] != '.' or user_data[5] != '.':
print("ошибка ввода")
elif int(user_data[0:2]) not in range(1, 32) or int(user_data[3:5]) not in range(1, 13) or int(user_data[6:10]) not in range(1, 2020):
print("такой даты не бывает")
elif int(user_data[0:2]) == 31 and int(user_data[3:5]) not in m31:
print("Wrong mounth")
else :
break
print(user_data, "Корректно!")
# '''
# Задание-3: "Перевёрнутая башня" (Задача олимпиадного уровня)
#
# Вавилонцы решили построить удивительную башню — расширяющуюся к верху и содержащую бесконечное число этажей и комнат.
# Она устроена следующим образом — на первом этаже одна комната, затем идет два этажа,
# на каждом из которых по две комнаты, затем идёт три этажа, на каждом из которых по три комнаты и так далее:
# Вавилонцы решили построить удивительную башню —
# расширяющуюся к верху и содержащую бесконечное число этажей и комнат.
# Она устроена следующим образом — на первом этаже одна комната,
# затем идет два этажа, на каждом из которых по две комнаты,
# затем идёт три этажа, на каждом из которых по три комнаты и так далее:
# ...
# 12 13 14
# 9 10 11
Expand All @@ -33,7 +60,8 @@
# 2 3
# 1
#
# Эту башню решили оборудовать лифтом --- и вот задача: нужно научиться по номеру комнаты определять,
# Эту башню решили оборудовать лифтом --- и вот задача:
# нужно научиться по номеру комнаты определять,
# на каком этаже она находится и какая она по счету слева на этом этаже.
#
# Входные данные: В первой строчке задан номер комнаты N, 1 ≤ N ≤ 2 000 000 000.
Expand All @@ -45,4 +73,39 @@
# Выход: 6 2
#
# Вход: 11
# Выход: 5 3
# Выход: 5 3

room = int(input('Please enter the room number: '))
box = 0
pos = 1
etage = 1


while (pos + (box * box)) <= room: #Идём по квадратам, ищем нужный
pos += (box * box) #pos хранит номер первой ячейки в текущем квадрате
etage += box #Счётчик столбцов прирастает на число этих столбцов в квадрате
box += 1 #Квадраты считаются по одному
print(box, (pos + (box * box)), (box * box))

onetage = 1 #Храним приращение номера столбца внутри текущего квадрата

while (pos + (onetage * box)) <= room :
pos += onetage * box #pos хранит номер первой ячейки в текущем столбце
onetage += 1 #Увеличиваем приращение
print(onetage, (pos + (onetage * box)), (onetage * box))

etage += onetage - 1 #Регистрируем найденный столбец

place = 1 #Храним приращение номера ячейки в текущем столбце
while (pos + place) <= room :
place += 1
print(pos, (pos + place))
pos += place - 1

#Вывод данных
print('\tEtage:\t%s\n\tPlace:\t%s' % (etage, place) )
print('Position in the sequence: %s' % (pos))

# Решение нашел на GB https://geekbrains.ru/posts/babylon_task )
# в целом понял, но не все понял с математической точки зрения - например почему на последенем этапе, когда мы ищем место,
# приращение начинается с 2 единиц, а не с одной...
Loading