diff --git a/Practice/tshyregena/WrapStrToFIle.py b/Practice/tshyregena/WrapStrToFIle.py new file mode 100644 index 00000000..bd15f19d --- /dev/null +++ b/Practice/tshyregena/WrapStrToFIle.py @@ -0,0 +1,33 @@ +import tempfile +import os + + +class WrapStrToFile: + def __init__(self): + self._filepath = tempfile.mkstemp() + + @property + def content(self): + try: + with open(self._filepath, "r", encoding="utf-8") as file1: + return file1.read() + except FileNotFoundError: + return 'File doesnt exist' + + @content.setter + def content(self, value): + with open(self._filepath, "w", encoding="utf-8") as file1: + file1.write(value) + + @content.deleter + def content(self): + os.remove(self._filepath) + + +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 diff --git a/Practice/tshyregena/pep8tasksh.py b/Practice/tshyregena/pep8tasksh.py new file mode 100644 index 00000000..d9605424 --- /dev/null +++ b/Practice/tshyregena/pep8tasksh.py @@ -0,0 +1,68 @@ +import sys +import os +import hashlib +import ast +import argparse +from time import * + + +class Shuffler: + + def __init__(self, map): # Отсутствует параметр map + self.map = {} + + def rename(self, dirname, output): # Может быть статическим методом + mp3s = [] # Не выровнено, поэтому не видит + for root, directories, files in os.walk(dirname): + for file in files: + if file[-3:] == '.mp3': + mp3s.append([root, file]) + for path, mp3 in mp3s: + hashname = self.generate_name() + '.mp3' + self.map[hashname] = mp3 + os.rename(path + '/' + mp3), path + '/' + hashname)) # Возможно ошибка в названии mp3 + f = open(output, 'r') + f.write(str(self.map)) + + def restore(self, dirname, restore_path, filename): # Не принимает filename + with open(filename, '+') as f: # проблема с выравниванием + self.map = ast.literal_eval(f.read()) + mp3s = [] + for root, directories, files in os.walk(dirname): + for file in files: + if file[-3:] == '.mp3': + mp3s.append({root, file}) + for path, hashname in mp3s: + os.rename(path + '/' + hashname, path + '/' + self.map[hashname])) + os.remove(restore_path) + + def generate_name(self, seed=time()): # Название функции написано с ошибкой + return hashlib.md5(str(seed)).hexdigest() # проблема с выравниванием + + +def parse_arguments(): + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='subcommand help') + rename_parser = subparsers.add_parser('rename', help='rename help') + rename_parser.add_argument('dirname') + rename_parser.add_argument('-o', '--output', help='path to a file where restore map is stored') + restore_parser = subparsers.add_parser('restore', help="command_a help") + restore_parser.add_argument('dirname') + restore_parser.add_argument('restore_map') + args = parser.parse_args() + return args + +def main(): + args = parse_arguments() + if args.subcommand == 'rename': + if args.output: + Shuffler.rename(args.dirname, 'restore.info') + else: + Shuffler.rename(args.dirname, args.output) + elif args.subcommand == 'restore': + Shuffler.restore(args.dirname, args.restore_map) + else: + sys.exit() + + +main() diff --git "a/Practice/tshyregena/\320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274.py" "b/Practice/tshyregena/\320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274.py" new file mode 100644 index 00000000..b07e7f40 --- /dev/null +++ "b/Practice/tshyregena/\320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274.py" @@ -0,0 +1,9 @@ +lst = [5, 78, 4, 34] +for k in range(len(lst)): + nM = k + for i in range(k, len(lst)): + if lst[i] < lst[nM]: + nM = i + if nM != k: + lst[k], lst[nM] = lst[nM], lst[k] +print(lst) diff --git "a/Practice/tshyregena/\320\262\320\276\320\267\320\262\321\200\320\260\321\202.py" "b/Practice/tshyregena/\320\262\320\276\320\267\320\262\321\200\320\260\321\202.py" new file mode 100644 index 00000000..ad74f1da --- /dev/null +++ "b/Practice/tshyregena/\320\262\320\276\320\267\320\262\321\200\320\260\321\202.py" @@ -0,0 +1,11 @@ +def fun(lst): + res = set() + for element in lst: + if element in res: + return element + else: + res.add(element) + + +lst1 = [4, 9, 8, 9, 1, 8, 6] +print(fun(lst1)) diff --git "a/Practice/tshyregena/\320\264\320\265\320\272\320\276\321\200\320\260\321\202\320\276\321\200.py" "b/Practice/tshyregena/\320\264\320\265\320\272\320\276\321\200\320\260\321\202\320\276\321\200.py" new file mode 100644 index 00000000..d3efb4d3 --- /dev/null +++ "b/Practice/tshyregena/\320\264\320\265\320\272\320\276\321\200\320\260\321\202\320\276\321\200.py" @@ -0,0 +1,18 @@ +def fun_dec(fun): + def fun_nuw(*args, **kwargs): + print("="*10) + res = fun(*args, **kwargs) + print(res) + print("="*10) + return res + return fun_nuw + + +@fun_dec +def fun1(*args): + return max(args) + + +a = int(input("Введите первое число: ")) +b = int(input("Введите второе число: ")) +fun1(a, b) diff --git "a/Practice/tshyregena/\320\270\320\263\321\200\320\260.py" "b/Practice/tshyregena/\320\270\320\263\321\200\320\260.py" new file mode 100644 index 00000000..112d8cfb --- /dev/null +++ "b/Practice/tshyregena/\320\270\320\263\321\200\320\260.py" @@ -0,0 +1,26 @@ +import random + + +lst = ["камень", "ножницы", "бумага"] +choice = random.choice(lst) +print(f"Приветствую тебя, я хочу сыграть с тобой в игру!") +p = input("Введите камень, ножницы или бумагу: ").lower() +if p == choice: + print("Ничья!") +elif p == "ножницы": + if choice == "камень": + print(f"Ваш выбор: {p}, выбор компьютера: {choice}. Вы проиграли") + else: + print(f"Ваш выбор: {p}, выбор компьютера: {choice}. Вы выйграли") +elif p == "бумага": + if choice == "камень": + print(f"Ваш выбор: {p}, выбор компьютера: {choice}. Вы выйграли") + else: + print(f"Ваш выбор: {p}, выбор компьютера: {choice}. Вы проиграли") +elif p == "камень": + if choice == "ножницы": + print(f"Ваш выбор: {p}, выбор компьютера: {choice}. Вы выйграли") + else: + print(f"Ваш выбор: {p}, выбор компьютера: {choice}. Вы проиграли") +else: + print("Вы ввели что-то не то") diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_5/\320\274\320\260\321\202\321\200\320\270\321\206\320\260.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_5/\320\274\320\260\321\202\321\200\320\270\321\206\320\260.py" new file mode 100644 index 00000000..8929fb04 --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_5/\320\274\320\260\321\202\321\200\320\270\321\206\320\260.py" @@ -0,0 +1,30 @@ + +def display(matrix1): + for r in matrix1: + print(r) + + +def display2(matrix3): + new_mat = [] + for k in range(len(matrix3[0])): + new_row = [] + for el in matrix3: + new_row.append(el[k]) + new_mat.append(new_row) + return new_mat + + +matrix2 = [[5, 4, 3, 8], + [6, 6, 7, 8], + [3, 9, 0, 6]] +display(matrix2) +new_mat1 = display2(matrix2) +p1 = int(input("Столбец с каким числом вы хотите удалить: ")) +i = 0 +while i < len(new_mat1): + if p1 in new_mat1[i]: + del new_mat1[i] + else: + i += 1 +new_mat2 = display2(new_mat1) +display(new_mat2) diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_5/\321\202\320\260\320\261.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_5/\321\202\320\260\320\261.py" new file mode 100644 index 00000000..32655c3c --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_5/\321\202\320\260\320\261.py" @@ -0,0 +1,11 @@ +with open("таб.txt", "r+", encoding="utf-8") as f: + s = f.read() + print(s) + p = input("Свернуть или развернуть символы табуляции: ").lower() + k = "" + if p == "свернуть": + k = s.replace(' ', '\t') + else: + k = s.replace('\t', ' ') +with open("таб.txt", "w") as f: + f.write(k) diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.1.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.1.py" new file mode 100644 index 00000000..2eb8a42c --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.1.py" @@ -0,0 +1,3 @@ +import itertools + +print(list(itertools.chain([1, 2, 3], [4, 5], [6, 7]))) diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.2.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.2.py" new file mode 100644 index 00000000..e56f62ca --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.2.py" @@ -0,0 +1,4 @@ +from itertools import filterfalse +lst = ['hello', 'i', 'write', 'cool', 'code'] +res = filterfalse(lambda x: len(x) < 5, lst) +print(list(res)) diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.3.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.3.py" new file mode 100644 index 00000000..63185065 --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/8.4.3.py" @@ -0,0 +1,7 @@ +import itertools + +letters = "password" +perms = itertools.permutations(letters) + +for perm in perms: + print(perm) diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\263\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\263\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200.py" new file mode 100644 index 00000000..64ed3e72 --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\263\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200.py" @@ -0,0 +1,14 @@ + +def gen(name): + with open(name, "r", encoding="utf-8") as file: + for line in file: + print(file.readline()) + yield line + + +r = input("Введите имя файла: ") +for i in gen(r): + print(i) +# print(next(r)) +# print(next(r)) +# print(next(r)) diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\264\320\273\321\217_\320\270\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\260.txt" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\264\320\273\321\217_\320\270\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\260.txt" new file mode 100644 index 00000000..df2c9b55 --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\264\320\273\321\217_\320\270\321\202\320\265\321\200\320\260\321\202\320\276\321\200\320\260.txt" @@ -0,0 +1,13 @@ +Египетская летучая§ собака + +§ Описание +Египетская летучая собака имеет длину примерно 17 см. Шерсть имеет окрас бурого цвета, причём брюхо окрашено светлее. + +§ Распространение +Область распространения простирается от Египта и Аравийского полуострова до юга Турции и Кипра. + +§ Образ жизни +Животные живут большими колониями, активны ночью. Питаются плодами, при этом бо́льшую часть их рациона составляют незрелые плоды, повреждённые насекомыми или грибами. В поисках пищи животные за ночь пролетают до 40 км. Любимая пища — это инжир, затем апельсины, финики, бананы и молодые листья рожкового дерева. + +§ Размножение +Сезон размножения продолжается в природе с июня по сентябрь. Половая зрелость наступает в возрасте 9 месяцев. Период беременности длится приблизительно 115—120 дней. Самка, как правило, рожает одного детёныша в год, но иногда рождается и двойня. Приблизительно шесть недель самка носит детёныша на себе, не отпуская его. Позже она оставляет его висеть одного на скальных выступах, но продолжает кормить. \ No newline at end of file diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\270\321\202\320\265\321\200\320\260\321\202\320\276\321\200.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\270\321\202\320\265\321\200\320\260\321\202\320\276\321\200.py" new file mode 100644 index 00000000..2079cfa0 --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\270\321\202\320\265\321\200\320\260\321\202\320\276\321\200.py" @@ -0,0 +1,30 @@ +class Par: + def __init__(self, text, p): + self.text = text + self.p = p + self.i = 0 + + def __iter__(self): + return self + + def __next__(self): + res = "" + while self.i < len(self.text): + res1 = self.i + self.i += 1 + if self.text[res1] != self.p: + res += self.text[res1] + else: + return res + if res: + return res + raise StopIteration + + +t = Par("Египетская летучая §собака имеет длину §примерно 17 см", "§") +it = iter(t) +while True: + try: + print(next(it)) + except StopIteration: + break diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\272\320\276\320\275\321\202\320\265\320\272\321\201\321\202.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\272\320\276\320\275\321\202\320\265\320\272\321\201\321\202.py" new file mode 100644 index 00000000..36d6f926 --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_8/\320\272\320\276\320\275\321\202\320\265\320\272\321\201\321\202.py" @@ -0,0 +1,21 @@ +import time + + +class MyMen: + def __enter__(self): + self.start_time = time.time() + print("Входим в менеджер контекста") + + def __exit__(self, exc_type, exc_val, exc_tb): + print("Выходим из менеджера контекста") + elapsed_time = time.time() - self.start_time + print(f"Время выполнения операции: {elapsed_time}") + + +with MyMen() as timer: + kidd = "Кошка мяукает. Собака лает. Птичка чирикает. Лягушка квакает." + a = dict(мяукает='говорит - мяу', лает='говорит - гав', чирикает='говорит - чирик-чирик', + квакает='говорит - ква-ква') + for key, value in a.items(): + kidd = kidd.replace(key, value) + print(kidd) diff --git "a/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_9/\321\200\320\260\320\261\320\276\321\207\320\270\320\265_\320\264\320\275\320\270.py" "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_9/\321\200\320\260\320\261\320\276\321\207\320\270\320\265_\320\264\320\275\320\270.py" new file mode 100644 index 00000000..9f76d602 --- /dev/null +++ "b/Practice/tshyregena/\320\273\320\265\320\272\321\206\320\270\321\217_9/\321\200\320\260\320\261\320\276\321\207\320\270\320\265_\320\264\320\275\320\270.py" @@ -0,0 +1,28 @@ +import datetime as dt + + +def fun(weekday, time): + res = [] + i = 1 + t = time + w = weekday + while i <= t: + w3 = w.weekday() + i += 1 + w = w + dt.timedelta(days=1) + if w3 < 5: + res.append(w3) + return len(res) + + +y1 = int(input("Введите год первой даты в формате 'YYYY': ")) +m1 = int(input("Введите месяц первой даты в формате 'M': ")) +d1 = int(input("Введите день первой даты в формате 'D': ")) +weekday1 = dt.datetime(y1, m1, d1) +print(f'{weekday1} это {weekday1.strftime("%A")}') +y2 = int(input("Введите год первой даты в формате 'YYYY': ")) +m2 = int(input("Введите месяц первой даты в формате 'M': ")) +d2 = int(input("Введите день первой даты в формате 'D': ")) +weekday2 = dt.datetime(y2, m2, d2) +time3 = (weekday2 - weekday1).days +print(f"С начальной даты до конечной {fun(weekday1, time3)} рабочих дня") diff --git "a/Practice/tshyregena/\321\201\320\273\320\276\320\262\320\260\321\200\321\214.py" "b/Practice/tshyregena/\321\201\320\273\320\276\320\262\320\260\321\200\321\214.py" new file mode 100644 index 00000000..4bf6d571 --- /dev/null +++ "b/Practice/tshyregena/\321\201\320\273\320\276\320\262\320\260\321\200\321\214.py" @@ -0,0 +1,5 @@ +kidd = "Кошка мяукает. Собака лает. Птичка чирикает. Лягушка квакает." +a = dict(мяукает='говорит - мяу', лает='говорит - гав', чирикает='говорит - чирик-чирик', квакает='говорит - ква-ква') +for key, value in a.items(): + kidd = kidd.replace(key, value) +print(kidd) diff --git "a/Practice/tshyregena/\321\201\320\277\321\217\321\211\320\270\320\271 \320\277\320\260\321\200\320\265\320\275\321\214.py" "b/Practice/tshyregena/\321\201\320\277\321\217\321\211\320\270\320\271 \320\277\320\260\321\200\320\265\320\275\321\214.py" new file mode 100644 index 00000000..cc9406c3 --- /dev/null +++ "b/Practice/tshyregena/\321\201\320\277\321\217\321\211\320\270\320\271 \320\277\320\260\321\200\320\265\320\275\321\214.py" @@ -0,0 +1,26 @@ +import time +import random + + +class Man: + def __init__(self, name): + self.name = name + + @staticmethod + def solve_task(): + print(f"I'm not ready yet") + + +class Pupil(Man): + + @staticmethod + def solve_task(): + r = random.randrange(3, 6) + time.sleep(r) + print(f"Я подумал {r} секунды, но я тоже не готов пока.") + + +m = Man("Гоша") +m.solve_task() +h = Pupil("Лев") +h.solve_task() diff --git "a/Practice/tshyregena/\321\202\320\260\320\261.txt" "b/Practice/tshyregena/\321\202\320\260\320\261.txt" new file mode 100644 index 00000000..79a64623 --- /dev/null +++ "b/Practice/tshyregena/\321\202\320\260\320\261.txt" @@ -0,0 +1,15 @@ + Кто любит Бога - церковь чтит, + Хмельное не бодрит - дурманит, + Деньга деньгу сама родит, + Тот не продаст, кто не обманет, + Охотник кормит псов заране, + Терпенье города бедёт + И стену всякую таранит, + Кто ищет тот всегда найдёт. Кто любит Бога - церковь чтит, + Хмельное не бодрит - дурманит, + Деньга деньгу сама родит, + Тот не продаст, кто не обманет, + Охотник кормит псов заране, + Терпенье города бедёт + И стену всякую таранит, + Кто ищет тот всегда найдёт. \ No newline at end of file diff --git "a/Practice/tshyregena/\321\202\320\260\320\275\320\272\320\270.py" "b/Practice/tshyregena/\321\202\320\260\320\275\320\272\320\270.py" new file mode 100644 index 00000000..46815b3a --- /dev/null +++ "b/Practice/tshyregena/\321\202\320\260\320\275\320\272\320\270.py" @@ -0,0 +1,17 @@ +class Tanks: + def __init__(self, name, color, armor, speed, power): + self.name = name + self.color = color + self.armor = armor + self.speed = speed + self.power = power + + def print_p(self): + print( + f"Я персонаж {id(self)}: {self.name=}, мой цвет {self.color=}. Моя броня {self.armor=}\n и я двигаюсь я со скоростью {self.speed=}. Моя сила {self.power=}") + + +p1 = Tanks('Рыжик', "синий", '50', "4", 100) +p1.print_p() # Employee.print_emp(e1) +p2 = Tanks('Лина', 'розовый', '60', '150', '500') +p2.print_p() diff --git "a/Practice/tshyregena/\321\203\321\202\320\272\320\270.py" "b/Practice/tshyregena/\321\203\321\202\320\272\320\270.py" new file mode 100644 index 00000000..8cfe6a7b --- /dev/null +++ "b/Practice/tshyregena/\321\203\321\202\320\272\320\270.py" @@ -0,0 +1,59 @@ +class Duck: + color = "коричневый" + + def __init__(self, name, weight): + self.name = name + self.weight = weight + + @classmethod + def color_p(cls): + print(f"Цвет уток в корзинке {cls.color}") + + def print_p(self): + print(f"Я вешу {self.weight} грамм. Меня зовут {self.name}") + + @staticmethod + def say_crack(): + print('Crack') + + def __gt__(self, other): + return self.weight > other.weight + + def __lt__(self, other): + return self.weight < other.weight + + def __ne__(self, other): + return self.weight != other.weight + + def __eq__(self, other): + return self.weight == other.weight + + def __add__(self, other): + new_weight = self.weight + other.weight + new_duck = Duck("Шпуня", new_weight) + return new_duck + + def __repr__(self): + return f"Duck at {id(self)}: {self.name=}, {self.weight=}" + + +d = Duck("Minimi", 100) +d.print_p() +d.say_crack() +d1 = Duck("Minily", 90) +d1.print_p() +d1.say_crack() +d2 = Duck("Roma", 150) +d2.print_p() +d2.say_crack() +d3 = Duck("Fufa", 190) +d3.print_p() +d3.say_crack() +Duck.color_p() +print(d > d2) +print(d1 < d2) +print(d3 != d3) +print(d2 == d2) +s = d1 + d3 +print(s.weight) +print(repr(s))