From 94e99cd89f5745de4fe3713edcf90f4d7a7033f5 Mon Sep 17 00:00:00 2001 From: Alla Date: Sat, 5 Nov 2022 22:32:48 +0300 Subject: [PATCH] Task 1,2,3 Lec 7, Task 1,2 Lec 8.1 --- Practice/aturenko/Task 1 Lec 7.py | 31 +++++++++++++ Practice/aturenko/Task 1 Lec 8.1.py | 11 +++++ Practice/aturenko/Task 2 Lec 7.py | 56 ++++++++++++++++++++++ Practice/aturenko/Task 2 Lec 8.1.py | 31 +++++++++++++ Practice/aturenko/Task 3 Lec 7.py | 72 +++++++++++++++++++++++++++++ 5 files changed, 201 insertions(+) create mode 100644 Practice/aturenko/Task 1 Lec 7.py create mode 100644 Practice/aturenko/Task 1 Lec 8.1.py create mode 100644 Practice/aturenko/Task 2 Lec 7.py create mode 100644 Practice/aturenko/Task 2 Lec 8.1.py create mode 100644 Practice/aturenko/Task 3 Lec 7.py diff --git a/Practice/aturenko/Task 1 Lec 7.py b/Practice/aturenko/Task 1 Lec 7.py new file mode 100644 index 0000000..62150c6 --- /dev/null +++ b/Practice/aturenko/Task 1 Lec 7.py @@ -0,0 +1,31 @@ +# 1.Спроектировать классы (один или несколько) для игры в танки и создать экземпляры этих классов. + +class Tanks: + def __init__(self, name, mass, speed): + self._name = name + self._mass = mass + self._speed = speed + + @staticmethod + def is_shooting(shoot): + if shoot == "Bah": + print("Tank shooting!") + else: + print("The tank does not fire") + + def showTanks(self): + print(f"Танк {self._name} имеет массу {self._mass} т и скорость {self._speed} км/ч") + + +tank1 = Tanks("T-90C", 48, 60) +tank2 = Tanks("Abrams M1A2", 69, 70) +tank3 = Tanks("Challenger 2", 62, 56) +tanklist = [tank1, tank2, tank3] +for i in tanklist: + i.showTanks() +Tanks.is_shooting("Bah") + + + + + diff --git a/Practice/aturenko/Task 1 Lec 8.1.py b/Practice/aturenko/Task 1 Lec 8.1.py new file mode 100644 index 0000000..b004669 --- /dev/null +++ b/Practice/aturenko/Task 1 Lec 8.1.py @@ -0,0 +1,11 @@ +class Man: + def __init__(self, name): + self._name = name + + def solve_task(self): + print("I'm not ready yet") + +myman = Man("Иван") + +print(myman._name) +myman.solve_task() \ No newline at end of file diff --git a/Practice/aturenko/Task 2 Lec 7.py b/Practice/aturenko/Task 2 Lec 7.py new file mode 100644 index 0000000..0813df0 --- /dev/null +++ b/Practice/aturenko/Task 2 Lec 7.py @@ -0,0 +1,56 @@ +# 2. Спроектировать класс Duck, при создании экземпляров которого будут задаваться атрибуты name, weight, а атрибут color должен быть общим для всех экземпляров класса. Также в классе должны быть методы: +# - статический метод, выводящий «Сrack»; +# - классовый метод, выводящий цвет уток; +# - методы экземпляров: метод, выводящий имя и вес утки; метод __repl__ ; +# метод, принимающий 2х уток, и возвращающий имя более тяжелой утки (__lt__) ; +# метод, сравнивающий вес 2х уток и возвращающий bool (равен вес или нет (__ne__)) ; +# метод, суммирующий вес 2х уток(__add__). + +class Duck: + _color = "yellow" + + def __init__(self, name, weight): + self._name = name + self._weight = weight + + + @staticmethod + def outputCrack(): + print("Crack!") + + @classmethod + def outputColor(cls): + print(f"Цвет уток {cls._color}") + + + def outputInfo(self): + print(f"Имя утки {self._name}, вес {self._weight}") + + + def __repr__(self): + return f'Утка {self._name}, весит {self._weight}' + + def __lt__(self, other): + if self._weight > other._weight: + return f'Более тяжёлая утка - {self._name}' + + def __ne__(self, other): + if self._weight != other._weight: + return True + else: + return False + + def __add__(self, other): + return self._weight + other._weight + +duck1 = Duck("Donald", 4) +duck2 = Duck("Utka", 5) + +duck1.outputCrack() +duck2.outputCrack() +duck1.outputColor() +duck1.outputInfo() +duck2.outputInfo() +print(duck1 > duck2) +print(duck1 == duck2) +print(duck1 + duck2) \ No newline at end of file diff --git a/Practice/aturenko/Task 2 Lec 8.1.py b/Practice/aturenko/Task 2 Lec 8.1.py new file mode 100644 index 0000000..e4fa0c7 --- /dev/null +++ b/Practice/aturenko/Task 2 Lec 8.1.py @@ -0,0 +1,31 @@ +import time +import random + +class Man: + def __init__(self, name): + self._name = name + + def solve_task(self): + print("I'm not ready yet") + +myman = Man("Иван") + +print(myman._name) +myman.solve_task() + +# 2.Написать класс Pupil,у которого переопределен метод solve_task. +# На этот раз он будет думать от 3 до 6 секунд (c помощью метода sleep библиотеки time и randint библиотеки random). + +class Pupil(Man): + def __init__(self, pupilname): + self._pupilname = pupilname + + def solve_task(self): + time.sleep(random.randint(3, 6)) + print("I'm not ready yet") + + +mypupil = Pupil("Сергей") +print(mypupil._pupilname) +# for people in (myman, mypupil): +mypupil.solve_task() \ No newline at end of file diff --git a/Practice/aturenko/Task 3 Lec 7.py b/Practice/aturenko/Task 3 Lec 7.py new file mode 100644 index 0000000..20c85e3 --- /dev/null +++ b/Practice/aturenko/Task 3 Lec 7.py @@ -0,0 +1,72 @@ +# Написать класс WrapStrToFIle, который будет иметь одно вычисляемое свойство (property) под названием content. +# В конструкторе класс должен инициализовать атрибут filepath, путем присваивания результата функции mktemp библиотеки tempfile. +# При попытке чтения свойства content должен внутри кода свойства открываться файл, +# используя атрибут filepath (с помощью функции open, из этого файла читается все содержимое и возвращается из свойства. +# Если файл не существует, то возникает ошибка, поэтому должна быть обертка вокруг открытия файла на чтение (try...except), +# с помощью которого будет возвращаться 'Файл еще не существует'. +# При присваивании значения свойству content файл по указанному пути должен открываться на запись и записываться содержимое. +# Не забудьте закрывать файл после чтения или записи. При удалении атрибута content, должен удаляться и файл.* + +import tempfile +import os + +class WrapStrToFile: + + def __init__(self): + self._filepath = tempfile.mkstemp() # здесь инициализируется атрибут filepath, он содержит путь до файла-хранилища + + + + @property + + def content(self): + try: + with open(self._filepath, "r") as f: + res = f.read() + return res + except: + return "File doesn't exist" + + + # попытка чтения из файла, в случае успеха возвращаем содержимое + + # в случае неудачи возвращаем 'File doesn't exist' + + + + @content.setter + + def content(self, value): + try: + with open(self._filepath, "w") as f: + f.write(value) + except Exception: + print("Невозможно записать в файл") + # попытка записи в файл указанного содержимого + + + @content.deleter + + def content(self): + if os.path.isfile(self._filepath): + os.remove(self._filepath) + print("success") + else: + print("File doesn't exists!") + # удаляем файл: os.remove(имя_файла) + + + +wstf = WrapStrToFile() + +print(wstf.content) # Output: File doesn't exist + +wstf.content = 'test str' + +print(wstf.content) # Output: test_str + +wstf.content = 'text 2' + +print(wstf.content) # Output: text 2 + +del wstf.content # после этого файла не существует \ No newline at end of file