diff --git a/Practice/mvolobuev/lec4 task1.py b/Practice/mvolobuev/lec4 task1.py new file mode 100644 index 00000000..ca08fed2 --- /dev/null +++ b/Practice/mvolobuev/lec4 task1.py @@ -0,0 +1,15 @@ +def sravnenie(a): + if a % 15 == 0: + print("FizzBuzz") + else: + if a % 5 == 0: + print("Fizz") + else: + if a % 3 == 0: + print("Buzz") + else: + print(a) + + +for i in range(1, 101): + sravnenie(i) diff --git a/Practice/mvolobuev/lec4 task2.py b/Practice/mvolobuev/lec4 task2.py new file mode 100644 index 00000000..aaaa1207 --- /dev/null +++ b/Practice/mvolobuev/lec4 task2.py @@ -0,0 +1,3 @@ +n = input("Введите пятизначное число: ") +for k in range(0, len(n)): + print(f"{k+1} цифра равна: {n[k]}") diff --git a/Practice/mvolobuev/lec4 task3_2.py b/Practice/mvolobuev/lec4 task3_2.py new file mode 100644 index 00000000..bf4fdc48 --- /dev/null +++ b/Practice/mvolobuev/lec4 task3_2.py @@ -0,0 +1,47 @@ +def bukv(b, alfa): + nom = input(f"Введите порядковый номер для буквы: {b:} : ") + if nom.isdigit(): + nom = int(nom) + mon = alfavit[nom - 1] + bo1 = str(mon[1]) + if b == bo1: + print(f"Цифра соответствует букве : {bo1:}") + return nom + else: + print(f"Цифра соответствует букве {bo1:} 'попробйте еще раз") + bukv(b, alfa) + else: + print("Вместо цифры введена буква :") + bukv(b, alfa) + + +def buk_v(b, s, s1, alfavit): + s1 = bukv(b, alfavit) + s = s + str(s1) + " " + +alfavit = [(1, "a"), (2,"b"),(3, "c"),(4, "d"),(5, "e"),(6, "f"),(7, "g"),(8, "h"),(9, "i"),(10, "j"),(11, "k"), + (12,"l"),(13,"m"),(14, "n"),(15, "o"),(16, "p"),(17, "q"),(18, "r"),(19, "s"),(20, "t"), + (21,"u"),(22, "v"),(23, "w"),(24, "x"),(25, "y"),(26, "z")] +print("Сегодня мы стараемся запомнить порядковый номер букв в алфавите, и набрать слово (stop)") +bs = alfavit[18] +bt = alfavit[19] +bo = alfavit[14] +bp = alfavit[15] +s = "" +for k in range(0, 4): + if k == 0: + b = str(bs[1]) + buk_v(b, s, s1, alfavit) + else: + if k == 1: + b = str(bt[1]) + buk_v(b, s, s1, alfavit) + else: + if k == 2: + b = str(bo[1]) + buk_v(b, s, s1, alfavit) + else: + b = str(bp[1]) + s1 = bukv(b, alfavit) + s = s + str(s1) +" " +print(f"Поздравляем, Вы ввели слово -stop-, цифры - {s}") \ No newline at end of file diff --git a/Practice/mvolobuev/lec4 task4.py b/Practice/mvolobuev/lec4 task4.py new file mode 100644 index 00000000..64b59b4d --- /dev/null +++ b/Practice/mvolobuev/lec4 task4.py @@ -0,0 +1,17 @@ +import random + + +def bukv(buk, stops): + j = 100 + for k in range(0, j): + zapros = input("Введите любое слово: ") + if zapros != stops: + print(random.choice(buk)) + else: + return + + +buk = ("Ты сам понял, что написал?", "Аргументируй", "И") +stops = ("хватит") +bukv(buk, stops) +print("Спасибо за беседу!") diff --git a/Practice/mvolobuev/lec4 task5.py b/Practice/mvolobuev/lec4 task5.py new file mode 100644 index 00000000..508b9ddd --- /dev/null +++ b/Practice/mvolobuev/lec4 task5.py @@ -0,0 +1,36 @@ +import random + + +def chisl(buk, a, b): + a = int(a) + b = int(b) + buk = int(buk) + zapros = input("Угадайте загадоное число в заданном дипазоне: ") + if zapros.isdigit(): + print(f"{zapros}") + if int(zapros) == buk: + print("Угадали. ") + return zapros + else: + zapros = int(zapros) + if zapros > b: + print("Введено число больше верхнего диапазона") + else: + if zapros < a: + print("Введено число меньше нижнего диапазона") + else: + if zapros > buk: + print("Введеное число больше загадоного") + else: + print("Введеное число меньше загадоного") + chisl(buk, a, b) + else: + print("Введена точка") + return zapros + + +a = int(input("Введите цифру, начало диапазона : ")) +b = int(input("Введите цифру, конец диапазона : ")) +i = random.randint(a, b) +chisl(i, a, b) +print("Спасибо за игру!") diff --git a/Practice/mvolobuev/lec4 task6.py b/Practice/mvolobuev/lec4 task6.py new file mode 100644 index 00000000..94fd1f83 --- /dev/null +++ b/Practice/mvolobuev/lec4 task6.py @@ -0,0 +1,23 @@ +def input_vvod(z1, z2): + if z1 > z2: + return z1 + else: + return z2 + +def print_vivod(maxi): + print(f"Наибольшее число: {maxi}") + + +def print_viv(z1, z2): + if z1 > z2: + print(f"Наибольшее число: {z1}") + else: + print(f"Наибольшее число: {z2}") + + +print("Программа для определения наибольшего числа из двух введеных") +z1 = input("Введите первое число: ") +z2 = input("Введите второе число: ") +dx = input_vvod(z1, z2) +print_vivod(dx) +print_viv(z1, z2) \ No newline at end of file diff --git a/Practice/mvolobuev/lec4 task7.py b/Practice/mvolobuev/lec4 task7.py new file mode 100644 index 00000000..7cc9544b --- /dev/null +++ b/Practice/mvolobuev/lec4 task7.py @@ -0,0 +1,24 @@ +def telo_dekor(fun): + def podch(*args, **kwargs): + print("================") + rex= fun(*args, **kwargs) + print("================") + return rex + return podch + + +@telo_dekor +def fun_print(a,b,c): + print(f"{a} + {b} = {c}") + + +def fun_sum(zn, zk): + zl = zn + zk + return zl + + +z1 = int(input("Введите первое число: ")) +z2 = int(input("Введите второе число: ")) +z = fun_sum(z1, z2) +fun_print(z1,z2,z) +#telo_dekor(z1, z2, z) diff --git a/Practice/mvolobuev/lec4 task8.py b/Practice/mvolobuev/lec4 task8.py new file mode 100644 index 00000000..2eb5158a --- /dev/null +++ b/Practice/mvolobuev/lec4 task8.py @@ -0,0 +1,41 @@ +import random + + +def bukv(buky): + for k in range(0, 100): + zapros = input("Выберите одно из трех слов и введите его (Камень, Ножницы, Бумага), для выхода введите Хватит: ") + zapros = zapros.strip() + zapros = zapros.lower() + + if zapros == buky[3]: return + + if zapros not in buky: + print("Слово введено с ошибкой, введите слово заново") + else: + i = random.randint(0, 2) + if zapros == buky[i]: + print(f"Мы выбрали тоже: {zapros}") + else: + if i == 0: + if zapros == buky[1]: + print (f"{buky[i]} Вы проиграли") + else: + print(f"{buky[i]} Вы выиграли") + else: + if i == 1: + if zapros == buky[0]: + print (f"{buky[i]} Вы выиграли") + else: + print(f"{buk[i]} Вы проиграли") + else: + if i == 2: + if zapros == buky[0]: + print(f"{buky[i]} Вы проиграли") + else: + print(f"{buky[i]} Вы выиграли") + + + +buk = ["камень", "ножницы", "бумага", "хватит"] +bukv(buk) +print("Спасибо за игру!") diff --git a/Practice/mvolobuev/lec5 task1.py b/Practice/mvolobuev/lec5 task1.py new file mode 100644 index 00000000..b7f02219 --- /dev/null +++ b/Practice/mvolobuev/lec5 task1.py @@ -0,0 +1,9 @@ +arg = [0, 3, 24, 2, 3, 7] +print(arg) +for i in range(0, len(arg)-1): + n = i + for k in range(i + 1, len(arg)): + if arg[k] < arg[n]: + n = k + arg[i], arg[n] = arg[n], arg[i] +print(arg) diff --git a/Practice/mvolobuev/lec5 task2.py b/Practice/mvolobuev/lec5 task2.py new file mode 100644 index 00000000..b6828fb6 --- /dev/null +++ b/Practice/mvolobuev/lec5 task2.py @@ -0,0 +1,17 @@ +def fun_povtor(st): + j1 = len(st) + j2 = len(st) + for i in range(0, len(st) - 1): + for k in range(i + 1, len(st)): + if int(st[k]) == int(st[i]): + if k-i < j2: + j1 = st[k] + j2 = k-i + print(f"Первый повторившийся символ: {j1}") + + + + +arg = [2, 3, 4, 5, 3, 2] +print(arg) +fun_povtor(arg) diff --git a/Practice/mvolobuev/lec5 task3.py b/Practice/mvolobuev/lec5 task3.py new file mode 100644 index 00000000..0b1c9406 --- /dev/null +++ b/Practice/mvolobuev/lec5 task3.py @@ -0,0 +1,15 @@ +def zam(t, dik1): + n = len(t) + k = t.count('дождь') + for i in range(0, k): + d = t.find('дождь') + t2 = t[0:d] + dik1['дождь'] + t[d+5:n] + t = t2 + return t + + +t = 'Вчера был дождь, и завтра будет дождь.' +dik = {'Вчера': 'Завтра', 'дождь': 'ветер'} +print(t) +t = zam(t, dik) +print(t) diff --git a/Practice/mvolobuev/lec5 task4.py b/Practice/mvolobuev/lec5 task4.py new file mode 100644 index 00000000..99432259 --- /dev/null +++ b/Practice/mvolobuev/lec5 task4.py @@ -0,0 +1,22 @@ +art = [[1, 2, 3, 4], [5, 6, 2, 8], [9, 2, 11, 12], [13, 14, 15, 16]] +st = [-1, -1, -1, -1] +for i in range(0, 4): + print(art[i]) + +k = int(input("Введите цифру от 1 до 16, столбец которой нужно удалить: ")) +i1 = 0 +for i in range(0, len(art)): + for j in range(0, len(art[0])): + g = art[i] + if g[j] == k and j not in st: + st[i1] = j + i1 += 1 + +for j1 in range(0, i1): + s1 = st[j1] + for i in range(0, len(art)): + g = art[i] + del(g[s1-j1]) + +for x in art: + print(x) diff --git a/Practice/mvolobuev/lec5 task5.py b/Practice/mvolobuev/lec5 task5.py new file mode 100644 index 00000000..84c7fbec --- /dev/null +++ b/Practice/mvolobuev/lec5 task5.py @@ -0,0 +1,4 @@ +with open("Piton.txt","w",encoding= "utf-8") as f: + f.write("\tЭнтони Шоу — заядлый питонист, участник Python Software Foundation.,\n") + f.write("\tСтрасть Энтони — разбираться в сложных системах,\n") + f.write("упрощать их и обучать других людей.") diff --git a/Practice/mvolobuev/lec5 task5_1.py b/Practice/mvolobuev/lec5 task5_1.py new file mode 100644 index 00000000..51aac10f --- /dev/null +++ b/Practice/mvolobuev/lec5 task5_1.py @@ -0,0 +1,11 @@ +# Замена Tab на пробелы +h = int(input("Введите количество пробелов вместо Tab: ")) +slist = [] +with open("Piton.txt", "r", encoding="utf-8") as f1: + for s in f1: + slist.append(s.expandtabs(tabsize=h)) + print(slist) + +with open("Piton.txt","w",encoding= "utf-8") as f: + for i1 in range(0, len(slist)): + f.write(slist[i1]) diff --git a/Practice/mvolobuev/lec5 task5_2.py b/Practice/mvolobuev/lec5 task5_2.py new file mode 100644 index 00000000..31447d42 --- /dev/null +++ b/Practice/mvolobuev/lec5 task5_2.py @@ -0,0 +1,10 @@ +# Замена проберов на Tab +s2 = "\n" +slist = "" +with open("Piton.txt", "r", encoding="utf-8") as f1: + for s in f1: + slist += s.replace(" ", "\t") + s2 + print(slist) + +with open("Piton.txt","w",encoding= "utf-8") as f: + f.write(slist) diff --git a/Practice/mvolobuev/lec6/lec6_task3.py b/Practice/mvolobuev/lec6/lec6_task3.py new file mode 100644 index 00000000..374c486a --- /dev/null +++ b/Practice/mvolobuev/lec6/lec6_task3.py @@ -0,0 +1,36 @@ +# WrapStrFlle +import tempfile +import os + + +class WrapStrToFile: + def __init__(self): + self.filepach = tempfile.mktemp() + + @property + def content(self): + try: + with open(self.filepach, "r", encoding="utf-8") as f1: + return f1.read() + except FileNotFoundError as e: + print(e) + return "File doesn't exist" + + @content.setter + def content(self, value): + with open(self.filepach, "w", encoding="utf-8") as f1: + f1.write(value) + + @content.deleter + def content(self): + os.remove(self.filepach) + print("Файл удален") + + +wstf = WrapStrToFile() +print(wstf.content) +wstf.content= "test str" +print(wstf.content) +wstf.content = "text 2" +print(wstf.content) +del wstf.content # после этого файла не существует diff --git a/Practice/mvolobuev/lec6_task1.py b/Practice/mvolobuev/lec6_task1.py new file mode 100644 index 00000000..952d66fa --- /dev/null +++ b/Practice/mvolobuev/lec6_task1.py @@ -0,0 +1,17 @@ +# Задание 1. Класс и экземпляры классов +class Tank_Vybor: + def __init__(self, marka, cvet, ckorost): + self.marka = marka + self.cvet = cvet + self.ckorost = ckorost + + +w = Tank_Vybor("T-34", "Зеленый", "50 км/ч") +print(w.marka) +print(w.cvet) +print(w.ckorost) +print("************************************") +w1 = Tank_Vybor("T-80", "Песочный", "80 км/ч") +print(w1.marka) +print(w1.cvet) +print(w1.ckorost) diff --git a/Practice/mvolobuev/lec6_task2.py b/Practice/mvolobuev/lec6_task2.py new file mode 100644 index 00000000..2eb1daa2 --- /dev/null +++ b/Practice/mvolobuev/lec6_task2.py @@ -0,0 +1,84 @@ +# Задание 2. Класс Duck. +class Duck: + color = "Зеленый" + def __init__(self, name, weight): + self.name = name + self.weight = weight + print(f"Утка {self.name}.") + + @staticmethod + def print_crack(): + print("Crack") + + @classmethod + def print_color(cls, new_cvet): + cls.cvet = new_cvet + print(cls.cvet) + + def print_name_weight(self): + print(f"{self.name}, {self.weight}") + + def __lt__(self, other): + if self.name == other.name: + return self.weight < other.weight + else: + return self.name < other.name + + def __repr__(self): + return f"Duck at {id(self)}:{self.name}, {self.weight}, {self.cvet}" + + def __str__(self): + return f"Duck:{self.name}, {self.weight}, {self.cvet}" + + + def __add__(self, other): + sum_weight = self.weight + other.weight + new_duck = Duck(None, sum_weight) + return new_duck + + def __gt__(self, other): + if self.name == other.name: + return self.weight > other.weight + else: + return self.name > other.name + + + def __eq__(self, other): + return self.weight == other.weight + + def __ne__(self, other): + return self.weight != other.weight + +class Duckling(): + pass + + +w = Duck("Утенок", 5) +w.print_crack() +w.print_color("Серый") +print(w.cvet) +w.print_name_weight() +print(w) +print(repr(w)) + +d1 = Duck("Кря", 50) +d2 = Duck("Ряк", 100) +d3 = Duck("Кря", 100) +d4 = Duck("Ркя", 90) + +s = d3 + d4 +print(f"Общий вес уток = {s.weight}") +print(d2 > d4) +print(d2 < d4) +print(d2 == d4) +print(d2 != d4) +# Попробовал сортировку с < и > по отдельности все работает. +# При наличии двух магических методов < и >, используется первый в записи. +# Для равно и неравно естественно сортировка не работает. +spisok = [d1, d2, d3, d4] +for i in spisok: + print(i) +print("**********************") +spisok.sort() +for i in spisok: + print(i) diff --git a/Practice/mvolobuev/lec7/lec7_task1.py b/Practice/mvolobuev/lec7/lec7_task1.py new file mode 100644 index 00000000..d2ca1357 --- /dev/null +++ b/Practice/mvolobuev/lec7/lec7_task1.py @@ -0,0 +1,14 @@ +# Написать класс Man, который принимает имя в конструкторе. +# Имеет метод solve_task, который просто выводит "I'm not ready yet". + +class Man: + def __init__(self, name): + self._name = name + + def solve_task(self): + print("I'm not ready yet") + + +imy = Man("Святослав") +print(imy._name) +imy.solve_task() diff --git a/Practice/mvolobuev/lec7/lec7_task2.py b/Practice/mvolobuev/lec7/lec7_task2.py new file mode 100644 index 00000000..c4313df3 --- /dev/null +++ b/Practice/mvolobuev/lec7/lec7_task2.py @@ -0,0 +1,26 @@ +# Написать класс Pupil, у которого переопределен метод solve_task. +# На этот раз он будет думать от 3 до 6 секунд (c помощью метода sleep библиотеки time и randint библиотеки random). +import time +import random + + +class Man: + def __init__(self, name): + self._name = name + + def solve_task(self): + print("I'm not ready yet") + +class Pupil(Man): + def __init__(self, name, student): + self._name = name + self._student = student + + def solve_task(self): + i = random.randint(3, 6) + time.sleep(i) + print("I'm not ready yet") + +stud = Pupil("Иван", "физики") +print(f"{stud._name}, направление {stud._student}") +stud.solve_task() diff --git a/Practice/mvolobuev/lec7/les7_task3.py b/Practice/mvolobuev/lec7/les7_task3.py new file mode 100644 index 00000000..11a43468 --- /dev/null +++ b/Practice/mvolobuev/lec7/les7_task3.py @@ -0,0 +1,156 @@ +# Реализовать систему, эмулирующую работу с банкоматами. +# Создать семейство классов банкоматов, хранящих определенные суммы и поддерживающих различные операции +# (одни банкоматы принимают и выдают наличные, другие позволяют еще и проводить онлайн платежи). +# Операции реализуются посредством методов, выводящих название операции и меняющих (при необходимости) +# количество наличных в банкомате. Для тестирования системы необходимо реализовать алгоритм, +# обходящий список банкоматов разного типа и запрашивающий у каждого банкомата информацию о количестве наличных +# и наборе поддерживаемых операций. +class Banks: + def __init__(self, address, deposit1, deposit2): + self.address = address + self.deposit1 = deposit1 + self.deposit2 = deposit2 + self.history = [] +# Пополнение счета + def vznos(self, i1): + self.deposit1 += i1 + + def snytie(self): + print(f"На Вашем счету {atm.deposit1}") + while True: + j = int(input("Введите сумму которую хотите снять:")) + if j < 0 or j > atm.deposit1: + break + else: + self.deposit1 = self.deposit1 - j + print(f"На Вашем счету осталось: {atm.deposit1}") + return + + def batm(self): + while True: + jatm = int(input("Введите, банкомат с которым Вы хотите работать: ")) + if jatm > 3: + break + else: + return jatm - 1 + +class Atm_ilyinka(Banks): + +# Снятие со счета + def snytie(self): + print(f"На Вашем счету {atm.deposit1}") + while True: + j = int(input("Введите сумму которую хотите снять:")) + if j < 0 or j > atm.deposit1: + break + else: + self.deposit1 = self.deposit1 - j + print(f"На Вашем счету осталось: {atm.deposit1}") + return + + def name(self): + print("Банкомат установлен на улице Ильинская") + print("<Вставьте карту") + print("<Банкомат осуществляет операции по снятию со счета") + io = 0 + return io + + +class Atm_vaneeva(Banks): +# Снятие со счета + def snytie(self): + print(f"На Вашем счету {atm.deposit1}") + while True: + j = int(input("Введите сумму которую хотите снять:")) + if j < 0 or j > atm.deposit1: + break + else: + self.deposit1 = self.deposit1 - j + print(f"На Вашем счету осталось: {atm.deposit1}") + return + + def name(self): + print("Банкомат установлен на улице Ванеева") + print("<Вставьте карту") + print("<Банкомат осуществляет операции по снятию и пополнению счета") + while True: + io = int(input(" Для пополнения счета введите - 0, для снятия со счета - 1 : ")) + if io > 1: + break + else: + return io + +# Пополнение счета + def popolnenie(self): + print(f"На Вашем счету {atm.deposit1}") + while True: + j = int(input("Введите сумму которую хотите положить на счет:")) + if j < 0: + break + else: + self.deposit1 = self.deposit1 + j + print(f"На Вашем счету: {atm.deposit1}") + return + +class Atm_pokrovka(Banks): + +# Снятие со счета + def snytie(self): + print(f"На Вашем счету {atm.deposit1}") + while True: + j = int(input("Введите сумму которую хотите снять:")) + if j < 0 or j > atm.deposit1: + break + else: + self.deposit1 = self.deposit1 - j + print(f"На Вашем счету осталось: {atm.deposit1}") + return + +# Пополнение счета + def popolnenie(self): + print(f"На Вашем счету {atm.deposit1}") + while True: + j = int(input("Введите сумму которую хотите положить на счет:")) + if j < 0: + break + else: + self.deposit1 = self.deposit1 + j + print(f"На Вашем счету: {atm.deposit1}") + return + +# Оплата квитанции + def slip(self): + print(f"На Вашем счету {atm.deposit2}") + while True: + j = int(input("Введите сумму с квитанции, которую хотите оплатить:")) + if j < 0: + break + else: + self.deposit2 = self.deposit2 - j + print(f"На Вашем счету: {atm.deposit2}") + return + + def name(self): + print("Банкомат установлен на улице Покровская") + print("<Вставьте карту") + print("<Банкомат осуществляет операции по снятию, пополнению счета и оплаты квитанций") + while True: + io = int(input(" Для пополнения счета введите - 0, для снятия со счета - 1, для оплаты квитанции - 2 : ")) + if io > 2: + break + else: + return io + +lst =[Atm_ilyinka("Ильинская", 1000, 0), Atm_vaneeva("Ванеева", 1000, 0), Atm_pokrovka("Покровская", 1000, 900)] +for i in range(0, len(lst)): + print(f"Банкомат -{i+1} на ул. {lst[i].address}, снятие наличных / Депозит-1 {lst[i].deposit1} / Депозит-2 {lst[i].deposit2} ") +jatm = Banks.batm(lst) +#atm = lst[jatm] +atm = lst[jatm] +iu = atm.name() +if iu == 0: + j1 = atm.snytie() +elif iu == 1: + j1 = atm.popolnenie() +else: + j1 = atm.slip()