Skip to content

Lesson 7 #871

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

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
60 changes: 55 additions & 5 deletions lesson01/home_work/hw01_easy.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,55 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Зиновьев Максим Игоревич'

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

# Мне показалось логичным с точки зрения конструкции программы, сделать эту задачу первой.

while True:
userAge = int(input('Укажите Ваш возраст: '))
if userAge >= 18:
print('Доступ разрешен \n')
break
elif userAge < 18:
print('Извините, пользование данным ресурсом только с 18 лет')

# Хотел сделать проверку на то какой тип данных введен и отбрасывать назад если введено не число, но если убрать int
# в начале, то введенное значение в любом случае является строкой и не проходит проверку, как это обойти пока не
# придумал, попробую попозже что-то накрутить.

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

# код пишем тут...
userNumber = int(input('''Здравствуйте!
Данная программа выводит поочередно цифры введенного целого числа (в обратном порядке).
Введите ваше число:
'''))
print('Вы ввели: ', userNumber, ', это число состоит из:\n')
# создадим список в который будем помещать все цифры введенного числа
listNumber = []
while userNumber > 0:
remainder = userNumber % 10
# Начиная с конца напечатаем все цифры из которых состоит число
print (remainder)
userNumber //= 10
# Добавим в список все цифры, которые входят в наше число
listNumber.append(remainder)

# если вдруг пользователю принципиален порядок цифр как в числе, выведем в том порядке, в котором число вводили
userAnswer = input('Вы хотите чтоб программа вывела числа в обратном порядке? (да/нет): ')
if userAnswer == 'да':
listNumber.reverse()
# выстроим наш список в обратном порядке
print(listNumber)
elif userAnswer == 'нет':
print('ОК, идём дальше.\n')
else:
print('Программе не известна такая команда. Переходим к выполнению следующей программы.')


# Задача-2: Исходные значения двух переменных запросить у пользователя.
Expand All @@ -19,6 +61,14 @@
# print("a = ", b, "b = ", a) - это неправильное решение!


# Задача-3: Запросите у пользователя его возраст.
# Если ему есть 18 лет, выведите: "Доступ разрешен",
# иначе "Извините, пользование данным ресурсом только с 18 лет"
print('\nА эта программа меняет местами значения введенных чисел')
userNumber1 = int(input("Введите первое число: "))
userNumber2 = int(input("Введите второе число: "))
# Зададим дополнительную переменную, которая будет выступать в качестве временного хранилища
virtualNumber = userNumber2
userNumber2 = userNumber1
userNumber1 = virtualNumber
print('Мы поместили число из первой переменной во вторую и наоборот, вот что получилось: \n',
'Первое число стало: ', userNumber1, '\n А второе: ', userNumber2)


15 changes: 14 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,16 @@
# если точно известно, что её значение не изменялось?

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

# Единственное, что приходит в голову и подходит под условия, это бесконечность.
# Пришлось погуглить как её присвоить переменной.
# Подключим математический модуль

import math

# присвоим переменной a значение .inf - это бесконечность
a = math.inf

# Проверим все ли условия выполняются
if a == a**2 and a == a*2 and a > 999999:
print('Ура, это и правда - бесконечность')
69 changes: 68 additions & 1 deletion lesson01/home_work/hw01_normal.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Зиновьев Максим Игоревич'

# Подключим математический модуль для дальнейших изысканий
import math

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

userNumber = int(input('Эта программа выводит самую большую цифру в числе. Введите целое число: '))
print('Вы ввели: ', userNumber)
# Создадим список в который поместим все цифры числа
listNumber = []
while userNumber > 0:
remainder = userNumber % 10
userNumber //= 10
# запишем в список все цифры из которых состоит число
listNumber.append(remainder)

# зададим меременную в которую будем складировать поочередно каждое число из списка
number = 0

# зададим переменную в которую будем помещать самое большое число в данной итерации
maxNumber = listNumber.pop()

# Циклом for переберем все числа в нашем списке
for number in listNumber:
if number > maxNumber:
maxNumber = number
print('Самая большая цифра в заданном числе: ', maxNumber)

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

print('\nА эта программа меняет местами значения введенных чисел')
userNumber1 = int(input("Введите первое число: "))
userNumber2 = int(input("Введите второе число: "))
# Поменяем значения местами
userNumber1, userNumber2 = userNumber2, userNumber1
print('1. В данном исполнении, значение первой переменной, присвоилось второй переменной и наоборот: ',
userNumber1, userNumber2)

# Данное решение допустимо если нет необходимости сохранять то в каком перядке пользователь вводил переменные.
# Теперь пойдём по другому пути, сохраним числа в исходных переменных (для этого откатим предыдущие действия).
# Например соберем из наших переменных список и выведем значения в обратном порядке

print('2. А в этом мы откатим изменения в переменных к исходным и сделаем список, '
'из которого выведем переменные в обратном порядке с помощью цикла while:')
userNumber1, userNumber2 = userNumber2, userNumber1
userList = [userNumber1, userNumber2]
i = 1
lengthList = len(userList)
while i <= lengthList:
print(userList[-i])
i += 1


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

print('Эта программа вычисляет корень квадратного уравнения вида ax² + bx + c = 0.')
# Запросим у пользователя коэффициенты
coefA = int(input('Введите коэффициент a: '))
coefB = int(input('Введите коэффициент b: '))
coefC = int(input('Введите коэффициент c: '))
# Вычислим дискременант по формуле b^2 - 4ac
discretonaty = coefB ** 2 - 4 * coefA * coefC
print('Дискременант: ', discretonaty)

# Далее по формулам вычисляем корни уравнения при различных значениях дискременанта
if discretonaty == 0:
root = (-coefB) / (2 * coefA)
print('x1 = x2 =', root)
elif discretonaty > 0:
root1 = (- coefB + math.sqrt(discretonaty)) / (2 * coefA)
root2 = (- coefB - math.sqrt(discretonaty)) / (2 * coefA)
print('Уравнение имеет два корня: \nx1 =', root1, 'x2 =', root2)
else:
print('Решений уравнения с такими корнями - нет.')

29 changes: 29 additions & 0 deletions lesson02/home_work/hw02_easy.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@

__author__ = 'Зиновьев Максим Игоревич'

# Задача-1:
# Дан список фруктов.
# Напишите программу, выводящую фрукты в виде нумерованного списка,
Expand All @@ -13,13 +16,39 @@

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

fruitList = ["яблоко", "банан", "киви", "арбуз", "манго"]
print('\n1. Данная программа выводит пронумерованный список фруктов ', fruitList,
'и выравнивает наименование фруктов по правому краю (как продемонстрировано в примере)')
index = 1
for fruit in fruitList:
print('{}. {:>8}'.format(index, fruit))
index += 1

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

list1 = [12, 16, 8, 94, 12, 61, 34, 26, 58, 'один', "яблоко", "банан", "киви", "арбуз", "манго"]
list2 = [8, 14, 61, 'банан', 12, 'арбуз']
print('\n2. Данная программа удаляет из Список1: ', list1, '\nЭлементы которые есть в Список2: ', list2)
for i in list2:
while list1.count(i) != 0:
list1.remove(i)
print('И в результате получается вот такой список: ', list1)

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

list = [15, 16, 84, 31, 24, 63, 8, 49, 67, 35, 68]
print('''
3. Данная программа проверяет элементы Списка: [15, 16, 84, 31, 24, 63, 8, 49, 67, 35, 68]
следующим образом: если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два и помещает результат в новый список.''')
newList = []
for number in list:
if number % 2 == 0:
newList.append(number / 4)
else:
newList.append(number * 2)
print('Новый список: ', newList)
80 changes: 72 additions & 8 deletions lesson02/home_work/hw02_hard.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@

__author__ = 'Зиновьев Максим Игоревич'

import datetime

# Задание-1: уравнение прямой вида y = kx + b задано в виде строки.
# Определить координату y точки с заданной координатой x.

equation = 'y = -12x + 11111140.2121'
x = 2.5
# вычислите и выведите y
# Я напишу программу строго по условию, то-есть уравнение всегда задаётся по шаблону, шаг впрао, шаг в лево и fatalError
# при необходимости можно накрутить проверок, но на 2 и 3 задание ушло слишком много сил

# y = -12x + 11111140.2121
# x = 2.5

equation = input('1. Введите уравнение прямой: ')
posX = equation.find('x')
k = float(equation[4:posX])
b = float(equation[posX + 4:])
x = float(input('Введите кординату x: '))
y = k * x + b
print('Кордината y: ', y)


# Задание-2: Дата задана в виде строки формата 'dd.mm.yyyy'.
Expand All @@ -17,12 +32,28 @@
# (т.е. 2 символа для дня, 2 - для месяца, 4 - для года)

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

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

while True:
userAnswer = input('Введите дату')
if userAnswer.find('.') != 2:
print('Ошибочный формат даты, введите dd.mm.yyyy')
continue
elif userAnswer.rfind('.') != 5:
print('Ошибочный формат даты, введите dd.mm.yyyy')
continue
try:
date = datetime.datetime.strptime(userAnswer, '%d.%m.%Y')
print('Дата: ', date, 'корректна')
break
except ValueError:
print('Введена не корректная дата! Введите dd.mm.yyyy')
continue


# Задание-3: "Перевёрнутая башня" (Задача олимпиадного уровня)
Expand Down Expand Up @@ -53,4 +84,37 @@
# Выход: 6 2
#
# Вход: 11
# Выход: 5 3
# Выход: 5 3

room = int(input('''\n3. Вы стоите у лифта странной башни, вам известен номер комнаты, в которую вам надо,
но вы не знаете на каком она этаже.
Эта программа поможет вам сориентироваться в башне. Введите номер комнаты: '''))
# количество комнат нам пригодится в нескольких вычислениях, по этому сохраню его в ещё одной переменной
n = room
roomsBefore = 0
bloc = 0

# определяем количество комнат до интересующего нас блока
while n > 0:
bloc += 1
n = n - bloc**2
roomsBefore = roomsBefore + bloc**2
roomsBefore = roomsBefore - bloc**2

# определим номер этажа в блоке
numberInBloc = room - roomsBefore
floorInBloc = 1
while numberInBloc > bloc:
floorInBloc += 1
numberInBloc = numberInBloc - bloc

# определим номер этажа в башне
floorInTower = 0
while bloc > 0:
floorInTower = floorInTower + (bloc - 1)
bloc -= 1
floor = floorInTower + floorInBloc
print('Этаж: ', floor)
print('Номер комнаты слева на право: ', numberInBloc)


Loading