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

Lesson05 #884

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

43 changes: 43 additions & 0 deletions lesson05/home_work/hw05_easy.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,51 @@
# из которой запущен данный скрипт.
# И второй скрипт, удаляющий эти папки.

# Создаем новую директорию
print("Задача-1")

print("Создаем директории dir_1..dir_9")
import os
current_path = os.getcwd()
try:
for i in range(1,10):
FullNameDir = os.path.join(current_path, "dir_"+str(i))
os.mkdir(FullNameDir)
print("Директории dir_1..dir_2 созданы")
except FileExistsError:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

так, а если ошибка вылетит на первой же итерации, получиться что вообще ни одной папки не создастся

print('Директория {} уже существует'.format("dir_"+str(i)))

print("Удаляем директории dir_1..dir_9")
import os
current_path = os.getcwd()
try:
for i in range(1,10):
FullNameDir = os.path.join(current_path, "dir_"+str(i))
if os.path.isdir(FullNameDir):
os.rmdir(FullNameDir)
print("Директории dir_1..dir_2 удалены")
except :

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

очень плохая практика, хотя бы Exception надо писать

print('Ошибка при удалении директории {}'.format("dir_"+str(i)))

#exit()


# Задача-2:
# Напишите скрипт, отображающий папки текущей директории.

print("Задача-2")

import os
print([item for item in os.listdir(os.getcwd()) if os.path.isdir(item)])

# Задача-3:
# Напишите скрипт, создающий копию файла, из которого запущен данный скрипт.

import sys
import shutil
ScriptPath = sys.argv[0]
CopyScriptPath = ScriptPath+"_copy"
print(ScriptPath)
print(ScriptPath+"_copy")

shutil.copy(ScriptPath, CopyScriptPath)
Loading