diff --git a/lesson01/home_work/hw01_easy.py b/lesson01/home_work/hw01_easy.py index f927b0b06..98e04c29d 100644 --- a/lesson01/home_work/hw01_easy.py +++ b/lesson01/home_work/hw01_easy.py @@ -1,5 +1,5 @@ -__author__ = 'Ваши Ф.И.О.' +__author__ = 'Резник А.В.' # Задача-1: Дано произвольное целое число (число заранее неизвестно). # Вывести поочередно цифры исходного числа (порядок вывода цифр неважен). @@ -7,8 +7,12 @@ # * постарайтесь решить задачу с применением арифметики и цикла while; # * при желании решите задачу с применением цикла for. -# код пишем тут... - +a = int(input()) +while a > 0: + print(a % 10) + a //= 10 +#for b in str(a): +# print(b) # Задача-2: Исходные значения двух переменных запросить у пользователя. # Поменять значения переменных местами. Вывести новые значения на экран. @@ -18,7 +22,20 @@ # Не нужно решать задачу так: # print("a = ", b, "b = ", a) - это неправильное решение! +a1 = int(input("введите число А:")) +b1 = int(input("введите число Б:")) +ab = a1 +a1 = b1 +b1 = ab +print('Число А стало:', a1) +print('Число Б стало:', b1) # Задача-3: Запросите у пользователя его возраст. # Если ему есть 18 лет, выведите: "Доступ разрешен", # иначе "Извините, пользование данным ресурсом только с 18 лет" + +age = int(input('Для доступа введите Ваш возраст:')) +if age > 17: + print('Доступ разрешен') +else: + print('Извините, пользование данным ресурсом только с 18 лет') diff --git a/lesson01/home_work/hw01_normal.py b/lesson01/home_work/hw01_normal.py index 991724e9a..2c099c78e 100644 --- a/lesson01/home_work/hw01_normal.py +++ b/lesson01/home_work/hw01_normal.py @@ -1,5 +1,5 @@ -__author__ = 'Ваши Ф.И.О.' +__author__ = 'Резник А.В.' # Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа. # Например, дается x = 58375. @@ -10,6 +10,10 @@ # * постарайтесь решить задачу с применением арифметики и цикла while; # * при желании и понимании решите задачу с применением цикла for. +x = int(input()) +b = map(int, str(x)) +b.sort() +print(b[-1]) # Задача-2: Исходные значения двух переменных запросить у пользователя. # Поменять значения переменных местами. Вывести новые значения на экран. @@ -17,7 +21,11 @@ # Подсказки: # * постарайтесь сделать решение через действия над числами; # * при желании и понимании воспользуйтесь синтаксисом кортежей Python. - +ax = int(input('input a plz:')) +bx = int(input('input b plz:')) +print('Bilo:', 'A -',ax,'B -', bx) +ax, bx = bx, ax +print('Stalo:', 'A -',ax,'B -', bx) # Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида # ax² + bx + c = 0. @@ -25,3 +33,18 @@ # Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math: # import math # math.sqrt(4) - вычисляет корень числа 4 +import math +az = int(input('Vvedite koef A')) +bz = int(input('Vvedite koef B')) +cz = int(input('Vvedite koef C')) +D = bz**2 - 4*az*cz +print('Discriminant', D) +if D > 0: + xz = (-bz + math.sqrt(D))/ 2*az + xy = (-bz - math.sqrt(D))/ 2*az + print('', xz, 'i', xy) +elif D == 0: + xz = -(bz/2*az) + print('', xz) +else: + print('korney net') diff --git a/lesson02/home_work/hw02_easy.py b/lesson02/home_work/hw02_easy.py index ed4447e50..45387ac90 100644 --- a/lesson02/home_work/hw02_easy.py +++ b/lesson02/home_work/hw02_easy.py @@ -13,13 +13,39 @@ # Подсказка: воспользоваться методом .format() +fruits = ["apple", "Banana", "kiwi", "arbuz"] +a = 0 +b = len(fruits) +while a < b: + a1 = a + 1 + print(a1, '{:>10}'.format(fruits[a])) + a += 1 + + # Задача-2: # Даны два произвольные списка. # Удалите из первого списка элементы, присутствующие во втором списке. +a = [1,2,3,4,5,6,7,8,9] +b = [2,3,4,10] +try: b1 = map(a.remove, b) +except ValueError: + pass +print(a) # Задача-3: # Дан произвольный список из целых чисел. # Получите НОВЫЙ список из элементов исходного, выполнив следующие условия: # если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два. + +a = [1,2,3,4,5,6,8,7] +a1 = [] +for i in a: + if i%2 == 0: + i = i/4 + a1.append(i) + else: + i= i*2 + a1.append(i) +print(a1) diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index 3acfaabb6..5ba53bed0 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -16,6 +16,17 @@ # Подсказка: # для получения случайного числа используйте функцию randint() модуля random +import random + +how_much = int(input()) +start = 0 +middle = 0 +list_result = [] +while start < how_much: + middle = random.randint(-100,100) + list_result.append(middle) + start += 1 +print(list_result) # Задача-4: Дан список, заполненный произвольными целыми числами. # Получите новый список, элементами которого будут: diff --git a/lesson03/home_work/hw03_easy.py b/lesson03/home_work/hw03_easy.py index 63d13f646..53ea95bf2 100644 --- a/lesson03/home_work/hw03_easy.py +++ b/lesson03/home_work/hw03_easy.py @@ -5,7 +5,17 @@ # Для решения задачи не используйте встроенные функции и функции из модуля math. def my_round(number, ndigits): - pass + number_temp1 = number*(10**ndigits) + number_temp_ostatok = number_temp1 % 1 + #print(number_temp_ostatok) + if number_temp_ostatok > 0.4: + number_add = 1 - number_temp_ostatok + round_number = number + (number_add/(10**ndigits)) + else: + number_add = number_temp_ostatok - 1 + round_number = number - (number_add/(10**ndigits)) + #print(round_number) + return round_number print(my_round(2.1234567, 5)) @@ -20,7 +30,20 @@ def my_round(number, ndigits): # !!!P.S.: функция не должна НИЧЕГО print'ить def lucky_ticket(ticket_number): - pass + ticket_number_map = list(map(int, str(ticket_number))) + try: + ticket_part_1 = ticket_number_map[0] + ticket_number_map[1] + ticket_number_map[2] + except IndexError: + pass + try: + ticket_part_2 = ticket_number_map[3]+ ticket_number_map[4]+ticket_number_map[5] + except IndexError: + pass + try: + result = ticket_part_1 == ticket_part_2 + return (result) + except: + pass print(lucky_ticket(123006)) diff --git a/lesson03/home_work/hw03_normal.py b/lesson03/home_work/hw03_normal.py index 38ac1fcc1..a6b0bae90 100644 --- a/lesson03/home_work/hw03_normal.py +++ b/lesson03/home_work/hw03_normal.py @@ -3,7 +3,12 @@ # Первыми элементами ряда считать цифры 1 1 def fibonacci(n, m): - pass + a = 0 + fibo = [1, 1] + while a< m: + fibo.append(fibo[0+a]+fibo[1+a]) + a+=1 + return fibo[n:m] # Задача-2: # Напишите функцию, сортирующую принимаемый список по возрастанию. @@ -12,7 +17,15 @@ def fibonacci(n, m): def sort_to_max(origin_list): - pass + a = origin_list + for i in range(len(a),0,-1): + for n in range(1,i): + if a[n-1] > a[n]: + an = a[n-1] + a[n-1] = a[n] + a[n] = an + return a + sort_to_max([2, 10, -12, 2.5, 20, -11, 4, 4, 0]) @@ -20,6 +33,14 @@ def sort_to_max(origin_list): # Напишите собственную реализацию стандартной функции filter. # Разумеется, внутри нельзя использовать саму функцию filter. +def myFilter(listed, x): + listed_res = [] + for i in listed: + if i == x: + listed_res.append(i) + else: + pass + return listed_res # Задача-4: # Даны четыре точки А1(х1, у1), А2(x2 ,у2), А3(x3 , у3), А4(х4, у4). diff --git a/lesson04/home_work/hw04_easy.py b/lesson04/home_work/hw04_easy.py index 85035ea8b..62ff413af 100644 --- a/lesson04/home_work/hw04_easy.py +++ b/lesson04/home_work/hw04_easy.py @@ -6,13 +6,27 @@ # квадратами элементов исходного списка # [1, 2, 4, 0] --> [1, 4, 16, 0] +start_list = [1,2,4,0] +result_list = [i**2 for i in start_list] +#print(start_list) +#print(result_list) + # Задание-2: # Даны два списка фруктов. # Получить список фруктов, присутствующих в обоих исходных списках. +first_list = ['orange','apple', 'ananas', 'pears', 'banana'] +second_list = ['orange', 'banana','apple', 'ananas'] +result_list = [i for i in first_list and second_list] +print(result_list) + # Задание-3: # Дан список, заполненный произвольными числами. # Получить список из элементов исходного, удовлетворяющих следующим условиям: # + Элемент кратен 3 # + Элемент положительный # + Элемент не кратен 4 + +start_list = [1,2,3,4,5,6,1,2,3,4, -1] +result_list = [i for i in start_list if i > 0 and i%3 ==0 and i%4 !=0] +#print(result_list) diff --git a/lesson04/home_work/hw04_normal.py b/lesson04/home_work/hw04_normal.py index 739dd33f8..5d0822c32 100644 --- a/lesson04/home_work/hw04_normal.py +++ b/lesson04/home_work/hw04_normal.py @@ -19,7 +19,11 @@ 'qHFjvihuNGEEFsfnMXTfptvIOlhKhyYwxLnqOsBdGvnuyEZIheApQGOXWeXoLWiDQNJFa'\ 'XiUWgsKQrDOeZoNlZNRvHnLgCmysUeKnVJXPFIzvdDyleXylnKBfLCjLHntltignbQoiQ'\ 'zTYwZAiRwycdlHfyHNGmkNqSwXUrxGc' - +import re +split_line = re.split(r'[A-Z]', line) +final_line = list(filter(None, split_line)) +#print(split_line) +print(final_line) # Задание-2: # Вывести символы в верхнем регистре, слева от которых находятся diff --git a/lesson05/home_work/hw05_easy.py b/lesson05/home_work/hw05_easy.py index c6317de2b..5c1c7d0ab 100644 --- a/lesson05/home_work/hw05_easy.py +++ b/lesson05/home_work/hw05_easy.py @@ -2,9 +2,25 @@ # Напишите скрипт, создающий директории dir_1 - dir_9 в папке, # из которой запущен данный скрипт. # И второй скрипт, удаляющий эти папки. +import os, time, shutil +#print(os.getcwd()) +number = 1 +number_1 = 1 +while number < 10: + os.mkdir('./dir_'+str(number), mode=511, dir_fd=None) + number += 1 +time.sleep(10) +while number_1 <10: + os.removedirs('./dir_'+str(number_1)) + number_1 += 1 # Задача-2: # Напишите скрипт, отображающий папки текущей директории. +print(list(os.listdir('./'))) + # Задача-3: # Напишите скрипт, создающий копию файла, из которого запущен данный скрипт. +shutil.copy(r'./lesson5.py', r'./lesson5_copy.py') +time.sleep(10) +os.remove(r'./lesson5_copy.py') diff --git a/lesson05/home_work/hw05_easy_func.py b/lesson05/home_work/hw05_easy_func.py new file mode 100644 index 000000000..238114e36 --- /dev/null +++ b/lesson05/home_work/hw05_easy_func.py @@ -0,0 +1,10 @@ +import os + +def change_dir(curr_dir): + os.chdir(curr_dir) +def create_folder_func(curr_dir, number): + os.mkdir(str(number), mode=511, dir_fd=None) +def remove_folder_func(curr_dir, number_1): + os.removedirs(str(number_1)) +def look_func(curr_dir): + print(list(os.listdir(curr_dir))) diff --git a/lesson05/home_work/hw05_normal.py b/lesson05/home_work/hw05_normal.py index ead6bbc19..18656def9 100644 --- a/lesson05/home_work/hw05_normal.py +++ b/lesson05/home_work/hw05_normal.py @@ -13,3 +13,42 @@ # Для решения данной задачи используйте алгоритмы из задания easy, # оформленные в виде соответствующих функций, # и импортированные в данный файл из easy.py + +# немного не успел доделать +import hw05_easy_func, os +curr_dir= os.getcwd() +curr_dir1= curr_dir +print('Вы сейчас находитесь в директории:', curr_dir) +def start_func(curr_dir): + print('1) Перейти в папку, 2) Посмотреть сождержимое текущей папки, 3) Удалить папку, 4) Создать папку, 5) Вернуться в домашнюю директорию, 6) Выход') + inputed = int(input('')) + #print(inputed) + if inputed == 1: + print(hw05_easy_func.look_func(curr_dir)) + curr_dir = hw05_easy_func.change_dir(input()) + print(curr_dir) + return curr_dir, start_func(curr_dir) + elif inputed == 2: + look = hw05_easy_func.look_func(curr_dir) + #print(look) + start_func(curr_dir) + elif inputed == 3: + print('Введите имя папки которую необходимо удалить') + folder_name = input('') + delete = hw05_easy_func.remove_folder_func(curr_dir, folder_name) + start_func(curr_dir) + elif inputed == 4: + print('Введите имя папки которую необходимо создать') + folder_name = input('') + create = hw05_easy_func.create_folder_func(curr_dir, folder_name) + start_func(curr_dir) + elif inputed == 5: + curr_dir = curr_dir1 + start_func(curr_dir) + elif inputed == 6: + pass + else: + print('Введено некорректное число') + start_func(curr_dir) + +start_func(curr_dir) diff --git a/lesson06/home_work/hw06_easy.py b/lesson06/home_work/hw06_easy.py index fe5dc2b11..a473ab072 100644 --- a/lesson06/home_work/hw06_easy.py +++ b/lesson06/home_work/hw06_easy.py @@ -1,9 +1,58 @@ + # Задача-1: Написать класс для фигуры-треугольника, заданного координатами трех точек. # Определить методы, позволяющие вычислить: площадь, высоту и периметр фигуры. +import math + +class Triangle: + + def __init__(self, point_a_x, point_a_y, point_b_x, point_b_y, point_c_x, point_c_y): + self.point_a_x = point_a_x + self.point_b_x = point_b_x + self.point_c_x = point_c_x + self.point_a_y = point_a_y + self.point_b_y = point_b_y + self.point_c_y = point_c_y + + def ploshad(self): + self.ploshad= ((self.point_a_x - self.point_c_x)*(self.point_b_y - self.point_c_y) - (self.point_b_x - self.point_c_x)*(self.point_a_y - self.point_c_y))/2 + return abs(self.ploshad) + def perim(self): + a = math.sqrt((self.point_b_x - self.point_a_x) ** 2 + (self.point_b_y - self.point_a_y) ** 2) + b = math.sqrt((self.point_c_x - self.point_a_x) ** 2 + (self.point_c_y - self.point_a_y) ** 2) + c = math.sqrt((self.point_c_x - self.point_b_x) ** 2 + (self.point_c_y - self.point_b_y) ** 2) + self.perim_1 = a + b +c + return self.perim_1 + def height(self): + pass + +ttriangle = Triangle(1,5,5,7,5,2) +print('s =',ttriangle.ploshad()) +print('p =',ttriangle.perim()) # Задача-2: Написать Класс "Равнобочная трапеция", заданной координатами 4-х точек. # Предусмотреть в классе методы: # проверка, является ли фигура равнобочной трапецией; # вычисления: длины сторон, периметр, площадь. +class Trapeze: + def __init__(self, point_a, point_b, point_c, point_d): + self.point_a = point_a + self.point_b = point_b + self.point_c = point_c + self.point_d = point_d + def ploshad(self): + a = math.sqrt((self.point_b[0] - self.point_a[0]) ** 2 + (self.point_b[1] - self.point_a[1]) ** 2) + b = math.sqrt((self.point_b[0] - self.point_c[0]) ** 2 + (self.point_b[1] - self.point_c[1]) ** 2) + c = math.sqrt((self.point_c[0] - self.point_d[0]) ** 2 + (self.point_c[1] - self.point_d[1]) ** 2) + d = math.sqrt((self.point_d[0] - self.point_a[0]) ** 2 + (self.point_d[1] - self.point_d[1]) ** 2) + h = math.sqrt(c**2 -((a-b)**2)/4) + bd = (b+d)/2 + s = ((a+b)/2)*h + return "p = " + str(a+d+b+c), "s = " + str(s), 'a to b =' + str(a), 'b to c =' + str(b), 'c to d =' + str(c),'d to a =' + str(d) + +ttrapeze = Trapeze((1,3), (3,5), (6,5), (8,3)) +print(ttrapeze.ploshad()) + + + diff --git a/lesson06/home_work/hw06_normal.py b/lesson06/home_work/hw06_normal.py index 01c3982f4..1638b9ac1 100644 --- a/lesson06/home_work/hw06_normal.py +++ b/lesson06/home_work/hw06_normal.py @@ -2,8 +2,8 @@ # Реализуйте описаную ниже задачу, используя парадигмы ООП: # В школе есть Классы(5А, 7Б и т.д.), в которых учатся Ученики. # У каждого ученика есть два Родителя(мама и папа). -# Также в школе преподают Учителя. Один учитель может преподавать -# в неограниченном кол-ве классов свой определенный предмет. +# Также в школе преподают Учителя. Один учитель может преподавать +# в неограниченном кол-ве классов свой определенный предмет. # Т.е. Учитель Иванов может преподавать математику у 5А и 6Б, # но больше математику не может преподавать никто другой. @@ -11,7 +11,82 @@ # 1. Получить полный список всех классов школы # 2. Получить список всех учеников в указанном классе # (каждый ученик отображается в формате "Фамилия И.О.") -# 3. Получить список всех предметов указанного ученика +# 3. Получить список всех предметов указанного ученика # (Ученик --> Класс --> Учителя --> Предметы) # 4. Узнать ФИО родителей указанного ученика # 5. Получить список всех Учителей, преподающих в указанном классе + +class Man: + def __init__(self, surname, givenname): + self.surname = surname + self.givenname = givenname + + def __repr__(self): + return '{} {}.'.format(self.surname, self.givenname[0]) + +class Class: + def __init__(self, name): + self.name = name + + def __repr__(self): + return 'Класс: {}'.format(self.name) + def add_student(self, student): + self.add_students.add(student) + +class Student(Man): + def __init__(self, mother, father, *args): + super(Student, self).__init__(*args) + self.mother = mother + self.father = father + +class Parent(Man): + def __init__(self, *args): + super(Parent, self).__init__(*args) + + +class Teacher(Man): + def __init__(self, classes, lesson, *args): + super(Teacher, self).__init__(*args) + self.classes = classes + self.lesson = lesson + + def add_teacher(self, teacher): + self.add_teacher.add(teacher) + + def add_teacher_lesson(self, lesson): + self.add_teacher_lesson(lesson) + +class School: + def __init__(self): + self.lessons = [] + self.classes = [] + self.students = [] + self.teachers = [] + + def add_student(self, student): + self.students.append(student) + + def add_class(self, clazz): + self.classes.append(clazz) + + def add_teacher(self, teacher): + self.teachers.append(teacher) + + def add_teacher_lesson(self, lesson): + self.lessons.append(lesson) + + def __repr__(self): + return 'Школа, Классы: {}; Уроки:{}, Учителя:{}, Ученики: {}'.format(self.classes, self.lessons, self.teachers, self.students) + + +student = Student('Петрова', 'Петров', 'Петров', 'Олег') +teacher = Teacher('3Б', 'Математика', 'Суров', 'Иван') +clazz = Class('3а') +parent = Parent('Иванов', 'Иван') +school = School() +school.add_student(student) +school.add_class(clazz) +school.add_teacher(teacher) +school.add_teacher_lesson(teacher.lesson) +print(school) +print(parent)