Add etc tasks
This commit is contained in:
parent
7d7d68ad67
commit
f2bc29dad0
45
etc/circle.py
Normal file
45
etc/circle.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
class Shape:
|
||||||
|
def __init__(self, x, y):
|
||||||
|
self.x = x
|
||||||
|
self.y = y
|
||||||
|
|
||||||
|
def move(self, delta_x, delta_y):
|
||||||
|
self.x = self.x + delta_x
|
||||||
|
self.y = self.y + delta_y
|
||||||
|
|
||||||
|
|
||||||
|
class Square(Shape):
|
||||||
|
def __init__(self, side=1, x=0, y=0):
|
||||||
|
super().__init__(x, y)
|
||||||
|
self.side = side
|
||||||
|
|
||||||
|
|
||||||
|
class Circle(Shape):
|
||||||
|
pi = 3.14159
|
||||||
|
all_circles = []
|
||||||
|
|
||||||
|
def __init__(self, radius=1, x=0, y=0):
|
||||||
|
super().__init__(x, y)
|
||||||
|
self.radius = radius
|
||||||
|
self.all_circles.append(self)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def radius(self):
|
||||||
|
return self._radius
|
||||||
|
|
||||||
|
@radius.setter
|
||||||
|
def radius(self, value):
|
||||||
|
if value < 0:
|
||||||
|
raise ValueError("Radius cannot be negative")
|
||||||
|
self._radius = value
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def total_area(cls):
|
||||||
|
area = 0
|
||||||
|
for circle in cls.all_circles:
|
||||||
|
area += cls.circle_area(circle.radius)
|
||||||
|
return area
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def circle_area(radius):
|
||||||
|
return __class__.pi * radius * radius
|
12
etc/decorators.py
Normal file
12
etc/decorators.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
def wrap_with_html(fn):
|
||||||
|
def wrapper_func(*args):
|
||||||
|
print('<html>')
|
||||||
|
fn(*args)
|
||||||
|
print('</html>')
|
||||||
|
return wrapper_func
|
||||||
|
|
||||||
|
@wrap_with_html
|
||||||
|
def echo(param):
|
||||||
|
print(param)
|
||||||
|
|
||||||
|
echo('Hello')
|
33
etc/kindahtml.py
Normal file
33
etc/kindahtml.py
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
class HtmlElement:
|
||||||
|
tag = "html"
|
||||||
|
indent = " "
|
||||||
|
def __init__(self, content=None, **kwargs):
|
||||||
|
if content is None:
|
||||||
|
self.contents = []
|
||||||
|
else:
|
||||||
|
self.contents = [content]
|
||||||
|
self.attributes = kwargs
|
||||||
|
def append(self, new_content):
|
||||||
|
self.contents.append(new_content)
|
||||||
|
def render(self, cur_ind=""):
|
||||||
|
print(cur_ind + f"<{self.tag}>")
|
||||||
|
for content in self.contents:
|
||||||
|
try:
|
||||||
|
content.render(cur_ind + self.indent)
|
||||||
|
except AttributeError:
|
||||||
|
print(cur_ind + self.indent + content)
|
||||||
|
print(cur_ind + f"</{self.tag}>")
|
||||||
|
|
||||||
|
class Body(HtmlElement):
|
||||||
|
tag = "body"
|
||||||
|
|
||||||
|
class Paragraph(HtmlElement):
|
||||||
|
tag = "p"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
para = Paragraph("hello")
|
||||||
|
body = Body(para)
|
||||||
|
body.append("world")
|
||||||
|
doc = HtmlElement(body)
|
||||||
|
doc.render()
|
11
etc/nasa.py
Normal file
11
etc/nasa.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
api_key = "DEMO_KEY"
|
||||||
|
|
||||||
|
def get_weather():
|
||||||
|
url = f"https://api.nasa.gov/insight_weather/?api_key={api_key}&feedtype=json&ver=1.0"
|
||||||
|
response = requests.get(url)
|
||||||
|
return json.loads(response.text)
|
||||||
|
|
||||||
|
print(get_weather())
|
Loading…
Reference in a new issue