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

Lesson03 #880

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
27 changes: 27 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 @@ -13,13 +15,38 @@

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

print("Задача-1:")
NumList = ["яблоко", "банан", "киви", "арбуз"]
for Item in NumList:
print('{:}. {:>6}'.format(str(NumList.index(Item)+1), Item))




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

print("Задача-2:")
NumList1 = ["яблоко", "банан", "киви", "арбуз"]
NumList2 = ["банан", "киви"]
for Item in NumList2:
if Item in NumList1:
NumList1.remove(Item)
print(NumList1)

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

print("Задача-3:")
NumList1 = [1, 2, 3, 4, 5]
NumList2 = []
for Num in NumList1:
if Num % 2 == 0:
NumList2.append(Num/4)
else:
NumList2.append(Num*2)
print(NumList2)

81 changes: 74 additions & 7 deletions lesson02/home_work/hw02_hard.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
__author__ = 'Насонов Алексей Сергеевич'

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

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

print("Задача-1:")
x = 2.5
y = -12*x + 11111140.2121
print("Координата точки: x = {0}, y = {1}".format(x,y))



# Задание-2: Дата задана в виде строки формата 'dd.mm.yyyy'.
# Проверить, корректно ли введена дата.
Expand All @@ -17,12 +25,41 @@
# (т.е. 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'

print("Задача-2:")
DaysInToMonth = [30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
date = '21.11.1985'
List = date.split(".")
# Проверка по формату
if len(List[0]) != 2 or len(List[1]) != 2 or len(List[2]) != 4:
print("Формат не соответсвует dd.mm.yyyy")
quit()

D = int(List[0])
M = int(List[1])
Y = int(List[2])

# Проверяем месяц
if M not in list(range(1, 13)):
print("Некоректно определен месяц")
quit()
# Проверяем день
elif D not in list(range(1, DaysInToMonth[M-1]+1)):
print("Некоректно определен день")
quit()
# Проверяем год
elif Y not in list(range(1, 10000)):
print("Некоректно определен год")
quit()

print("Дата {} введена корректно".format(date))



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


print("Задача-3:")
# Задаем номер квартиры
Num = 11

# Определяем в каком квадрате находится квартира (сумму квадратов n натуральных чисел)
# Правильнее бы было найти обратную функцию, но как-то не получилось. Поэтому ищем решение по исходной функции
for n in range(1, 2000):
MaxKvart = n * (n + 1) * (2 * n + 1) / 6
if MaxKvart >= Num:
break

print("Номер исходной квартиры:", Num)
print("Номер квадрата:", n)
print("Номер последней квартиры(в правом верхнем углу):", int(MaxKvart))
# Определяем верхний этаж этого квадрата (сумму n натуральных чисел)
MaxEtag = n * (n + 1) / 2

print("Этаж самой последней квартиры в этом квадрате", int(MaxEtag))
# Определяем искомый этаж и смещение слева на право на этаже у искомой квартиры
DeltaEtag = (MaxKvart - Num) // n
RightOffset = (MaxKvart - Num) % n
print("Дельта этаж", int(DeltaEtag))
print("Смещение квартиры справа", int(RightOffset))

print("\nРЕШЕНИЕ:")
print("Искомый этаж:", int(MaxEtag-DeltaEtag))
print("Номер квартиры на этаже слева:", int(n-RightOffset))

100 changes: 100 additions & 0 deletions lesson02/home_work/hw02_normal.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,125 @@
__author__ = 'Насонов Алексей Сергеевич'

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

print("Задача-1:")
NumList1 = [1, 2, 3, 4, 5, -10, 25]
NumList2 = []
import math
for Num in NumList1:
if Num >= 0:
Res = math.sqrt(Num)
if (float(Res) % 1) == 0:
NumList2.append(int(Res))
print(NumList2)

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

print("Задача-2:")
days = ["первое",
"второе",
"третье",
"четвертое",
"пятое",
"шестое",
"седьмое",
"восьмое",
"девятое",
"десятое",
"одиннадцатое",
"двенадцатое",
"тринадцатое",
"четырнадцатое",
"пятнадцатое",
"шестнадцатое",
"семьнадцатое",
"восемнадцатое",
"девятнадцатое",
"двадцатое",
"двадцать первое",
"двадцать второе",
"двадцать третье",
"двадцать четвертое",
"двадцать пятое",
"двадцать шестое",
"двадцать седьмое",
"двадцать восьмое",
"двадцать девятое",
"тридцатое",
"тридцать первое"]
month = ["января",
"февраля",
"марта",
"апреля",
"мая",
"июня",
"июля",
"августа",
"сентября",
"октября",
"ноября",
"декабря"]
date = "26.02.1975"
D = int((date.split("."))[0])
M = int((date.split("."))[1])
Y = (date.split("."))[2]
print(date)
print("Дата: {0} {1} {2} года".format(days[D-1],month[M-1],Y))


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

print("Задача-3")
import random
NumList = []
# Задаем количество элементов списка случайных значений
n = 10
for item in range(n):
NumList.append(random.randint(-100, 100))
print(NumList)

# Задача-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]

print("Задача-4")
NumList1 = [1, 2, 4, 5, 6, 2, 5, 2]
NumList_a = []
NumList_b = []
NumList_temp = NumList1.copy()
# Выполняем проверку первого элемента и удаляем его,
# если элемент встречается в исходном списке несколько раз,
# то заносим его только в новый список NumList_a
# если элемент встречается в исходном списке только один раз,
# то добавляем его в списки NumList_a, NumList_b
while NumList_temp:
Num = NumList_temp[0]
NumList_temp.remove(Num)
if Num in NumList_temp:
NumList_a.append(Num)
while Num in NumList_temp:
NumList_temp.remove(Num)
else:
NumList_a.append(Num)
NumList_b.append(Num)

print("Исходный список:")
print(NumList1)
print("Список с уникальными элементами:")
print(NumList_a)
print("Список без повторяющихся элементов:")
print(NumList_b)

26 changes: 26 additions & 0 deletions lesson03/home_work/data/fruits_А
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Абиу
Абрикос
Авокадо
Айва
Аки
Алиберция
Алыча
Амбарелла
Американский абрикос
Американский орех
Ананас
Аннона горная
Аннона колючая
Аннона сетчатая
Аннона черимола
Аннона чешуйчатая
Антильский крыжовник
Апельсин
Арабика
Араза
Арахис
Арбуз обыкновенный
Астрокариум колючий
Атимойя
Африканский колючий огурец
Африканский тамаринд
17 changes: 17 additions & 0 deletions lesson03/home_work/data/fruits_Б
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Бакау
Баклажан
Балия
Бананы
Баобаб
Барбадин (Большая гранадилла)
Барбадосская вишня
Бархатное яблоко
Баэль
Белая сапота
Бергамот
Билимби
Бирсонима
Блигия вкусная
Большой змеиный фрукт
Бразильский орех
Бычье сердце
6 changes: 6 additions & 0 deletions lesson03/home_work/data/fruits_В
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Вампи
Вангерия
Ваниль
Виноград
Воаванга
Водяное(восковое) яблоко
20 changes: 20 additions & 0 deletions lesson03/home_work/data/fruits_Г
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Гандария
Генипа
Гибискус съедобный
Гнетум гнемон
Голубиная слива
Голубой квандонг
Горлянка
Горький огурец
Гранадилла (Маракуйа)
Гранадилла большая (Барбадин)
Гранадилла сладкая
Гранат
Грейпфрут
Грумичама
Груша
Гуайява земляничная
Гуайява коста-риканская
Гуайява красная
Гуайява обыкновенная
Гуарана
12 changes: 12 additions & 0 deletions lesson03/home_work/data/fruits_Д
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Давидсония
Дамские пальчики
Деревянное яблоко
Десертный квандонг
Джекфрут
Древесная калебаса
Дуку
Дуриан
Дуриан цибетиновый
Дынная груша
Дынное дерево
Дыня обыкновенная
7 changes: 7 additions & 0 deletions lesson03/home_work/data/fruits_З
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Звездчатое яблоко
Земляничная груша
Земляничный томат
Земляной орех
Зизифус мавританский
Золотая слива
Золотистый апельсин
5 changes: 5 additions & 0 deletions lesson03/home_work/data/fruits_И
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Индийские бобы
Индийский инжир
Индийский миндаль
Индийское розовое яблоко
Инжир
Loading