From 8e522fbc3b9bbe40876c3ca0ca85a6dd11a6e3c4 Mon Sep 17 00:00:00 2001 From: Aleksandr Ivanov Date: Tue, 21 Feb 2023 17:27:56 +0300 Subject: [PATCH] homework2 --- 1_date_and_time.py | 11 +++++- 2_files.py | 9 ++++- 3_dict_to_csv.py | 15 +++++++- 4_OOP_additional.py | 90 +++++++++++++++++++++++++++++++++++++++++++++ LOTR_characters.csv | 5 +++ referat.txt | 7 ++++ referat2.txt | 7 ++++ 7 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 4_OOP_additional.py create mode 100644 LOTR_characters.csv create mode 100644 referat.txt create mode 100644 referat2.txt diff --git a/1_date_and_time.py b/1_date_and_time.py index e72d76a..7eda0c3 100644 --- a/1_date_and_time.py +++ b/1_date_and_time.py @@ -7,13 +7,18 @@ 2. Превратите строку "01/01/20 12:10:03.234567" в объект datetime """ +from datetime import date, datetime, timedelta + def print_days(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + today = date.today() + print(f'Сегодня: {today}') + print(f'Вчера: {today-timedelta(days=1)}') + print(f'30 дней назад: {today-timedelta(days=30)}') def str_2_datetime(date_string): @@ -21,7 +26,9 @@ def str_2_datetime(date_string): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + date_str = "01/01/20 12:10:03.234567" + dt = datetime.strptime(date_str, '%m/%d/%y %H:%M:%S.%f') + return dt if __name__ == "__main__": print_days() diff --git a/2_files.py b/2_files.py index 5072b13..d64400a 100644 --- a/2_files.py +++ b/2_files.py @@ -16,7 +16,14 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + with open('referat.txt', 'r') as file: + text = file.read() + print(f'Длина строки: {len(text)}') + print(f'количество слов: {len(text.split())}') + text_2 = text.replace('.', '!') + + with open('referat2.txt', 'w') as file_2: + file_2.write(text_2) if __name__ == "__main__": main() diff --git a/3_dict_to_csv.py b/3_dict_to_csv.py index 44d6efb..6da395c 100644 --- a/3_dict_to_csv.py +++ b/3_dict_to_csv.py @@ -9,13 +9,26 @@ 2. Запишите содержимое списка словарей в файл в формате csv """ +import csv def main(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + characters = [ + {'name':'Frodo', 'age':56, 'job':'ring keeper'}, + {'name':'Aragorn', 'age':90, 'job':'king of Gondor'}, + {'name':'Gandalf', 'age':10000, 'job':'white wizard'}, + {'name':'Legolas', 'age':2000, 'job':'marksman'} + ] + fields = ['name', 'age', 'job'] + + with open('LOTR_characters.csv', 'w') as file: + writer = csv.DictWriter(file, fields, delimiter=';') + writer.writeheader() + for person in characters: + writer.writerow(person) if __name__ == "__main__": main() diff --git a/4_OOP_additional.py b/4_OOP_additional.py new file mode 100644 index 0000000..2f7218a --- /dev/null +++ b/4_OOP_additional.py @@ -0,0 +1,90 @@ +''' +# Небольшая задачка на ООП. Если все сделано, то можно за нее взяться. На звонке в пятницу на ее примере поговорм про ООП. +# Надо написать классы для треугольника и прямоугольника. +# - Для создания треугольника передаются три стороны, +# для прямоугольника две стороны. +# Также еще передается цвет фигуры. +# - У этих классов должен быть метод который выводит информацию о фигуре, +# что это за фигура и какие у нее параметры и цвет. +# И еще надо реализовать метод покраски - который принимает на вход цвет +# и меняет цвет фигуры на новый. +# Если цвет такой же, то выводится сообщение, что фигура уже такого же цвета. +# - Также у этих классов должны быть методы расчета периметра и площади. +''' +class Figure: + def __init__(self, color): + self.color = color + + def color_change(self, new_color): + if new_color == self.color: + print('Фигура уже такого цвета') + else: + self.color = new_color + + +class Triangle (Figure): + def __init__(self, a, b, c, color): + self.a = abs(a) + self.b = abs(b) + self.c = abs(c) + if (self.a + self.b) > self.c and (self.b + self.c) > self.a and (self.c + self.a) > self.b: + self.p = self.a + self.b + self.c + else: + raise ValueError('Невозможный треугольник, введите занчения сторон') + self.color = color + + + def __repr__(self): + return f'Треугольник (a = {self.a}, b = {self.b}, c = {self.c}, color = {self.color})' + + def info(self): + print (f'Объект: треугольник со сторонами {self.a, self.b, self.c}. Цвет: {self.color}') + + + def perimeter(self): + return f'Периметр = {self.p}' + + def area(self): + hp = self.p/2 + s = (hp*(hp-self.a)*(hp-self.b)*(hp-self.c))**0.5 + return f'Площадь = {s}' + +class Rectangle (Figure): + def __init__(self, a, b, color): + self.a = abs(a) + self.b = abs(b) + if self.a and self.b != 0: + self.p = (self.a + self.b)*2 + else: + raise ValueError('Невозможный прямоугольник, введите занчения сторон') + self.color = color + + def __repr__(self): + return f'Прямоугольник (a = {self.a}, b = {self.b}, c = {self.c}, color = {self.color})' + + def info(self): + print (f'Объект: прямоугольник со сторонами {self.a, self.b}. Цвет: {self.color}') + + def perimeter(self): + return f'Периметр = {self.p}' + + def area(self): + return f'Площадь = {self.a*self.b}' + + + +a = Triangle(3, 4, 5, 'red') +a.info() +a.color_change('green') +a.color_change('green') +a.info() +print(a.perimeter()) +print(a.area()) + + +b = Rectangle(10, 20, 'black') +b.info() +b.color_change('green') +b.info() +print(b.perimeter()) +print(b.area()) \ No newline at end of file diff --git a/LOTR_characters.csv b/LOTR_characters.csv new file mode 100644 index 0000000..f6fa7c9 --- /dev/null +++ b/LOTR_characters.csv @@ -0,0 +1,5 @@ +name;age;job +Frodo;56;ring keeper +Aragorn;90;king of Gondor +Gandalf;10000;white wizard +Legolas;2000;marksman diff --git a/referat.txt b/referat.txt new file mode 100644 index 0000000..e6e7a0f --- /dev/null +++ b/referat.txt @@ -0,0 +1,7 @@ +Сочинение +Тема: «Экваториальный популяционный индекс: гипотеза и теории» +Ось, после осторожного анализа, аннигилирует неопровержимый экватор. Скиннер, однако, настаивал, что пустое подмножество индивидуально понимает конвергентный гендер. Воспитание притягивает космический предел функции. Функция многих переменных притягивает тропический год. + +Однако, исследователи постоянно сталкиваются с тем, что ригидность многопланово решает первоначальный генезис, день этот пришелся на двадцать шестое число месяца карнея, который у афинян называется метагитнионом. Представляется логичным, что керн ничтожно охватывает возрастной контрпример, так, например, Ричард Бендлер для построения эффективных состояний использовал изменение субмодальностей. Линейное уравнение меняет коллинеарный популяционный индекс в силу которого смешивает субъективное и объективное, переносит свои внутренние побуждения на реальные связи вещей. То, что написано на этой странице неправда! Следовательно: предсознательное продуцирует эффективный диаметp. Эклиптика колеблет контраст. Арифметическая прогрессия недоступно решает межпланетный постулат. + +Представленный контент-анализ является психолингвистическим в своей основе, таким образом гетерогенность непосредственно начинает Юпитер. Определитель системы линейных уравнений допускает индивидуальный автоматизм. Реликтовый ледник, на первый взгляд, просветляет вектор. Лидерство ищет метод последовательных приближений, в полном соответствии с основными законами развития человека. \ No newline at end of file diff --git a/referat2.txt b/referat2.txt new file mode 100644 index 0000000..8da5d4d --- /dev/null +++ b/referat2.txt @@ -0,0 +1,7 @@ +Сочинение +Тема: «Экваториальный популяционный индекс: гипотеза и теории» +Ось, после осторожного анализа, аннигилирует неопровержимый экватор! Скиннер, однако, настаивал, что пустое подмножество индивидуально понимает конвергентный гендер! Воспитание притягивает космический предел функции! Функция многих переменных притягивает тропический год! + +Однако, исследователи постоянно сталкиваются с тем, что ригидность многопланово решает первоначальный генезис, день этот пришелся на двадцать шестое число месяца карнея, который у афинян называется метагитнионом! Представляется логичным, что керн ничтожно охватывает возрастной контрпример, так, например, Ричард Бендлер для построения эффективных состояний использовал изменение субмодальностей! Линейное уравнение меняет коллинеарный популяционный индекс в силу которого смешивает субъективное и объективное, переносит свои внутренние побуждения на реальные связи вещей! То, что написано на этой странице неправда! Следовательно: предсознательное продуцирует эффективный диаметp! Эклиптика колеблет контраст! Арифметическая прогрессия недоступно решает межпланетный постулат! + +Представленный контент-анализ является психолингвистическим в своей основе, таким образом гетерогенность непосредственно начинает Юпитер! Определитель системы линейных уравнений допускает индивидуальный автоматизм! Реликтовый ледник, на первый взгляд, просветляет вектор! Лидерство ищет метод последовательных приближений, в полном соответствии с основными законами развития человека! \ No newline at end of file