study sources
2 subscribers
1 photo
14 links
SQL.
JavaScript.
Python.
C#.
Download Telegram
Пытаюсь понять, зачем вместо "and" и "or", решили использовать "&&" и "||".
Тысячу баксов за такое дз заплатите
While(); do...while(); Вроде два одинаковых цикла, но многие называют второй, женским.
Полиморфизм, тоже самое наследование с переопределением методов, в чем прикол.

А ещё, у класса методы, а не функции!
А про абстракцию мне расскажут?SOLID интересно но где абстракция?
БД- База Данных.
ORM - технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».

А я нихрена сегодня не изучил.

Зато поработал с ORM, написал модельку таблицы для котиков.

Отдельный класс, который редактирует, удаляет, добавляет данные о котах. Но сделал не тяп ляп, а проверку всех полученных данных от пользователя, работа с бд только через try/except, чтобы при возникновении ошибки откатить бд на один коммит.

Думаю GUI повесить или на fastapi + vue.js что нибудь сделать с этим, развить так сказать.

Пет проект придумал, осталось реализовать его до конца

Библиотеку для модели использовал SQLALCHEMY.
СУБД postgreSQL (использую почти для всех пет проектов).
Напоминание!
Не называть на собеседовании пет проекты, пет проектами
Ещё ООП, без ООП никуда
DRY — "Не повторяйся".

Это один из основных принципов ООП, есть ещё как минимум 3 — KISS, SOLID, REST.
Как можно соблюдать принцип DRY? Очень просто, просто использовать тоже самое наследование.

Я пока что тупой, не знаю что за остальные три принципа.
"При создании класса, мы создаём пространство имён" - или же это просто локальные переменные, которые доступны внутри класса и его методов.
class Point:
color = 'red'
circle = 2


print(Point.color)

Point.color = 'blue'

print(Point.color)
Этот код сначала выводит значение переменной color, класса Point, потом меняет и выводит опять.
Создать экземпляр класса
point = Point()
import os
import requests
from urllib.request import urlopen
from lxml import etree


class Functional:
img = "/html/body/div/div[1]/div/main/header/img"
word = "/html/body/div/div[1]/div/main/div[1]/div[1]/div[2]/b"
translate = "/html/body/div/div[1]/div/main/div[1]/div[1]/div[1]/span"
transcription = "/html/body/div/div[1]/div/main/div[1]/div[2]/div[2]/b"
headers = {'Content-Type': 'text/html',}
BASEDIR = os.path.abspath(os.path.dirname(__file__))

def __init__(self, link, path_to_folder=None) -> None:
self.response = requests.get(link, headers=self.headers)
self.path_to_folder = path_to_folder

def get_data(self):
with open("index.html", "w", encoding="utf-8") as file:
file.write(self.response.text)

local = os.path.join(self.BASEDIR, "index.html")
response = urlopen(local)
htmlparser = etree.HTMLParser()
tree = etree.parse(response, htmlparser)

# print(tree.xpath(self.word))

def __saveData(self):
...

def __saveImg(self):
...

def correct_str(self, s):
return s.encode('utf-8').decode('ascii', 'ignore').strip()


if __name__ == "__main__":
a = Functional(link="https://www.toboapp.com/word/korean/russian/yeou-604/")
a.get_data()
import os
import requests
import bs4
from lxml import etree
import csv


class Functional:
img = "/html/body/div/div[1]/div/main/header/img"
word = "/html/body/div/div[1]/div/main/div[1]/div[1]/div[2]/b"
translate = "/html/body/div/div[1]/div/main/div[1]/div[1]/div[1]/span"
transcription = "/html/body/div/div[1]/div/main/div[1]/div[2]/div[2]/b"
headers = {'Content-Type': 'text/html'}
BASEDIR = os.path.abspath(os.path.dirname(__file__))

def __init__(self, link, path_to_folder=BASEDIR) -> None:
self.response = requests.get(link, headers=self.headers)
self.path_to_folder = path_to_folder

def get_data(self):
result = []
soup = bs4.BeautifulSoup(self.response.text, features="lxml")
dom = etree.HTML(str(soup))

word = dom.xpath(self.word)[0].text
translate = dom.xpath(self.translate)[0].text
transcription = dom.xpath(self.transcription)[0].text
img = soup.find("img")["src"]

result.append(
[word, transcription, translate]
)

Functional.save_data(self, result)
# Functional.save_img(self, img)

def save_data(self, result):
with open("test.csv", "r", encoding="utf-8") as file:
if not file.read():
print(False)
with open("test.csv", "w", encoding="utf-8") as file:
writer = csv.writer(file)

writer.writerow(
(
"Слово",
"Транскрипция",
"Перевод"
)
)

writer.writerows(
result
)

else:
print(True)
with open("test.csv", "a", encoding="utf-8") as file:
writer = csv.writer(file)

writer.writerows(
result
)


if __name__ == "__main__":
a = Functional(link="https://www.toboapp.com/word/korean/russian/kokkiri-846/")
a.get_data()
Осталось сохранять фото, сделать выбор директории и на это всё посадить GUI интерфейс
class Functional:
img = "/html/body/div/div[1]/div/main/header/img"
word = "/html/body/div/div[1]/div/main/div[1]/div[1]/div[2]/b"
translate = "/html/body/div/div[1]/div/main/div[1]/div[1]/div[1]/span"
transcription = "/html/body/div/div[1]/div/main/div[1]/div[2]/div[2]/b"
headers = {'Content-Type': 'text/html'}
BASEDIR = os.path.abspath(os.path.dirname(__file__))

def __init__(self, link, img_name, path_to_folder=BASEDIR) -> None:
self.response = requests.get(link, headers=self.headers)
self.path_to_folder = path_to_folder
self.img_name = img_name

def get_data(self):
result = []
soup = bs4.BeautifulSoup(self.response.text, features="lxml")
dom = etree.HTML(str(soup))

word = dom.xpath(self.word)[0].text
translate = dom.xpath(self.translate)[0].text
transcription = dom.xpath(self.transcription)[0].text
element = dom.xpath(self.img)[0]
img = etree.tostring(element, encoding='utf-8').decode('utf-8')

s = bs4.BeautifulSoup(img, 'html.parser')

img = s.img['src']

result.append(
[word, transcription, translate]
)

Functional.save_data(self, result)
Functional.save_img(self, img)

def save_data(self, result):
with open("test.csv", "r", encoding="utf-8") as file:
if not file.read():
print(False)
with open("test.csv", "w", encoding="utf-8") as file:
writer = csv.writer(file)

writer.writerow(
(
"Слово",
"Транскрипция",
"Перевод"
)
)

writer.writerows(
result
)

else:
print(True)
with open("test.csv", "a", encoding="utf-8") as file:
writer = csv.writer(file)

writer.writerows(
result
)

def save_img(self, src_img):
response = requests.get(src_img, stream=True)
with open(f"{self.img_name}.svg", 'wb') as file:
file.write(response.content)