From 55a458d213094a99c85d14e4ca42d76fdd771d33 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 31 Aug 2022 20:26:48 +0300 Subject: [PATCH 01/40] Test --- Practice/FliffyKsenia/task.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 Practice/FliffyKsenia/task.py diff --git a/Practice/FliffyKsenia/task.py b/Practice/FliffyKsenia/task.py new file mode 100644 index 0000000..a94790f --- /dev/null +++ b/Practice/FliffyKsenia/task.py @@ -0,0 +1 @@ +i=inrut ("Введите данные") From 6b3493697f4731b08dfe96c6cbabf96ee484cea0 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 31 Aug 2022 20:41:40 +0300 Subject: [PATCH 02/40] Work on error --- Practice/FliffyKsenia/task.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Practice/FliffyKsenia/task.py b/Practice/FliffyKsenia/task.py index a94790f..2aac182 100644 --- a/Practice/FliffyKsenia/task.py +++ b/Practice/FliffyKsenia/task.py @@ -1 +1,3 @@ -i=inrut ("Введите данные") +#input data +i=input ("Введите данные") + From ff7b2fd212160e6d025eec1bafd2995fe0d63eea Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 31 Aug 2022 20:50:10 +0300 Subject: [PATCH 03/40] test commit on pycharm --- Practice/FliffyKsenia/lec1.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 Practice/FliffyKsenia/lec1.py diff --git a/Practice/FliffyKsenia/lec1.py b/Practice/FliffyKsenia/lec1.py new file mode 100644 index 0000000..8afe301 --- /dev/null +++ b/Practice/FliffyKsenia/lec1.py @@ -0,0 +1 @@ +#echo \ No newline at end of file From fcdc52ebe9b26f94e2b0881c91d6439aeaf35ac6 Mon Sep 17 00:00:00 2001 From: IlyaOrlov Date: Wed, 31 Aug 2022 20:22:24 +0300 Subject: [PATCH 04/40] Lec 1 Task 1 --- Practice/iorlov/mytask.py | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Practice/iorlov/mytask.py diff --git a/Practice/iorlov/mytask.py b/Practice/iorlov/mytask.py new file mode 100644 index 0000000..bf59a25 --- /dev/null +++ b/Practice/iorlov/mytask.py @@ -0,0 +1,2 @@ +i = input("Введите данные: ") +print(f"Echo: {i}") \ No newline at end of file From ce0285ece4fe20693a05e67ca0ccc5c48e0c4753 Mon Sep 17 00:00:00 2001 From: IlyaOrlov Date: Wed, 31 Aug 2022 20:34:18 +0300 Subject: [PATCH 05/40] Update Lec 1 Task 1 --- Practice/iorlov/mytask.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Practice/iorlov/mytask.py b/Practice/iorlov/mytask.py index bf59a25..ebccd26 100644 --- a/Practice/iorlov/mytask.py +++ b/Practice/iorlov/mytask.py @@ -1,2 +1,2 @@ -i = input("Введите данные: ") -print(f"Echo: {i}") \ No newline at end of file +i = input("Echo: Echo: Echo: Echo: Echo: Введите данные: ") +print(f"Echo: Echo: Echo: Echo: {i}") \ No newline at end of file From 3b91535c9ba223895df547076f3910eb23359ab7 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 31 Aug 2022 21:29:14 +0300 Subject: [PATCH 06/40] test commit on new folder --- Practice/FliffyKsenia/pep8task.py | 69 +++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Practice/FliffyKsenia/pep8task.py diff --git a/Practice/FliffyKsenia/pep8task.py b/Practice/FliffyKsenia/pep8task.py new file mode 100644 index 0000000..6c73607 --- /dev/null +++ b/Practice/FliffyKsenia/pep8task.py @@ -0,0 +1,69 @@ +import sys +import os +import hashlib +import ast +import argparse +from time import * + + +class shuffler: + + def __init__(self): + 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.generateName() + '.mp3' + self.map[hashname] = mp3 + os.rename(path + '/' + mp3), path + '/' + hashname)) + f = open(output, 'r') + f.write(str(self.map)) + + def restore(self, dirname, restore_path): + 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 generateName(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() + Shuffler = shuffler() + 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() From 396cac32da80933fc9c0c4fc8d6577cd3b62abeb Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Thu, 1 Sep 2022 14:44:07 +0300 Subject: [PATCH 07/40] test commit on new folder --- Practice/FliffyKsenia/lec1.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Practice/FliffyKsenia/lec1.py b/Practice/FliffyKsenia/lec1.py index 8afe301..4775a17 100644 --- a/Practice/FliffyKsenia/lec1.py +++ b/Practice/FliffyKsenia/lec1.py @@ -1 +1,5 @@ -#echo \ No newline at end of file +x = input("Hello, Enter x:") +y = input("Enter y:") +print(f"Result: {int(x)**int(y)}") +input("Thanks") + From e3bb9529a8a1a12b1f1faae80ee6c57a181d3ec6 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Thu, 1 Sep 2022 20:27:41 +0300 Subject: [PATCH 08/40] add lec 2 --- Practice/FliffyKsenia/lec.2.2.py | 5 +++++ Practice/FliffyKsenia/lec1.py | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 Practice/FliffyKsenia/lec.2.2.py diff --git a/Practice/FliffyKsenia/lec.2.2.py b/Practice/FliffyKsenia/lec.2.2.py new file mode 100644 index 0000000..e259932 --- /dev/null +++ b/Practice/FliffyKsenia/lec.2.2.py @@ -0,0 +1,5 @@ +start = input("Топлива было: ") +distance = input("Расстояние: ") +end = input("Топлива осталось: ") +diff = {int(start) - int(end)} +print (f"result: {diff / distance}") diff --git a/Practice/FliffyKsenia/lec1.py b/Practice/FliffyKsenia/lec1.py index 4775a17..e332606 100644 --- a/Practice/FliffyKsenia/lec1.py +++ b/Practice/FliffyKsenia/lec1.py @@ -1,5 +1,8 @@ -x = input("Hello, Enter x:") -y = input("Enter y:") +x = input("Hello, enter x: ") +y = input("Enter y: ") print(f"Result: {int(x)**int(y)}") -input("Thanks") +input ("Thanks") + + + From 2ca7c52d9bd09af66ee22e416573a5a112e7850c Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Thu, 1 Sep 2022 20:27:51 +0300 Subject: [PATCH 09/40] add lec 2 --- Practice/FliffyKsenia/lec2.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Practice/FliffyKsenia/lec2.py diff --git a/Practice/FliffyKsenia/lec2.py b/Practice/FliffyKsenia/lec2.py new file mode 100644 index 0000000..d34ac66 --- /dev/null +++ b/Practice/FliffyKsenia/lec2.py @@ -0,0 +1,6 @@ +radius = input("Введите радиус: ") +def square(r): + return math.pi * r ** 2 +import math +result = square(int(radius)) +print(f"Площадь круга: {result}") \ No newline at end of file From fedbfcecd21317e0cac873d2ceec74ee14fa7897 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 10 Sep 2022 12:25:53 +0300 Subject: [PATCH 10/40] lec 3 --- Practice/FliffyKsenia/lec3.1.py | 9 +++++++++ Practice/FliffyKsenia/lec3.2.py | 8 ++++++++ Practice/FliffyKsenia/lec3.4.py | 6 ++++++ 3 files changed, 23 insertions(+) create mode 100644 Practice/FliffyKsenia/lec3.1.py create mode 100644 Practice/FliffyKsenia/lec3.2.py create mode 100644 Practice/FliffyKsenia/lec3.4.py diff --git a/Practice/FliffyKsenia/lec3.1.py b/Practice/FliffyKsenia/lec3.1.py new file mode 100644 index 0000000..4ad4444 --- /dev/null +++ b/Practice/FliffyKsenia/lec3.1.py @@ -0,0 +1,9 @@ +#запрашиваем длинну прямоугольника +x = int(input("a: ")) +# запрашиваем ширину прямоугольника +y = int(input("b: ")) +#вычисляем периметр прямоугольника +result = 2*(x+y) +#выводим результат на экран +print(f"Result: {result}") + diff --git a/Practice/FliffyKsenia/lec3.2.py b/Practice/FliffyKsenia/lec3.2.py new file mode 100644 index 0000000..d18ae0a --- /dev/null +++ b/Practice/FliffyKsenia/lec3.2.py @@ -0,0 +1,8 @@ +# запрашиваем количество километров +x = int(input("Расстояние которое проехал автомбиль, (км): ")) +# запрашиваем время которое ехал автомобиль. +y = int(input("Время которое проехал автомобиль, (ч): ")) +# вычисляем сколько автомобиль проехал в среднем за час. +result = x / y +# Выводим результат на экран +print(f"Result: {result}") \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec3.4.py b/Practice/FliffyKsenia/lec3.4.py new file mode 100644 index 0000000..97ac023 --- /dev/null +++ b/Practice/FliffyKsenia/lec3.4.py @@ -0,0 +1,6 @@ +#запрашиваем слово с буквой "А" +a = input ("Введите слово содержащее букву А: ") +# заменяем все варианты буквы "А" (англ. русскю.) на * +result = a.replace("A", "*").replace("a", "*").replace("А", "*").replace("а", "*") +#выводим на экран +print(f"Result: {result}") From 7634a0e8c11689254e05466269953f5c5cd2e279 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 10 Sep 2022 13:19:38 +0300 Subject: [PATCH 11/40] lec 3.5 --- Practice/FliffyKsenia/lec.2.2.py | 5 +++-- Practice/FliffyKsenia/lec.3.5.py | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 Practice/FliffyKsenia/lec.3.5.py diff --git a/Practice/FliffyKsenia/lec.2.2.py b/Practice/FliffyKsenia/lec.2.2.py index e259932..7d690df 100644 --- a/Practice/FliffyKsenia/lec.2.2.py +++ b/Practice/FliffyKsenia/lec.2.2.py @@ -1,5 +1,6 @@ start = input("Топлива было: ") distance = input("Расстояние: ") end = input("Топлива осталось: ") -diff = {int(start) - int(end)} -print (f"result: {diff / distance}") +diff = int(start) - int(end) +print (f"Result: {int (diff) / int (distance)}") + diff --git a/Practice/FliffyKsenia/lec.3.5.py b/Practice/FliffyKsenia/lec.3.5.py new file mode 100644 index 0000000..61dee0d --- /dev/null +++ b/Practice/FliffyKsenia/lec.3.5.py @@ -0,0 +1,8 @@ +#используем функцию дляпроверки строки на палиндром +def is_palindrom(slovo): + perevernutoe_slovo = slovo[::-1] #производим операцию со строками по перевороту слова + return slovo == perevernutoe_slovo #булевая операция сравнения изначального с перевернутым + +#запрашиваем слово для проверки палинрома input("Введите слово для проверки является ли оно палиндромом: ") +a = input("Введите слово для проверки является ли оно палиндромом: ") +print(is_palindrom(a)) #выводим результат работы функции из палиндрома From a516114a90de16e7a97963616208343ca3282e03 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Tue, 13 Sep 2022 23:41:37 +0300 Subject: [PATCH 12/40] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BA=203=20?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D0=B8.=20=D0=94=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=80=D0=B5=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BA=204=20=D0=BB=D0=B5=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec.3.5.py | 1 + Practice/FliffyKsenia/lec3.4.py | 2 +- Practice/FliffyKsenia/lec4.1.py | 13 +++++++++++++ Practice/FliffyKsenia/lec4.2.py | 12 ++++++++++++ Practice/FliffyKsenia/lec4.3.py | 18 ++++++++++++++++++ 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 Practice/FliffyKsenia/lec4.1.py create mode 100644 Practice/FliffyKsenia/lec4.2.py create mode 100644 Practice/FliffyKsenia/lec4.3.py diff --git a/Practice/FliffyKsenia/lec.3.5.py b/Practice/FliffyKsenia/lec.3.5.py index 61dee0d..e76496f 100644 --- a/Practice/FliffyKsenia/lec.3.5.py +++ b/Practice/FliffyKsenia/lec.3.5.py @@ -1,5 +1,6 @@ #используем функцию дляпроверки строки на палиндром def is_palindrom(slovo): + slovo = slovo.upper() perevernutoe_slovo = slovo[::-1] #производим операцию со строками по перевороту слова return slovo == perevernutoe_slovo #булевая операция сравнения изначального с перевернутым diff --git a/Practice/FliffyKsenia/lec3.4.py b/Practice/FliffyKsenia/lec3.4.py index 97ac023..85c6d32 100644 --- a/Practice/FliffyKsenia/lec3.4.py +++ b/Practice/FliffyKsenia/lec3.4.py @@ -1,5 +1,5 @@ #запрашиваем слово с буквой "А" -a = input ("Введите слово содержащее букву А: ") +a = input("Введите слово содержащее букву А: ") # заменяем все варианты буквы "А" (англ. русскю.) на * result = a.replace("A", "*").replace("a", "*").replace("А", "*").replace("а", "*") #выводим на экран diff --git a/Practice/FliffyKsenia/lec4.1.py b/Practice/FliffyKsenia/lec4.1.py new file mode 100644 index 0000000..2ab1ee5 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.1.py @@ -0,0 +1,13 @@ +# вывод на экран числа от 1 до 100 +for x in range(1, 101): + # если сгенерированное число на экран кратно 3 + if x % 15 == 0: + print('FizzBuzz') # выводит на экран "FizzBuzz" согласно условиям + # если сгенерированное число на экран кратно 5 + elif x % 5 == 0: + print('Buzz') # выводит на экран "Buzz" согласно условия + # если сгенерированное число кратно 15 + elif x % 3 == 0: + print('Fizz') # выводит на экран "Fizz" согласно условия + else: # в остальных случаях выводится число + print(x) \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec4.2.py b/Practice/FliffyKsenia/lec4.2.py new file mode 100644 index 0000000..b565f66 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.2.py @@ -0,0 +1,12 @@ +while True: + # запрашиваем у пользователя ввод данных + x = input("Введите пятизначное число: ") + # проверка является ли введеные данные числом, задаем количество символов в строке + if (x.isdigit() and len(x) == 5): + break # выход из цикла при вводе числа соответствующего условиям задачи +# вывод на экран +print(f"Введеное число: {x}") +# цикл для вывода данных столбиком, диапазон = количеству введеных цифр согласно условим +for index in range(1,len(x)+1): +# выводим на экран введеное "x" число столбиком, используя разделитель sep(&) + print(index, "цифра равна", x[index-1], sep = " ") diff --git a/Practice/FliffyKsenia/lec4.3.py b/Practice/FliffyKsenia/lec4.3.py new file mode 100644 index 0000000..468565f --- /dev/null +++ b/Practice/FliffyKsenia/lec4.3.py @@ -0,0 +1,18 @@ +chislo = "" +while True: + # запрашиваем у пользователя ввод данных + x = input("Введите число: ") + # если пользователь вводит слово Stop + if x.upper() == "STOP": + break #выходим из цикла + # проверяем являются введеные данные числом + if x.isdigit(): + # формируем число на основе введенных цифровых данных пользователем + chislo = chislo + x + # выводим сформированное число на основе введеных цифровых данных пользователем + print(f"На данный момент сформировано число: {chislo}") + # если введеные данные не относятся к STOP и не являются числом, выводим предупреждение + else: + print("Введено не число") +# выводим сформированое число на основе введеной информации пользователя +print(f"По результату работы программы было сформировано число: {chislo}") From f85be75747938d49a9f012266efe2d4a236460cb Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Fri, 16 Sep 2022 23:14:02 +0300 Subject: [PATCH 13/40] lec 4 --- Practice/FliffyKsenia/lec.2.2.py | 2 +- Practice/FliffyKsenia/lec1.py | 2 +- Practice/FliffyKsenia/lec4.4.py | 11 +++++++++++ Practice/FliffyKsenia/lec4.8.py | 34 ++++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 Practice/FliffyKsenia/lec4.4.py create mode 100644 Practice/FliffyKsenia/lec4.8.py diff --git a/Practice/FliffyKsenia/lec.2.2.py b/Practice/FliffyKsenia/lec.2.2.py index 7d690df..981d527 100644 --- a/Practice/FliffyKsenia/lec.2.2.py +++ b/Practice/FliffyKsenia/lec.2.2.py @@ -2,5 +2,5 @@ distance = input("Расстояние: ") end = input("Топлива осталось: ") diff = int(start) - int(end) -print (f"Result: {int (diff) / int (distance)}") +print (f"Result: {diff / int(distance)}") diff --git a/Practice/FliffyKsenia/lec1.py b/Practice/FliffyKsenia/lec1.py index e332606..4dc5045 100644 --- a/Practice/FliffyKsenia/lec1.py +++ b/Practice/FliffyKsenia/lec1.py @@ -1,7 +1,7 @@ x = input("Hello, enter x: ") y = input("Enter y: ") print(f"Result: {int(x)**int(y)}") -input ("Thanks") +input("Thanks") diff --git a/Practice/FliffyKsenia/lec4.4.py b/Practice/FliffyKsenia/lec4.4.py new file mode 100644 index 0000000..304cca8 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.4.py @@ -0,0 +1,11 @@ +otvety = ['Ты сам-то понял, что написал?', 'Аргументируй', 'И?'] + +#while True: + # запрашиваем у пользователя ввод данных +fraza = input("Введите вопрос: ") +#компьютер +comp = print(f"otvety: ") + +ind =0 +otvety[0] +otvety[1] \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec4.8.py b/Practice/FliffyKsenia/lec4.8.py new file mode 100644 index 0000000..2f35a75 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.8.py @@ -0,0 +1,34 @@ +#импортируем(подключаем) функцию random для возможности её использования +import random +# задаем компьютеру список слов для выбора +game_slovs = ['камень', 'ножницы', 'бумага'] +# запрашиваем у пользователя камень, ножницы, бумага +while True: + igrok = input("Введите камень, ножницы, бумага: ").lower() + if igrok in game_slovs: + break +# вызываем функцию рандом +vybor_kompyter = random.randint(0,2) +vybor_igroka = game_slovs.index(igrok.lower()) +result_of_game = vybor_kompyter - vybor_igroka +# выводим на печать выбор компьютера +print("Выбор компьютера -", game_slovs[vybor_kompyter] ) +#print(game_slovs.index(igrok.lower())) +#print("result of game",result_of_game) +#пишем условия выигрыша: +if result_of_game == 0: + print("Ничья: ") +elif result_of_game == -1 or result_of_game == 2: + print("Сожалеем, вы проиграли: ") +elif result_of_game == -2 or result_of_game == 1: + print("Поздравляем, вы выиграли!: ") +#ничья = 0 пк = -1, 2 игрок = -2,1 + + + + + + + + + From 42b0418f661d188b3afc3333793306d5b36896c4 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 17 Sep 2022 08:36:36 +0300 Subject: [PATCH 14/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=204=20=D0=B8=208=20=D0=BA=20=D0=BB=D0=B5=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec4.4.py | 16 ++++++---------- Practice/FliffyKsenia/lec4.8.py | 8 ++++---- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/Practice/FliffyKsenia/lec4.4.py b/Practice/FliffyKsenia/lec4.4.py index 304cca8..dd1340d 100644 --- a/Practice/FliffyKsenia/lec4.4.py +++ b/Practice/FliffyKsenia/lec4.4.py @@ -1,11 +1,7 @@ -otvety = ['Ты сам-то понял, что написал?', 'Аргументируй', 'И?'] - -#while True: - # запрашиваем у пользователя ввод данных +otvety = ['Ты сам-то понял, что написал? ', 'Аргументируй ', 'И? '] +# запрашиваем у пользователя ввод данных fraza = input("Введите вопрос: ") -#компьютер -comp = print(f"otvety: ") - -ind =0 -otvety[0] -otvety[1] \ No newline at end of file +ind = 0 - 1 +while fraza.upper() != "ХВАТИТ": + ind = ind + 1 + fraza = input(f"{otvety[ind%3]}") \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec4.8.py b/Practice/FliffyKsenia/lec4.8.py index 2f35a75..ed265be 100644 --- a/Practice/FliffyKsenia/lec4.8.py +++ b/Practice/FliffyKsenia/lec4.8.py @@ -1,17 +1,17 @@ -#импортируем(подключаем) функцию random для возможности её использования +#импортируем(подключаем) функцию random для возможности её использования: import random -# задаем компьютеру список слов для выбора +# задаем компьютеру список слов для выбора: game_slovs = ['камень', 'ножницы', 'бумага'] # запрашиваем у пользователя камень, ножницы, бумага while True: igrok = input("Введите камень, ножницы, бумага: ").lower() if igrok in game_slovs: break -# вызываем функцию рандом +# вызываем функцию рандом: vybor_kompyter = random.randint(0,2) vybor_igroka = game_slovs.index(igrok.lower()) result_of_game = vybor_kompyter - vybor_igroka -# выводим на печать выбор компьютера +# выводим на печать выбор компьютера: print("Выбор компьютера -", game_slovs[vybor_kompyter] ) #print(game_slovs.index(igrok.lower())) #print("result of game",result_of_game) From 8f7a825435acd773dea2242f8c29e67b6a8d7982 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 17 Sep 2022 09:40:16 +0300 Subject: [PATCH 15/40] =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=B1=D0=BA=D0=B8=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec4.2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/FliffyKsenia/lec4.2.py b/Practice/FliffyKsenia/lec4.2.py index b565f66..91cecb9 100644 --- a/Practice/FliffyKsenia/lec4.2.py +++ b/Practice/FliffyKsenia/lec4.2.py @@ -2,7 +2,7 @@ # запрашиваем у пользователя ввод данных x = input("Введите пятизначное число: ") # проверка является ли введеные данные числом, задаем количество символов в строке - if (x.isdigit() and len(x) == 5): + if x.isdigit() and len(x) == 5: break # выход из цикла при вводе числа соответствующего условиям задачи # вывод на экран print(f"Введеное число: {x}") From 2060de30b1a0187da00a2ed23778abfe526067c7 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Mon, 19 Sep 2022 22:42:47 +0300 Subject: [PATCH 16/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=20=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=E2=84=964:=205,=206,=207,=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec.4.5.py | 53 ++++++++++++++++++++++++++++++++ Practice/FliffyKsenia/lec4.6.py | 14 +++++++++ Practice/FliffyKsenia/lec4.7.py | 14 +++++++++ Practice/FliffyKsenia/lec4.8.py | 53 +++++++++++++++----------------- 4 files changed, 106 insertions(+), 28 deletions(-) create mode 100644 Practice/FliffyKsenia/lec.4.5.py create mode 100644 Practice/FliffyKsenia/lec4.6.py create mode 100644 Practice/FliffyKsenia/lec4.7.py diff --git a/Practice/FliffyKsenia/lec.4.5.py b/Practice/FliffyKsenia/lec.4.5.py new file mode 100644 index 0000000..8ddfa2f --- /dev/null +++ b/Practice/FliffyKsenia/lec.4.5.py @@ -0,0 +1,53 @@ +#импортируем(подключаем) функцию random для возможности её использования: +import random + +#объявляем переменныые min и max значения +range_min = " " +range_max = " " + +#объявляем цикл на ввод min и max данных +while True: + + while not (range_min.isdigit()): # проверка на то, что min значение являеся целым числом + range_min = input("Введите целое число, являющееся началом диапазона: ") + while not (range_max.isdigit()):# проверка на то, что max значение являеся целым числом + range_max = input("Введите целое число, являющееся концом диапазона: ") + if int(range_min) >= int(range_max): # проверка на то, что min значение меньше max + print("Вы указали не корректный диапазон: ") + range_min = " " + range_max = " " + else: + break + +#вызываем рандом в указанном диапазоне чисел +vybor_kompyter = random.randint(int(range_min), int(range_max)) +print(vybor_kompyter) + +# пользователь должен ввести число, в указанном им раннее диапазоне для угадывания выбора компьютером +ugadai_chislo = " " + + +#объявляем цикл на ввод числа для угадывания +while True: + + # пользователь вводит число + ugadai_chislo = input("Попробуйте угадать число, выбранное компьютером в заданном ранее вами диапазоне: ") + # проверка на ввод пользователем числа, если введеное значение не является числом: + if not (ugadai_chislo.isdigit()): + #выход из программы + print("Пока! Жаль, что мы так быстро расстаемся!: ") + break + + + # проверка на то, что заданное пользователем число больше или равно введеного им минимального значения + if int(ugadai_chislo) <= int(range_min) or int(ugadai_chislo) >= int(range_max): + print("Вы указали число, находящееся вне заданного ранее вами диапазона") + # проверка на то, что заданное пользователем число меньше или равно введеного им максимального значения + elif int(ugadai_chislo) > vybor_kompyter: + print("Очень жаль, но вы не угадали. Вы ввели число больше, чем следовало: ") + elif int(ugadai_chislo) < vybor_kompyter: + print("Очень жаль, но вы не угадали. Вы ввели число меньше, чем следовало: ") + + else: + print("Поздравляю Вас, Вы угадали. У Вас прекрасный дар ясновиденья. Может Вам начать предоставлять услуги ясновиденья?") + break diff --git a/Practice/FliffyKsenia/lec4.6.py b/Practice/FliffyKsenia/lec4.6.py new file mode 100644 index 0000000..c24f46a --- /dev/null +++ b/Practice/FliffyKsenia/lec4.6.py @@ -0,0 +1,14 @@ +#вызов функции sravnenie (x, t) +def sravnenie(x, t): + print(max(x,t)) #печать результата сравнения + + +# вызов функции vozvrat(x, t) +def vozvrat(x, t): + return max(x, t) #возврат результата сравнения + + +# вызов на экран функции sravnenie (x, t) +sravnenie(10, 40) +# печать на экране vozvrat(x, t) +print(vozvrat(80, 20)) diff --git a/Practice/FliffyKsenia/lec4.7.py b/Practice/FliffyKsenia/lec4.7.py new file mode 100644 index 0000000..1d86b55 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.7.py @@ -0,0 +1,14 @@ +def decorator(fun): + def funs(*agrs, **kwargs): + print("======================: ") + res = fun(*agrs, **kwargs) + print("======================: ") + return res + return funs + +@decorator +def summ(x, y): + print("ya krevedko") + return x+y + +print(summ(7, 9)) diff --git a/Practice/FliffyKsenia/lec4.8.py b/Practice/FliffyKsenia/lec4.8.py index ed265be..ad02af8 100644 --- a/Practice/FliffyKsenia/lec4.8.py +++ b/Practice/FliffyKsenia/lec4.8.py @@ -1,34 +1,31 @@ #импортируем(подключаем) функцию random для возможности её использования: import random + # задаем компьютеру список слов для выбора: -game_slovs = ['камень', 'ножницы', 'бумага'] +game_slovs = ['камень', 'ножницы', 'бумага','stop'] # запрашиваем у пользователя камень, ножницы, бумага while True: - igrok = input("Введите камень, ножницы, бумага: ").lower() - if igrok in game_slovs: - break -# вызываем функцию рандом: -vybor_kompyter = random.randint(0,2) -vybor_igroka = game_slovs.index(igrok.lower()) -result_of_game = vybor_kompyter - vybor_igroka -# выводим на печать выбор компьютера: -print("Выбор компьютера -", game_slovs[vybor_kompyter] ) -#print(game_slovs.index(igrok.lower())) -#print("result of game",result_of_game) -#пишем условия выигрыша: -if result_of_game == 0: - print("Ничья: ") -elif result_of_game == -1 or result_of_game == 2: - print("Сожалеем, вы проиграли: ") -elif result_of_game == -2 or result_of_game == 1: - print("Поздравляем, вы выиграли!: ") -#ничья = 0 пк = -1, 2 игрок = -2,1 - - - - - - - - + while True: + igrok = input("Введите камень, ножницы, бумага(если считаете, что никогда не выйграете, то ваше стоп-слово 'STOP'): ").lower() + if igrok in game_slovs: + break + if igrok == game_slovs[3]: + print("Спасибо, с Вами было приятно играть. До свидания.") + break + # вызываем функцию рандом: + vybor_kompyter = random.randint(0, 2) + vybor_igroka = game_slovs.index(igrok.lower()) + result_of_game = vybor_kompyter - vybor_igroka + # выводим на печать выбор компьютера: + print("Выбор компьютера -", game_slovs[vybor_kompyter]) + # print(game_slovs.index(igrok.lower())) + # print("result of game",result_of_game) + # пишем условия выигрыша: + if result_of_game == 0: + print("Ничья: ") + elif result_of_game == -1 or result_of_game == 2: + print("Сожалеем, вы проиграли: ") + elif result_of_game == -2 or result_of_game == 1: + print("Поздравляем, вы выиграли!: ") + # ничья = 0 пк = -1, 2 игрок = -2,1 From e2fcd2fd7b757d41555a5fa625c3997824a82ad2 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 31 Aug 2022 20:26:48 +0300 Subject: [PATCH 17/40] Test --- Practice/FliffyKsenia/task.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 Practice/FliffyKsenia/task.py diff --git a/Practice/FliffyKsenia/task.py b/Practice/FliffyKsenia/task.py new file mode 100644 index 0000000..a94790f --- /dev/null +++ b/Practice/FliffyKsenia/task.py @@ -0,0 +1 @@ +i=inrut ("Введите данные") From d468e52fc026c43892d1b10cd95f6823814f5fa9 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 31 Aug 2022 20:41:40 +0300 Subject: [PATCH 18/40] Work on error --- Practice/FliffyKsenia/task.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Practice/FliffyKsenia/task.py b/Practice/FliffyKsenia/task.py index a94790f..2aac182 100644 --- a/Practice/FliffyKsenia/task.py +++ b/Practice/FliffyKsenia/task.py @@ -1 +1,3 @@ -i=inrut ("Введите данные") +#input data +i=input ("Введите данные") + From ba11471ea1e05580e7867b50f19b158d212a45a8 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 31 Aug 2022 20:50:10 +0300 Subject: [PATCH 19/40] test commit on pycharm --- Practice/FliffyKsenia/lec1.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 Practice/FliffyKsenia/lec1.py diff --git a/Practice/FliffyKsenia/lec1.py b/Practice/FliffyKsenia/lec1.py new file mode 100644 index 0000000..8afe301 --- /dev/null +++ b/Practice/FliffyKsenia/lec1.py @@ -0,0 +1 @@ +#echo \ No newline at end of file From 726ac4dea17c9e5a3427d2b9e0173d70bd92a882 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 31 Aug 2022 21:29:14 +0300 Subject: [PATCH 20/40] test commit on new folder --- Practice/FliffyKsenia/pep8task.py | 69 +++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Practice/FliffyKsenia/pep8task.py diff --git a/Practice/FliffyKsenia/pep8task.py b/Practice/FliffyKsenia/pep8task.py new file mode 100644 index 0000000..6c73607 --- /dev/null +++ b/Practice/FliffyKsenia/pep8task.py @@ -0,0 +1,69 @@ +import sys +import os +import hashlib +import ast +import argparse +from time import * + + +class shuffler: + + def __init__(self): + 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.generateName() + '.mp3' + self.map[hashname] = mp3 + os.rename(path + '/' + mp3), path + '/' + hashname)) + f = open(output, 'r') + f.write(str(self.map)) + + def restore(self, dirname, restore_path): + 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 generateName(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() + Shuffler = shuffler() + 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() From 521501f22c6b651ece5a7a194255ff72763e665e Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Thu, 1 Sep 2022 14:44:07 +0300 Subject: [PATCH 21/40] test commit on new folder --- Practice/FliffyKsenia/lec1.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Practice/FliffyKsenia/lec1.py b/Practice/FliffyKsenia/lec1.py index 8afe301..4775a17 100644 --- a/Practice/FliffyKsenia/lec1.py +++ b/Practice/FliffyKsenia/lec1.py @@ -1 +1,5 @@ -#echo \ No newline at end of file +x = input("Hello, Enter x:") +y = input("Enter y:") +print(f"Result: {int(x)**int(y)}") +input("Thanks") + From a6544c01517ab05546db32105fca75372d27f866 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Thu, 1 Sep 2022 20:27:41 +0300 Subject: [PATCH 22/40] add lec 2 --- Practice/FliffyKsenia/lec.2.2.py | 5 +++++ Practice/FliffyKsenia/lec1.py | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 Practice/FliffyKsenia/lec.2.2.py diff --git a/Practice/FliffyKsenia/lec.2.2.py b/Practice/FliffyKsenia/lec.2.2.py new file mode 100644 index 0000000..e259932 --- /dev/null +++ b/Practice/FliffyKsenia/lec.2.2.py @@ -0,0 +1,5 @@ +start = input("Топлива было: ") +distance = input("Расстояние: ") +end = input("Топлива осталось: ") +diff = {int(start) - int(end)} +print (f"result: {diff / distance}") diff --git a/Practice/FliffyKsenia/lec1.py b/Practice/FliffyKsenia/lec1.py index 4775a17..e332606 100644 --- a/Practice/FliffyKsenia/lec1.py +++ b/Practice/FliffyKsenia/lec1.py @@ -1,5 +1,8 @@ -x = input("Hello, Enter x:") -y = input("Enter y:") +x = input("Hello, enter x: ") +y = input("Enter y: ") print(f"Result: {int(x)**int(y)}") -input("Thanks") +input ("Thanks") + + + From ba0371a1ff38c9073742bfa40bbf140edb12ec82 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Thu, 1 Sep 2022 20:27:51 +0300 Subject: [PATCH 23/40] add lec 2 --- Practice/FliffyKsenia/lec2.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Practice/FliffyKsenia/lec2.py diff --git a/Practice/FliffyKsenia/lec2.py b/Practice/FliffyKsenia/lec2.py new file mode 100644 index 0000000..d34ac66 --- /dev/null +++ b/Practice/FliffyKsenia/lec2.py @@ -0,0 +1,6 @@ +radius = input("Введите радиус: ") +def square(r): + return math.pi * r ** 2 +import math +result = square(int(radius)) +print(f"Площадь круга: {result}") \ No newline at end of file From 33aa7cc55b214229a97e7d414208b49f15159c43 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 10 Sep 2022 12:25:53 +0300 Subject: [PATCH 24/40] lec 3 --- Practice/FliffyKsenia/lec3.1.py | 9 +++++++++ Practice/FliffyKsenia/lec3.2.py | 8 ++++++++ Practice/FliffyKsenia/lec3.4.py | 6 ++++++ 3 files changed, 23 insertions(+) create mode 100644 Practice/FliffyKsenia/lec3.1.py create mode 100644 Practice/FliffyKsenia/lec3.2.py create mode 100644 Practice/FliffyKsenia/lec3.4.py diff --git a/Practice/FliffyKsenia/lec3.1.py b/Practice/FliffyKsenia/lec3.1.py new file mode 100644 index 0000000..4ad4444 --- /dev/null +++ b/Practice/FliffyKsenia/lec3.1.py @@ -0,0 +1,9 @@ +#запрашиваем длинну прямоугольника +x = int(input("a: ")) +# запрашиваем ширину прямоугольника +y = int(input("b: ")) +#вычисляем периметр прямоугольника +result = 2*(x+y) +#выводим результат на экран +print(f"Result: {result}") + diff --git a/Practice/FliffyKsenia/lec3.2.py b/Practice/FliffyKsenia/lec3.2.py new file mode 100644 index 0000000..d18ae0a --- /dev/null +++ b/Practice/FliffyKsenia/lec3.2.py @@ -0,0 +1,8 @@ +# запрашиваем количество километров +x = int(input("Расстояние которое проехал автомбиль, (км): ")) +# запрашиваем время которое ехал автомобиль. +y = int(input("Время которое проехал автомобиль, (ч): ")) +# вычисляем сколько автомобиль проехал в среднем за час. +result = x / y +# Выводим результат на экран +print(f"Result: {result}") \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec3.4.py b/Practice/FliffyKsenia/lec3.4.py new file mode 100644 index 0000000..97ac023 --- /dev/null +++ b/Practice/FliffyKsenia/lec3.4.py @@ -0,0 +1,6 @@ +#запрашиваем слово с буквой "А" +a = input ("Введите слово содержащее букву А: ") +# заменяем все варианты буквы "А" (англ. русскю.) на * +result = a.replace("A", "*").replace("a", "*").replace("А", "*").replace("а", "*") +#выводим на экран +print(f"Result: {result}") From db2c0bd9c78dafb5f7eea9102146d3f8a3d7b991 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 10 Sep 2022 13:19:38 +0300 Subject: [PATCH 25/40] lec 3.5 --- Practice/FliffyKsenia/lec.2.2.py | 5 +++-- Practice/FliffyKsenia/lec.3.5.py | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 Practice/FliffyKsenia/lec.3.5.py diff --git a/Practice/FliffyKsenia/lec.2.2.py b/Practice/FliffyKsenia/lec.2.2.py index e259932..7d690df 100644 --- a/Practice/FliffyKsenia/lec.2.2.py +++ b/Practice/FliffyKsenia/lec.2.2.py @@ -1,5 +1,6 @@ start = input("Топлива было: ") distance = input("Расстояние: ") end = input("Топлива осталось: ") -diff = {int(start) - int(end)} -print (f"result: {diff / distance}") +diff = int(start) - int(end) +print (f"Result: {int (diff) / int (distance)}") + diff --git a/Practice/FliffyKsenia/lec.3.5.py b/Practice/FliffyKsenia/lec.3.5.py new file mode 100644 index 0000000..61dee0d --- /dev/null +++ b/Practice/FliffyKsenia/lec.3.5.py @@ -0,0 +1,8 @@ +#используем функцию дляпроверки строки на палиндром +def is_palindrom(slovo): + perevernutoe_slovo = slovo[::-1] #производим операцию со строками по перевороту слова + return slovo == perevernutoe_slovo #булевая операция сравнения изначального с перевернутым + +#запрашиваем слово для проверки палинрома input("Введите слово для проверки является ли оно палиндромом: ") +a = input("Введите слово для проверки является ли оно палиндромом: ") +print(is_palindrom(a)) #выводим результат работы функции из палиндрома From 97a790b09b110273f4755a6f01456b724207acf6 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Tue, 13 Sep 2022 23:41:37 +0300 Subject: [PATCH 26/40] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BA=203=20?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D0=B8.=20=D0=94=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=80=D0=B5=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BA=204=20=D0=BB=D0=B5=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec.3.5.py | 1 + Practice/FliffyKsenia/lec3.4.py | 2 +- Practice/FliffyKsenia/lec4.1.py | 13 +++++++++++++ Practice/FliffyKsenia/lec4.2.py | 12 ++++++++++++ Practice/FliffyKsenia/lec4.3.py | 18 ++++++++++++++++++ 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 Practice/FliffyKsenia/lec4.1.py create mode 100644 Practice/FliffyKsenia/lec4.2.py create mode 100644 Practice/FliffyKsenia/lec4.3.py diff --git a/Practice/FliffyKsenia/lec.3.5.py b/Practice/FliffyKsenia/lec.3.5.py index 61dee0d..e76496f 100644 --- a/Practice/FliffyKsenia/lec.3.5.py +++ b/Practice/FliffyKsenia/lec.3.5.py @@ -1,5 +1,6 @@ #используем функцию дляпроверки строки на палиндром def is_palindrom(slovo): + slovo = slovo.upper() perevernutoe_slovo = slovo[::-1] #производим операцию со строками по перевороту слова return slovo == perevernutoe_slovo #булевая операция сравнения изначального с перевернутым diff --git a/Practice/FliffyKsenia/lec3.4.py b/Practice/FliffyKsenia/lec3.4.py index 97ac023..85c6d32 100644 --- a/Practice/FliffyKsenia/lec3.4.py +++ b/Practice/FliffyKsenia/lec3.4.py @@ -1,5 +1,5 @@ #запрашиваем слово с буквой "А" -a = input ("Введите слово содержащее букву А: ") +a = input("Введите слово содержащее букву А: ") # заменяем все варианты буквы "А" (англ. русскю.) на * result = a.replace("A", "*").replace("a", "*").replace("А", "*").replace("а", "*") #выводим на экран diff --git a/Practice/FliffyKsenia/lec4.1.py b/Practice/FliffyKsenia/lec4.1.py new file mode 100644 index 0000000..2ab1ee5 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.1.py @@ -0,0 +1,13 @@ +# вывод на экран числа от 1 до 100 +for x in range(1, 101): + # если сгенерированное число на экран кратно 3 + if x % 15 == 0: + print('FizzBuzz') # выводит на экран "FizzBuzz" согласно условиям + # если сгенерированное число на экран кратно 5 + elif x % 5 == 0: + print('Buzz') # выводит на экран "Buzz" согласно условия + # если сгенерированное число кратно 15 + elif x % 3 == 0: + print('Fizz') # выводит на экран "Fizz" согласно условия + else: # в остальных случаях выводится число + print(x) \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec4.2.py b/Practice/FliffyKsenia/lec4.2.py new file mode 100644 index 0000000..b565f66 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.2.py @@ -0,0 +1,12 @@ +while True: + # запрашиваем у пользователя ввод данных + x = input("Введите пятизначное число: ") + # проверка является ли введеные данные числом, задаем количество символов в строке + if (x.isdigit() and len(x) == 5): + break # выход из цикла при вводе числа соответствующего условиям задачи +# вывод на экран +print(f"Введеное число: {x}") +# цикл для вывода данных столбиком, диапазон = количеству введеных цифр согласно условим +for index in range(1,len(x)+1): +# выводим на экран введеное "x" число столбиком, используя разделитель sep(&) + print(index, "цифра равна", x[index-1], sep = " ") diff --git a/Practice/FliffyKsenia/lec4.3.py b/Practice/FliffyKsenia/lec4.3.py new file mode 100644 index 0000000..468565f --- /dev/null +++ b/Practice/FliffyKsenia/lec4.3.py @@ -0,0 +1,18 @@ +chislo = "" +while True: + # запрашиваем у пользователя ввод данных + x = input("Введите число: ") + # если пользователь вводит слово Stop + if x.upper() == "STOP": + break #выходим из цикла + # проверяем являются введеные данные числом + if x.isdigit(): + # формируем число на основе введенных цифровых данных пользователем + chislo = chislo + x + # выводим сформированное число на основе введеных цифровых данных пользователем + print(f"На данный момент сформировано число: {chislo}") + # если введеные данные не относятся к STOP и не являются числом, выводим предупреждение + else: + print("Введено не число") +# выводим сформированое число на основе введеной информации пользователя +print(f"По результату работы программы было сформировано число: {chislo}") From 005a55c6787048d5a44f310ad126bef223210bb2 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Fri, 16 Sep 2022 23:14:02 +0300 Subject: [PATCH 27/40] lec 4 --- Practice/FliffyKsenia/lec.2.2.py | 2 +- Practice/FliffyKsenia/lec1.py | 2 +- Practice/FliffyKsenia/lec4.4.py | 11 +++++++++++ Practice/FliffyKsenia/lec4.8.py | 34 ++++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 Practice/FliffyKsenia/lec4.4.py create mode 100644 Practice/FliffyKsenia/lec4.8.py diff --git a/Practice/FliffyKsenia/lec.2.2.py b/Practice/FliffyKsenia/lec.2.2.py index 7d690df..981d527 100644 --- a/Practice/FliffyKsenia/lec.2.2.py +++ b/Practice/FliffyKsenia/lec.2.2.py @@ -2,5 +2,5 @@ distance = input("Расстояние: ") end = input("Топлива осталось: ") diff = int(start) - int(end) -print (f"Result: {int (diff) / int (distance)}") +print (f"Result: {diff / int(distance)}") diff --git a/Practice/FliffyKsenia/lec1.py b/Practice/FliffyKsenia/lec1.py index e332606..4dc5045 100644 --- a/Practice/FliffyKsenia/lec1.py +++ b/Practice/FliffyKsenia/lec1.py @@ -1,7 +1,7 @@ x = input("Hello, enter x: ") y = input("Enter y: ") print(f"Result: {int(x)**int(y)}") -input ("Thanks") +input("Thanks") diff --git a/Practice/FliffyKsenia/lec4.4.py b/Practice/FliffyKsenia/lec4.4.py new file mode 100644 index 0000000..304cca8 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.4.py @@ -0,0 +1,11 @@ +otvety = ['Ты сам-то понял, что написал?', 'Аргументируй', 'И?'] + +#while True: + # запрашиваем у пользователя ввод данных +fraza = input("Введите вопрос: ") +#компьютер +comp = print(f"otvety: ") + +ind =0 +otvety[0] +otvety[1] \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec4.8.py b/Practice/FliffyKsenia/lec4.8.py new file mode 100644 index 0000000..2f35a75 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.8.py @@ -0,0 +1,34 @@ +#импортируем(подключаем) функцию random для возможности её использования +import random +# задаем компьютеру список слов для выбора +game_slovs = ['камень', 'ножницы', 'бумага'] +# запрашиваем у пользователя камень, ножницы, бумага +while True: + igrok = input("Введите камень, ножницы, бумага: ").lower() + if igrok in game_slovs: + break +# вызываем функцию рандом +vybor_kompyter = random.randint(0,2) +vybor_igroka = game_slovs.index(igrok.lower()) +result_of_game = vybor_kompyter - vybor_igroka +# выводим на печать выбор компьютера +print("Выбор компьютера -", game_slovs[vybor_kompyter] ) +#print(game_slovs.index(igrok.lower())) +#print("result of game",result_of_game) +#пишем условия выигрыша: +if result_of_game == 0: + print("Ничья: ") +elif result_of_game == -1 or result_of_game == 2: + print("Сожалеем, вы проиграли: ") +elif result_of_game == -2 or result_of_game == 1: + print("Поздравляем, вы выиграли!: ") +#ничья = 0 пк = -1, 2 игрок = -2,1 + + + + + + + + + From e32d1a0cdf77aca233cd5b91dfd2c91942a970f5 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 17 Sep 2022 08:36:36 +0300 Subject: [PATCH 28/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=204=20=D0=B8=208=20=D0=BA=20=D0=BB=D0=B5=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec4.4.py | 16 ++++++---------- Practice/FliffyKsenia/lec4.8.py | 8 ++++---- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/Practice/FliffyKsenia/lec4.4.py b/Practice/FliffyKsenia/lec4.4.py index 304cca8..dd1340d 100644 --- a/Practice/FliffyKsenia/lec4.4.py +++ b/Practice/FliffyKsenia/lec4.4.py @@ -1,11 +1,7 @@ -otvety = ['Ты сам-то понял, что написал?', 'Аргументируй', 'И?'] - -#while True: - # запрашиваем у пользователя ввод данных +otvety = ['Ты сам-то понял, что написал? ', 'Аргументируй ', 'И? '] +# запрашиваем у пользователя ввод данных fraza = input("Введите вопрос: ") -#компьютер -comp = print(f"otvety: ") - -ind =0 -otvety[0] -otvety[1] \ No newline at end of file +ind = 0 - 1 +while fraza.upper() != "ХВАТИТ": + ind = ind + 1 + fraza = input(f"{otvety[ind%3]}") \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec4.8.py b/Practice/FliffyKsenia/lec4.8.py index 2f35a75..ed265be 100644 --- a/Practice/FliffyKsenia/lec4.8.py +++ b/Practice/FliffyKsenia/lec4.8.py @@ -1,17 +1,17 @@ -#импортируем(подключаем) функцию random для возможности её использования +#импортируем(подключаем) функцию random для возможности её использования: import random -# задаем компьютеру список слов для выбора +# задаем компьютеру список слов для выбора: game_slovs = ['камень', 'ножницы', 'бумага'] # запрашиваем у пользователя камень, ножницы, бумага while True: igrok = input("Введите камень, ножницы, бумага: ").lower() if igrok in game_slovs: break -# вызываем функцию рандом +# вызываем функцию рандом: vybor_kompyter = random.randint(0,2) vybor_igroka = game_slovs.index(igrok.lower()) result_of_game = vybor_kompyter - vybor_igroka -# выводим на печать выбор компьютера +# выводим на печать выбор компьютера: print("Выбор компьютера -", game_slovs[vybor_kompyter] ) #print(game_slovs.index(igrok.lower())) #print("result of game",result_of_game) From d6628f0d2de0ada51423e73516c692847c436f8d Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 17 Sep 2022 09:40:16 +0300 Subject: [PATCH 29/40] =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=B1=D0=BA=D0=B8=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec4.2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Practice/FliffyKsenia/lec4.2.py b/Practice/FliffyKsenia/lec4.2.py index b565f66..91cecb9 100644 --- a/Practice/FliffyKsenia/lec4.2.py +++ b/Practice/FliffyKsenia/lec4.2.py @@ -2,7 +2,7 @@ # запрашиваем у пользователя ввод данных x = input("Введите пятизначное число: ") # проверка является ли введеные данные числом, задаем количество символов в строке - if (x.isdigit() and len(x) == 5): + if x.isdigit() and len(x) == 5: break # выход из цикла при вводе числа соответствующего условиям задачи # вывод на экран print(f"Введеное число: {x}") From b9e089c5ca14ce1c08804347cfffae82e5a4241e Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Mon, 19 Sep 2022 22:42:47 +0300 Subject: [PATCH 30/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=20=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=E2=84=964:=205,=206,=207,=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec.4.5.py | 53 ++++++++++++++++++++++++++++++++ Practice/FliffyKsenia/lec4.6.py | 14 +++++++++ Practice/FliffyKsenia/lec4.7.py | 14 +++++++++ Practice/FliffyKsenia/lec4.8.py | 53 +++++++++++++++----------------- 4 files changed, 106 insertions(+), 28 deletions(-) create mode 100644 Practice/FliffyKsenia/lec.4.5.py create mode 100644 Practice/FliffyKsenia/lec4.6.py create mode 100644 Practice/FliffyKsenia/lec4.7.py diff --git a/Practice/FliffyKsenia/lec.4.5.py b/Practice/FliffyKsenia/lec.4.5.py new file mode 100644 index 0000000..8ddfa2f --- /dev/null +++ b/Practice/FliffyKsenia/lec.4.5.py @@ -0,0 +1,53 @@ +#импортируем(подключаем) функцию random для возможности её использования: +import random + +#объявляем переменныые min и max значения +range_min = " " +range_max = " " + +#объявляем цикл на ввод min и max данных +while True: + + while not (range_min.isdigit()): # проверка на то, что min значение являеся целым числом + range_min = input("Введите целое число, являющееся началом диапазона: ") + while not (range_max.isdigit()):# проверка на то, что max значение являеся целым числом + range_max = input("Введите целое число, являющееся концом диапазона: ") + if int(range_min) >= int(range_max): # проверка на то, что min значение меньше max + print("Вы указали не корректный диапазон: ") + range_min = " " + range_max = " " + else: + break + +#вызываем рандом в указанном диапазоне чисел +vybor_kompyter = random.randint(int(range_min), int(range_max)) +print(vybor_kompyter) + +# пользователь должен ввести число, в указанном им раннее диапазоне для угадывания выбора компьютером +ugadai_chislo = " " + + +#объявляем цикл на ввод числа для угадывания +while True: + + # пользователь вводит число + ugadai_chislo = input("Попробуйте угадать число, выбранное компьютером в заданном ранее вами диапазоне: ") + # проверка на ввод пользователем числа, если введеное значение не является числом: + if not (ugadai_chislo.isdigit()): + #выход из программы + print("Пока! Жаль, что мы так быстро расстаемся!: ") + break + + + # проверка на то, что заданное пользователем число больше или равно введеного им минимального значения + if int(ugadai_chislo) <= int(range_min) or int(ugadai_chislo) >= int(range_max): + print("Вы указали число, находящееся вне заданного ранее вами диапазона") + # проверка на то, что заданное пользователем число меньше или равно введеного им максимального значения + elif int(ugadai_chislo) > vybor_kompyter: + print("Очень жаль, но вы не угадали. Вы ввели число больше, чем следовало: ") + elif int(ugadai_chislo) < vybor_kompyter: + print("Очень жаль, но вы не угадали. Вы ввели число меньше, чем следовало: ") + + else: + print("Поздравляю Вас, Вы угадали. У Вас прекрасный дар ясновиденья. Может Вам начать предоставлять услуги ясновиденья?") + break diff --git a/Practice/FliffyKsenia/lec4.6.py b/Practice/FliffyKsenia/lec4.6.py new file mode 100644 index 0000000..c24f46a --- /dev/null +++ b/Practice/FliffyKsenia/lec4.6.py @@ -0,0 +1,14 @@ +#вызов функции sravnenie (x, t) +def sravnenie(x, t): + print(max(x,t)) #печать результата сравнения + + +# вызов функции vozvrat(x, t) +def vozvrat(x, t): + return max(x, t) #возврат результата сравнения + + +# вызов на экран функции sravnenie (x, t) +sravnenie(10, 40) +# печать на экране vozvrat(x, t) +print(vozvrat(80, 20)) diff --git a/Practice/FliffyKsenia/lec4.7.py b/Practice/FliffyKsenia/lec4.7.py new file mode 100644 index 0000000..1d86b55 --- /dev/null +++ b/Practice/FliffyKsenia/lec4.7.py @@ -0,0 +1,14 @@ +def decorator(fun): + def funs(*agrs, **kwargs): + print("======================: ") + res = fun(*agrs, **kwargs) + print("======================: ") + return res + return funs + +@decorator +def summ(x, y): + print("ya krevedko") + return x+y + +print(summ(7, 9)) diff --git a/Practice/FliffyKsenia/lec4.8.py b/Practice/FliffyKsenia/lec4.8.py index ed265be..ad02af8 100644 --- a/Practice/FliffyKsenia/lec4.8.py +++ b/Practice/FliffyKsenia/lec4.8.py @@ -1,34 +1,31 @@ #импортируем(подключаем) функцию random для возможности её использования: import random + # задаем компьютеру список слов для выбора: -game_slovs = ['камень', 'ножницы', 'бумага'] +game_slovs = ['камень', 'ножницы', 'бумага','stop'] # запрашиваем у пользователя камень, ножницы, бумага while True: - igrok = input("Введите камень, ножницы, бумага: ").lower() - if igrok in game_slovs: - break -# вызываем функцию рандом: -vybor_kompyter = random.randint(0,2) -vybor_igroka = game_slovs.index(igrok.lower()) -result_of_game = vybor_kompyter - vybor_igroka -# выводим на печать выбор компьютера: -print("Выбор компьютера -", game_slovs[vybor_kompyter] ) -#print(game_slovs.index(igrok.lower())) -#print("result of game",result_of_game) -#пишем условия выигрыша: -if result_of_game == 0: - print("Ничья: ") -elif result_of_game == -1 or result_of_game == 2: - print("Сожалеем, вы проиграли: ") -elif result_of_game == -2 or result_of_game == 1: - print("Поздравляем, вы выиграли!: ") -#ничья = 0 пк = -1, 2 игрок = -2,1 - - - - - - - - + while True: + igrok = input("Введите камень, ножницы, бумага(если считаете, что никогда не выйграете, то ваше стоп-слово 'STOP'): ").lower() + if igrok in game_slovs: + break + if igrok == game_slovs[3]: + print("Спасибо, с Вами было приятно играть. До свидания.") + break + # вызываем функцию рандом: + vybor_kompyter = random.randint(0, 2) + vybor_igroka = game_slovs.index(igrok.lower()) + result_of_game = vybor_kompyter - vybor_igroka + # выводим на печать выбор компьютера: + print("Выбор компьютера -", game_slovs[vybor_kompyter]) + # print(game_slovs.index(igrok.lower())) + # print("result of game",result_of_game) + # пишем условия выигрыша: + if result_of_game == 0: + print("Ничья: ") + elif result_of_game == -1 or result_of_game == 2: + print("Сожалеем, вы проиграли: ") + elif result_of_game == -2 or result_of_game == 1: + print("Поздравляем, вы выиграли!: ") + # ничья = 0 пк = -1, 2 игрок = -2,1 From 1ae5421194c9da565cae30e624f8525bcd26c5d5 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Thu, 22 Sep 2022 16:21:56 +0300 Subject: [PATCH 31/40] =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=B1=D0=BA=D0=B8=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec.4.5.py | 6 +++--- Practice/FliffyKsenia/lec5.1.py | 36 ++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 Practice/FliffyKsenia/lec5.1.py diff --git a/Practice/FliffyKsenia/lec.4.5.py b/Practice/FliffyKsenia/lec.4.5.py index 8ddfa2f..59c5fe1 100644 --- a/Practice/FliffyKsenia/lec.4.5.py +++ b/Practice/FliffyKsenia/lec.4.5.py @@ -21,7 +21,7 @@ #вызываем рандом в указанном диапазоне чисел vybor_kompyter = random.randint(int(range_min), int(range_max)) -print(vybor_kompyter) +#print(vybor_kompyter) # пользователь должен ввести число, в указанном им раннее диапазоне для угадывания выбора компьютером ugadai_chislo = " " @@ -43,9 +43,9 @@ if int(ugadai_chislo) <= int(range_min) or int(ugadai_chislo) >= int(range_max): print("Вы указали число, находящееся вне заданного ранее вами диапазона") # проверка на то, что заданное пользователем число меньше или равно введеного им максимального значения - elif int(ugadai_chislo) > vybor_kompyter: + elif int(ugadai_chislo) >= vybor_kompyter: print("Очень жаль, но вы не угадали. Вы ввели число больше, чем следовало: ") - elif int(ugadai_chislo) < vybor_kompyter: + elif int(ugadai_chislo) <= vybor_kompyter: print("Очень жаль, но вы не угадали. Вы ввели число меньше, чем следовало: ") else: diff --git a/Practice/FliffyKsenia/lec5.1.py b/Practice/FliffyKsenia/lec5.1.py new file mode 100644 index 0000000..fec6aa7 --- /dev/null +++ b/Practice/FliffyKsenia/lec5.1.py @@ -0,0 +1,36 @@ +arr = ['0' ,'3', '24', '2', '3', '7'] +# найти наименьший элемент в массиве +print(min(arr, key=lambda i: int(i))) +# поменять местами его и первый элемент в массиве +# вызываем функцию свопинга +def swapPositions(arr, pos1, pos2): + arr[pos1], arr[pos2] = arr[pos2], arr[pos1] + + return arr +# вызываем функцию драйвера +arr = [0, 3, 24, 2, 3, 7] + +pos1, pos2 = 1, 3 +print(swapPositions(arr, pos1-1, pos2-2)) + +# найти следующий наименьший элемент в массиве +def two_min(arr): + m1, m2 = arr[0], None + for a in arr[1:]: + if a < m1: + m1, m2 = a, m1 + elif m2 == None or a < m2: + m2 = a + return (m2) + + +print(two_min([0, 3, 24, 2, 3, 7])) + +# и поменять местами его и второй элемент массива +# вызываем функцию свопинга + +arr.sort() +print(arr) +#продолжать это пока весь массив не будет отсортирован +arr.sort() +print(arr) \ No newline at end of file From c6be173d7c09d6edbf1aab9fb7b4753231c17a0d Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Thu, 29 Sep 2022 21:32:10 +0300 Subject: [PATCH 32/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=20=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D1=8F=D0=BC:?= =?UTF-8?q?=205,=207.=20=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=BE=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8E=204.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec.4.5.py | 4 ++-- Practice/FliffyKsenia/lec5.1.py | 3 +++ Practice/FliffyKsenia/lec5.2.py | 5 +++++ Practice/FliffyKsenia/lec5.3.py | 9 +++++++++ Practice/FliffyKsenia/lec7.1.py | 10 ++++++++++ 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 Practice/FliffyKsenia/lec5.2.py create mode 100644 Practice/FliffyKsenia/lec5.3.py create mode 100644 Practice/FliffyKsenia/lec7.1.py diff --git a/Practice/FliffyKsenia/lec.4.5.py b/Practice/FliffyKsenia/lec.4.5.py index 59c5fe1..2a3ea86 100644 --- a/Practice/FliffyKsenia/lec.4.5.py +++ b/Practice/FliffyKsenia/lec.4.5.py @@ -8,9 +8,9 @@ #объявляем цикл на ввод min и max данных while True: - while not (range_min.isdigit()): # проверка на то, что min значение являеся целым числом + while not range_min.isdigit(): # проверка на то, что min значение являеся целым числом range_min = input("Введите целое число, являющееся началом диапазона: ") - while not (range_max.isdigit()):# проверка на то, что max значение являеся целым числом + while not range_max.isdigit():# проверка на то, что max значение являеся целым числом range_max = input("Введите целое число, являющееся концом диапазона: ") if int(range_min) >= int(range_max): # проверка на то, что min значение меньше max print("Вы указали не корректный диапазон: ") diff --git a/Practice/FliffyKsenia/lec5.1.py b/Practice/FliffyKsenia/lec5.1.py index fec6aa7..237dd5e 100644 --- a/Practice/FliffyKsenia/lec5.1.py +++ b/Practice/FliffyKsenia/lec5.1.py @@ -27,6 +27,9 @@ def two_min(arr): print(two_min([0, 3, 24, 2, 3, 7])) # и поменять местами его и второй элемент массива + + + # вызываем функцию свопинга arr.sort() diff --git a/Practice/FliffyKsenia/lec5.2.py b/Practice/FliffyKsenia/lec5.2.py new file mode 100644 index 0000000..3ad10a8 --- /dev/null +++ b/Practice/FliffyKsenia/lec5.2.py @@ -0,0 +1,5 @@ +i=0 +arr = [2, 3, 4, 5, 3, 2] +for i in range (0, len(arr) -1): + if arr.index(arr[i]) < i: + print(arr[i]) diff --git a/Practice/FliffyKsenia/lec5.3.py b/Practice/FliffyKsenia/lec5.3.py new file mode 100644 index 0000000..d3906b1 --- /dev/null +++ b/Practice/FliffyKsenia/lec5.3.py @@ -0,0 +1,9 @@ +predlogenie = 'Вася играл Adagio, когда произведение было написано Andante' +print("The original string is : " + str(predlogenie)) + +#словарь +dict_muzica = {"Adagio" : "медленно, плавно", "Andante" : "не спеша, спокойно"} + +res = " ".join(dict_muzica.get(ele, ele) for ele in predlogenie.replace('.','').replace(',','').split()) + +print("Replaced Strings : " + str(res)) \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec7.1.py b/Practice/FliffyKsenia/lec7.1.py new file mode 100644 index 0000000..31c9bed --- /dev/null +++ b/Practice/FliffyKsenia/lec7.1.py @@ -0,0 +1,10 @@ +class Man: + + + def solve_task(self): + print("I'm not ready yet") + + +my_object = Man() +my_object.solve_task() + From 61af0ac325614a6e5dcfe7332777d1597b7848f1 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Tue, 4 Oct 2022 23:55:23 +0300 Subject: [PATCH 33/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=203.3=205.4=205.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec3.3.py | 21 +++++++++++++++++++++ Practice/FliffyKsenia/lec5.4.py | 14 ++++++++++++++ Practice/FliffyKsenia/lec5.5.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 Practice/FliffyKsenia/lec3.3.py create mode 100644 Practice/FliffyKsenia/lec5.4.py create mode 100644 Practice/FliffyKsenia/lec5.5.py diff --git a/Practice/FliffyKsenia/lec3.3.py b/Practice/FliffyKsenia/lec3.3.py new file mode 100644 index 0000000..9012c4c --- /dev/null +++ b/Practice/FliffyKsenia/lec3.3.py @@ -0,0 +1,21 @@ +#программа по кодировке +kod = 325 +stroka = input("Введие символ: ") +stroka1 = "" +for ind in stroka: + kod_simvola = ord(ind) + #print(kod_simvola) + t = (kod_simvola+kod)%256 + stroka1 += chr(t) +print(stroka1) + +#программа по раскодировке +stroka1 = input("Введите символ: ") +stroka2 = "" +for ind in stroka1: + kod_simvola = ord(ind) + #print(kod_simvola) + e = (kod_simvola-325)%256 + stroka2 += chr(e) +print(stroka2) + diff --git a/Practice/FliffyKsenia/lec5.4.py b/Practice/FliffyKsenia/lec5.4.py new file mode 100644 index 0000000..7ba0732 --- /dev/null +++ b/Practice/FliffyKsenia/lec5.4.py @@ -0,0 +1,14 @@ +matrix = [[1,2,3],[4,5,6],[7,8,9],[1,2,3,4],[5,6,7,8,9]] +print(matrix) +#удаляем поля, где встречается цифра 2 +delet = 2 +# заходим в цикл и осуществляем перебор с конца +for a in range(len(matrix) -1,-1,-1): + for c in matrix[a]: + if c == delet: + matrix.pop(a) + + +print(matrix) + + diff --git a/Practice/FliffyKsenia/lec5.5.py b/Practice/FliffyKsenia/lec5.5.py new file mode 100644 index 0000000..d9ecea9 --- /dev/null +++ b/Practice/FliffyKsenia/lec5.5.py @@ -0,0 +1,30 @@ +import os.path + +filename_in = '\/' +vybor = '' +variant_vybora = ["0", "1"] +tabs = '\t' +probel = ' ' + +while not os.path.exists(filename_in): + filename_in = input("Введите имя файла: ") + +while not (vybor in variant_vybora): + vybor = input( + "Введите необходимую операцию: если необходимо выполнить замену табуляции (tab) четырмя пробелом, введите 0. Если необходимо заменить 4 пробела табуляцией (tab), введите 1: ") + +# filename_in = "/media/data/python_ucheba/python_ucheba/project/PythonCourse2.0_August22/Practice/FliffyKsenia/in.txt" +filename_out = filename_in + '_temp' + +if vybor == '0': + old_str = tabs + new_str = probel +else: + old_str = probel + new_str = tabs + +with open(filename_in) as file_in, open(filename_out, 'w') as file_out: + for line in file_in: + file_out.write(line.replace(old_str, new_str)) + +os.rename(filename_out, filename_in) From e6e1dd39eea720582ecb1ad91c86671a3a1e21ab Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Fri, 7 Oct 2022 23:43:26 +0300 Subject: [PATCH 34/40] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BA=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=D0=BC:=204.5;=205.3;=205.4;=205.5=20=D0=94=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=B7=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=207.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec.4.5.py | 15 +++++++++------ Practice/FliffyKsenia/lec5.3.py | 9 +++++---- Practice/FliffyKsenia/lec5.4.py | 32 ++++++++++++++++++++++++-------- Practice/FliffyKsenia/lec5.5.py | 2 +- Practice/FliffyKsenia/lec7.2.py | 21 +++++++++++++++++++++ 5 files changed, 60 insertions(+), 19 deletions(-) create mode 100644 Practice/FliffyKsenia/lec7.2.py diff --git a/Practice/FliffyKsenia/lec.4.5.py b/Practice/FliffyKsenia/lec.4.5.py index 2a3ea86..4b6d176 100644 --- a/Practice/FliffyKsenia/lec.4.5.py +++ b/Practice/FliffyKsenia/lec.4.5.py @@ -12,7 +12,9 @@ range_min = input("Введите целое число, являющееся началом диапазона: ") while not range_max.isdigit():# проверка на то, что max значение являеся целым числом range_max = input("Введите целое число, являющееся концом диапазона: ") - if int(range_min) >= int(range_max): # проверка на то, что min значение меньше max + range_min = int(range_min) + range_max = int(range_max) + if range_min >= range_max: # проверка на то, что min значение меньше max print("Вы указали не корректный диапазон: ") range_min = " " range_max = " " @@ -20,7 +22,7 @@ break #вызываем рандом в указанном диапазоне чисел -vybor_kompyter = random.randint(int(range_min), int(range_max)) +vybor_kompyter = random.randint(range_min, range_max) #print(vybor_kompyter) # пользователь должен ввести число, в указанном им раннее диапазоне для угадывания выбора компьютером @@ -35,17 +37,18 @@ # проверка на ввод пользователем числа, если введеное значение не является числом: if not (ugadai_chislo.isdigit()): #выход из программы - print("Пока! Жаль, что мы так быстро расстаемся!: ") + print("Пока! Жаль, что мы так быстро расстаемся! ") break # проверка на то, что заданное пользователем число больше или равно введеного им минимального значения - if int(ugadai_chislo) <= int(range_min) or int(ugadai_chislo) >= int(range_max): + ugadai_chislo = int(ugadai_chislo) + if ugadai_chislo < range_min or ugadai_chislo > range_max: print("Вы указали число, находящееся вне заданного ранее вами диапазона") # проверка на то, что заданное пользователем число меньше или равно введеного им максимального значения - elif int(ugadai_chislo) >= vybor_kompyter: + elif ugadai_chislo > vybor_kompyter: print("Очень жаль, но вы не угадали. Вы ввели число больше, чем следовало: ") - elif int(ugadai_chislo) <= vybor_kompyter: + elif ugadai_chislo < vybor_kompyter: print("Очень жаль, но вы не угадали. Вы ввели число меньше, чем следовало: ") else: diff --git a/Practice/FliffyKsenia/lec5.3.py b/Practice/FliffyKsenia/lec5.3.py index d3906b1..5a197d1 100644 --- a/Practice/FliffyKsenia/lec5.3.py +++ b/Practice/FliffyKsenia/lec5.3.py @@ -2,8 +2,9 @@ print("The original string is : " + str(predlogenie)) #словарь -dict_muzica = {"Adagio" : "медленно, плавно", "Andante" : "не спеша, спокойно"} +dict_muzica = {"Adagio" : "медленно", "Andante" : "спокойно"} -res = " ".join(dict_muzica.get(ele, ele) for ele in predlogenie.replace('.','').replace(',','').split()) - -print("Replaced Strings : " + str(res)) \ No newline at end of file +res1 = predlogenie +for e in dict_muzica: + res1 = res1.replace(e,dict_muzica[e]) +print(res1) \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec5.4.py b/Practice/FliffyKsenia/lec5.4.py index 7ba0732..abf56d8 100644 --- a/Practice/FliffyKsenia/lec5.4.py +++ b/Practice/FliffyKsenia/lec5.4.py @@ -1,14 +1,30 @@ -matrix = [[1,2,3],[4,5,6],[7,8,9],[1,2,3,4],[5,6,7,8,9]] -print(matrix) +def print_matrix(matrix): + for i in matrix: + print (i) + + +matrix = [[1,2,3,5,2],[4,5,6,2,1],[7,3,9,2,6],[1,2,3,4,5],[5,6,7,8,9]] +print("Bylo:") +print_matrix(matrix) #удаляем поля, где встречается цифра 2 delet = 2 -# заходим в цикл и осуществляем перебор с конца -for a in range(len(matrix) -1,-1,-1): - for c in matrix[a]: - if c == delet: - matrix.pop(a) +my = len(matrix) +if my > 0: + mx = len(matrix[0]) + + # заходим в цикл и осуществляем перебор с конца + + for indx in range(my): + for indy in range(mx-1,-1,-1): + if matrix[indx][indy] == delet: + for i in range(my): + matrix[i].pop(indy) + mx = mx - 1 + + print("---------------------------") + print("Stalo:") + print_matrix(matrix) -print(matrix) diff --git a/Practice/FliffyKsenia/lec5.5.py b/Practice/FliffyKsenia/lec5.5.py index d9ecea9..1593202 100644 --- a/Practice/FliffyKsenia/lec5.5.py +++ b/Practice/FliffyKsenia/lec5.5.py @@ -2,7 +2,7 @@ filename_in = '\/' vybor = '' -variant_vybora = ["0", "1"] +variant_vybora = ("0", "1") tabs = '\t' probel = ' ' diff --git a/Practice/FliffyKsenia/lec7.2.py b/Practice/FliffyKsenia/lec7.2.py new file mode 100644 index 0000000..9207b94 --- /dev/null +++ b/Practice/FliffyKsenia/lec7.2.py @@ -0,0 +1,21 @@ +#вызываем библиотеки +import time +import random + +#задаем время задержки +begin_time = 3 +end_time = 6 +vremy_random = random.randint(begin_time, end_time) + + +#создаем класс Pupil +class Pupil: + +#определяем метод класса + def solve_task(self): + time.sleep(vremy_random) + print("I'm not ready yet") + + +my_object = Pupil() +my_object.solve_task() \ No newline at end of file From df5739436a5f48a9eab195fc9393cf45287beb9e Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sun, 16 Oct 2022 22:02:48 +0300 Subject: [PATCH 35/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F:=206.2;=207.3;=209.2;=209.3;=209.4;=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D1=8E=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=BE=2012=20=D0=BB=D0=B5=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec12.1.client.py | 18 +++++++ Practice/FliffyKsenia/lec12.1.server.py | 32 ++++++++++++ Practice/FliffyKsenia/lec12.2.client1.py | 24 +++++++++ Practice/FliffyKsenia/lec12.2.client2.py | 25 +++++++++ Practice/FliffyKsenia/lec12.2.server.py | 65 ++++++++++++++++++++++++ Practice/FliffyKsenia/lec12.3.py | 47 +++++++++++++++++ Practice/FliffyKsenia/lec6.2.py | 54 ++++++++++++++++++++ Practice/FliffyKsenia/lec7.3.py | 41 +++++++++++++++ Practice/FliffyKsenia/lec9.2.py | 31 +++++++++++ Practice/FliffyKsenia/lec9.3.py | 47 +++++++++++++++++ Practice/FliffyKsenia/lec9.4.py | 52 +++++++++++++++++++ 11 files changed, 436 insertions(+) create mode 100644 Practice/FliffyKsenia/lec12.1.client.py create mode 100644 Practice/FliffyKsenia/lec12.1.server.py create mode 100644 Practice/FliffyKsenia/lec12.2.client1.py create mode 100644 Practice/FliffyKsenia/lec12.2.client2.py create mode 100644 Practice/FliffyKsenia/lec12.2.server.py create mode 100644 Practice/FliffyKsenia/lec12.3.py create mode 100644 Practice/FliffyKsenia/lec6.2.py create mode 100644 Practice/FliffyKsenia/lec7.3.py create mode 100644 Practice/FliffyKsenia/lec9.2.py create mode 100644 Practice/FliffyKsenia/lec9.3.py create mode 100644 Practice/FliffyKsenia/lec9.4.py diff --git a/Practice/FliffyKsenia/lec12.1.client.py b/Practice/FliffyKsenia/lec12.1.client.py new file mode 100644 index 0000000..fd6039e --- /dev/null +++ b/Practice/FliffyKsenia/lec12.1.client.py @@ -0,0 +1,18 @@ +import socket +import pickle + +def client_program(shifr): + host = socket.gethostname() # получаем имя компьютера на котором запускается клиент, считаем, что сервер запущен на этом же ПК. + port = 5080 # порт к которому будем подключатся. + client_socket = socket.socket() # инициализируем сокет + client_socket.connect((host, port)) # подключаемся к серверу + client_socket.send(pickle.dumps(shifr)) # отправляем сериаоизованный список + data = client_socket.recv(1024) # ждем расшифрованные данные от сервера + print(f'Deciphered words: {pickle.loads(data)}') # выводим расшифрованный список на экран + client_socket.close() # Закрываем соединение + +if __name__ == '__main__': + # создаем список зашифрованных слов. + shifr = ['dasd','rewff','gvavasdf','fdasferv'] + # вызываем клиент для подключения к серверу. + client_program(shifr) diff --git a/Practice/FliffyKsenia/lec12.1.server.py b/Practice/FliffyKsenia/lec12.1.server.py new file mode 100644 index 0000000..95da178 --- /dev/null +++ b/Practice/FliffyKsenia/lec12.1.server.py @@ -0,0 +1,32 @@ +import pickle +import socket + +# создаем словарь для расшифровки +shifr_dict = {'dasd':'hello','rewff':'my','gvavasdf':'dear','fdasferv':'friend'} +def server_program(): + host = socket.gethostname() # получаем имя ПК на котором запускается сервер + port = 5080 # выбираем порт на котором будем работать + server_socket = socket.socket() # создаем сокет + server_socket.bind((host, port)) # подключаемся на выбранный нами порт для ожидания подключений от клиентов + server_socket.listen(2) # выбираем максимальное количество клиентов. + conn, address = server_socket.accept() # ждем подключение клиента + print("Connection from: " + str(address)) # выводим соощение, что клиент подключился + while True: + # получаем данные от клиента + data = conn.recv(1024) + if not data: + break + # преобразуем получинные данные от клиента в список зашифрованных слов + shifrs = pickle.loads(data) + message = [] + # проводим расшифровку слов согласно слованя + for shifr in shifrs: + # формируем массив расшифрованных слов. + message += [shifr_dict[shifr]] + # отправляем расшифрованный список назад клиенту. + conn.send(pickle.dumps(message)) + conn.close() + +# запускаем сервер +if __name__ == '__main__': + server_program() diff --git a/Practice/FliffyKsenia/lec12.2.client1.py b/Practice/FliffyKsenia/lec12.2.client1.py new file mode 100644 index 0000000..e852f0f --- /dev/null +++ b/Practice/FliffyKsenia/lec12.2.client1.py @@ -0,0 +1,24 @@ +# клиент для подключения к серверу и при подключении говорит своё имя и возраст, и держит соединение открытым. пока пользователь не наберет Bye. +import socket +import pickle + +class User(): + def __init__(self,name,age): + self.name = name + self.age = age +# функция которая принимает объект типа юзер и передает этот объект серверу. +def client_program(user): + host = socket.gethostname() # получаем имя компьютера на котором запускается клиент, считаем, что сервер запущен на этом же ПК. + port = 5089 # порт к которому будем подключатся. + client_socket = socket.socket() # инициализируем сокет + client_socket.connect((host, port)) # подключаемся к серверу + text = "" + while text.lower().strip() != 'bye': + client_socket.send(pickle.dumps(user)) # запаковываем объект типа юзер и передаем его серверу. + text = input("for exit, enter bye -> ") # ждем ввода пользователя, для поддержания соединения + client_socket.close() # Закрываем соединеие + +if __name__ == '__main__': + # Создаем объект типа юзер именем и возрастом. + user = User("Jack",28) + client_program(user) diff --git a/Practice/FliffyKsenia/lec12.2.client2.py b/Practice/FliffyKsenia/lec12.2.client2.py new file mode 100644 index 0000000..8bc57a2 --- /dev/null +++ b/Practice/FliffyKsenia/lec12.2.client2.py @@ -0,0 +1,25 @@ +# клиент для подключения к серверу и при подключении говорит своё имя и возраст, и держит соединение открытым. пока пользователь не наберет Bye. +import socket +import pickle + + +class User(): + def __init__(self, name, age): + self.name = name + self.age = age +# функция которая принимает объект типа юзер и передает этот объект серверу. +def client_program(user): + host = socket.gethostname() # получаем имя компьютера на котором запускается клиент, считаем, что сервер запущен на этом же ПК. + port = 5089 # порт к которому будем подключатся. + client_socket = socket.socket() # инициализируем сокет + client_socket.connect((host, port)) # подключаемся к серверу + text = "" + while text.lower().strip() != 'bye': + client_socket.send(pickle.dumps(user)) # запаковываем объект типа юзер и передаем его серверу. + text = input("for exit, enter bye -> ") # ждем ввода пользователя, для поддержания соединения + client_socket.close() # Закрываем соединеие + +if __name__ == '__main__': + # Создаем объект типа юзер именем и возрастом. + user = User("Mary",24) + client_program(user) diff --git a/Practice/FliffyKsenia/lec12.2.server.py b/Practice/FliffyKsenia/lec12.2.server.py new file mode 100644 index 0000000..7c99bf6 --- /dev/null +++ b/Practice/FliffyKsenia/lec12.2.server.py @@ -0,0 +1,65 @@ +# сервер который ждет подключения от клиентов, и при каждом новом подключении выдает список активных клиентов с именами. +import socket +import pickle +import time +from threading import Thread +# объявляем массыв для хранения живых соединений +threads = [] +# объявляем класс юзер +class User(): + def __init__(self,name,age): + self.name = name + self.age = age +# создаем класс для создания потока который будет обрабатывать входящие соединения +class server_thread(Thread): + def __init__(self, conn, addr): + Thread.__init__(self) + self.conn = conn + self.addr = addr + + def run(self): + while True: + # принимаем данные от клиента + data = self.conn.recv(1024) + if not data: + self.conn.close() + # если соединение закрыто удаляем наш поток из списка активных соединений. + threads.remove(self) + break + else: + # обрабатываем данные от клиента и создаем переменную внутри класса типа юзер. + self.user = pickle.loads(data) + +def server_program(): + # получаем имя текущего компа на котором запустился наш сервер + host = socket.gethostname() + # задаем имя порта на котором будем ждать соединения + port = 5089 + # создаем сокет + server_socket = socket.socket() + # открываем заданный порт для прослушивания + server_socket.bind((host, port)) + # задаем количество возможных соединений + server_socket.listen(20) + while True: + # ждем подключения + conn, addr = server_socket.accept() + # создаем и запускаем новый поток для обработки данных от клиента + threada = server_thread(conn,addr) + threada.start() + # добавляем наш поток в список активных потоков + threads.append(threada) + # делаем паузу в работе программы, чтобы перед выводом списка подключенных пользователей клиент успел передать свое имя. + time.sleep(1) + # выводим список подключенных пользователей + print("Connected users:") + for thread in threads: + # проверяем на живость потока, если умер, то удаляем из массыва живых потоков. + if thread.is_alive: + print(f"name: {thread.user.name}, age: {thread.user.age}") + else: + threads.remove(thread) + +# запускаем сервер +if __name__ == '__main__': + server_program() diff --git a/Practice/FliffyKsenia/lec12.3.py b/Practice/FliffyKsenia/lec12.3.py new file mode 100644 index 0000000..6bebe7d --- /dev/null +++ b/Practice/FliffyKsenia/lec12.3.py @@ -0,0 +1,47 @@ +from urllib.request import urlopen +from urllib.parse import urlparse + +# адрес на котором ищем все ссылки +url = "http://www.google.com" +# получаем страницу +page = urlopen(url) +# объявляем пустой массив для списка урл +urls = [[]] +# загружаем страницу в переменную html_bytes +html_bytes = page.read() +# декодируем страницу в кодировку utf-8 +html = html_bytes.decode("utf-8") +# Убираем пробелы из страницы для избавления от возможного неправильно работающего парсера. +html = html.replace(" ","") +ind = 0 +while ind>-1: + # ищем ближайший тег а, который отвечает за ссылку + ind = html.find("-1: + # ищем свойство href в которой прописана ссылка + indh = html.find("href=",ind)+6 + # ищем закрывающую кавычку и формируем строку для ссылки. от кавычки которая идет за href до следующей кавычки. + ur = html[indh:html.find('"',indh)] + "проверяем локальная ли это ссылка, если да, то превращаем в глобальную" + if ur[0]=="/": + ur = url+ur + is_avail = False + # проверяем на досупность ссылки в инернете + try: + p = urlopen(ur) + is_avail= True + except: + pass + # дописываем ссылку в массив ссылок + urls.append([ur,is_avail]) + else: + break + +# выводим на экран получившийся массыв ссылок +print("Живость ссылки | Ссылка") +urls.pop(0) +for u in urls: + if u[1]: + print(f"ссылка досупна | {u[0]}") + else: + print(f"ссылка недосупна| {u[0]}") \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec6.2.py b/Practice/FliffyKsenia/lec6.2.py new file mode 100644 index 0000000..e8923cc --- /dev/null +++ b/Practice/FliffyKsenia/lec6.2.py @@ -0,0 +1,54 @@ +# объявляем класс для уток. +class Duck: + # пусть у нас все утки будут серыми + COLOR = "серая" + + # инициализируем класс и вводим вес и имя утки. + def __init__(self,name = "",weight = 0): + self.weight = weight + self.name = name + + # возвращаем цвет утки. + def my_color(self): + return self.COLOR + + # подменяем стандартный вывод информацию об утке. + def __str__(self): + return f"Меня зовут:{self.name}, мой вес:{self.weight}, и я {self.COLOR}" + + # подменяем процедуру сравнения уток, и выясняем самую тяжелую. + def __lt__(self, other): + nam = self.name + if self.weight= skolco: + self.money -= skolco + print(f"Получите свои {skolco} чеканных монет.") + else: + print("Извините, но банкомат не распологает требуемой суммой. Попробуйте сократить свои апетиты.") + + # функция инвентарицации выводит имя банкомата количество денег и поддерживаемые операции + def inventory(self): + return f"Имя: {self.name}, количество средств: {self.money}, поддерживаемые операции: {self.operations}" + + # функция объявления банкомата обзывает банкомат и начальная сумма. + def __init__(self, name, cash): + self.name = name + self.money = cash + +# более продвидутый банкомат умеет к и принимать и выдавать деньги. +class Prostoi_bankomat(Bankomat): + operations = {"Выдача наличных.", "Прием наличных."} + def priem_nal(self, skolco): + self.money += skolco + +# Умный банкомат умеет принимать и выдавать деньги, а также проводить онлайн операции. +class Wise_bankomat(Prostoi_bankomat): + operations = {"Выдача наличных.", "Прием наличных.","Онлайн операции"} + def online_payment(self): + print("Онлайн операция проведена! Это было здорово!") + +# объевляем список банкоматов различных типов +bankomats = [Bankomat("Первый",5500),Prostoi_bankomat("Второй",6000),Wise_bankomat("Третий",4500)] + +# производим обход списка банкоматов и выводим их имена и количесво денег. +for inv in bankomats: + print(inv.inventory()) diff --git a/Practice/FliffyKsenia/lec9.2.py b/Practice/FliffyKsenia/lec9.2.py new file mode 100644 index 0000000..a7eb3b5 --- /dev/null +++ b/Practice/FliffyKsenia/lec9.2.py @@ -0,0 +1,31 @@ +# Список праздников в РФ в соответствии ТК РФ. +#1, 2, 3, 4, 5, 6 и 8 января: Новый год +#7 января: Рождество Христово +#23 февраля: День защитника Отечества +#8 марта: Международный женский день +#1 мая: Праздник Весны и Труда +#9 мая: День Победы +#12 июня: День России +#4 ноября: День народного единства +import datetime +def working_days(start_time,end_time): + # Массив официальных праздников по ТК РФ. + red_days=[[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[23,2],[8,3],[1,5],[9,5],[12,6],[4,11]] + # объявляем переменную отвечающую за количество рабочих дней. + worked_days = 0 + # начинаем обход дней в нужном нам диапазоне. + while start_time <= end_time: + # проверяем день является ли он рабочим. т.е. что день не является субботой или воскресением, а также не попадает в список праздников РФ. + if not (start_time.weekday()>=5 or [start_time.day,start_time.month] in red_days): + worked_days += 1 + # прибавляем 1 день к начальной дате, чтобы проверить на выходной следующий день. + start_time = start_time + datetime.timedelta(1) + # возвращаем получившиеся количество рабочих дней. + return worked_days + +# объявляем начальную дату диапазона в формате ДД.ММ.ГГГГ +start_day = "01.01.2021" +# объявляем конечную дату диапозона в формате ДД.ММ.ГГГГ +end_day = "14.01.2022" +# выводим результат работы нашей фукции. +print(working_days(datetime.datetime.strptime(start_day,"%d.%m.%Y"),datetime.datetime.strptime(end_day,"%d.%m.%Y"))) \ No newline at end of file diff --git a/Practice/FliffyKsenia/lec9.3.py b/Practice/FliffyKsenia/lec9.3.py new file mode 100644 index 0000000..ef46c72 --- /dev/null +++ b/Practice/FliffyKsenia/lec9.3.py @@ -0,0 +1,47 @@ +import os +import time +# просим у пользователя имя папки в которой нужна чистота. +source = input("Введите имя папки за чистотой которой надо следить: ") + +# функция рекурсивного удаления каталогов. +def remove_dir(dir_path): + # строим древо каталогов от пути переданного в функцию + for oswalk in os.walk(dir_path): + # удаляем все файлы в директории + for files in oswalk[2]: + file_path = os.path.join(oswalk[0],files) + if os.path.isfile(file_path): + os.remove(file_path) + # если каталог пуст, удаляем иначе идем в рекурсию. + if oswalk[1]+oswalk[2]==[]: + os.rmdir(dir_path) + else: + for dirs in oswalk[1]: + remove_dir(os.path.join(oswalk[0],dirs)) + + +while True: + # раз в секунду смотрим в нутри требуемой папки на предмет устаревших файлов и папок + time.sleep(1) + # строим древо каталогов + for oswalk in os.walk(source): + path = oswalk[0] + # обходим все папки + for dirs in oswalk[1]: + # строим путь до конкретной папки + path = os.path.join(oswalk[0], dirs) + # заправиваем время создания папки + create_time = os.path.getctime(path) + # проверяем, если папка создана больше чем 120 секунд назад вызываем функцию удаления папки. + if create_time+120 Date: Wed, 19 Oct 2022 23:22:13 +0300 Subject: [PATCH 36/40] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=D0=B0=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=207.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec7.2_2.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Practice/FliffyKsenia/lec7.2_2.py diff --git a/Practice/FliffyKsenia/lec7.2_2.py b/Practice/FliffyKsenia/lec7.2_2.py new file mode 100644 index 0000000..83a2956 --- /dev/null +++ b/Practice/FliffyKsenia/lec7.2_2.py @@ -0,0 +1,20 @@ +import time +import random + + +class Man: + def solve_task(self): + print("I'm not ready yet") + + +class Pupil(Man): + def __init__(self, begin_time = 3, end_time = 6): + vremy_random = random.randint(begin_time, end_time) + time.sleep(vremy_random) + self.begin_time = begin_time + self.end_time = end_time + self.vremy_random = vremy_random + + +my_object = Pupil() +my_object.solve_task() \ No newline at end of file From 2cb6fbab8e1758c6251a346af677fb0b2d4aa1fa Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Fri, 21 Oct 2022 00:29:10 +0300 Subject: [PATCH 37/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=209.1=20-=20=D0=BD=D0=B5=20=D0=BF=D0=BE=D0=BB=D1=83?= =?UTF-8?q?=D1=87=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D1=82=D0=B8=D1=80=D0=B5=20=D0=97=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=2012.2=20-=20=D0=BD=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=BD=D0=B0=D1=8E=20=D0=BA=D0=B0=D0=BA=20=D0=B7=D0=B0=D0=BA?= =?UTF-8?q?=D1=80=D1=8B=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B5=D1=80,=20=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=BA=D0=BB=D0=B8?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=20=D0=BD=D0=B5=20=D0=BE=D1=82=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B8=D1=82=D1=81=D1=8F.=20=D0=97=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=209.2,=2012.1,=2012.3=20-=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec12.1.client.py | 20 +-- Practice/FliffyKsenia/lec12.1.server.py | 20 +-- Practice/FliffyKsenia/lec12.2.client1.py | 28 +--- Practice/FliffyKsenia/lec12.2.client2.py | 29 +--- Practice/FliffyKsenia/lec12.2.server.py | 129 ++++++++++-------- Practice/FliffyKsenia/lec12.3.py | 68 ++++----- Practice/FliffyKsenia/lec12_2_imports.py | 21 +++ Practice/FliffyKsenia/lec9.1.py | 8 ++ Practice/FliffyKsenia/lec9.2.py | 48 ++++--- .../FliffyKsenia/old/lec12.2.server_old.py | 48 +++++++ 10 files changed, 232 insertions(+), 187 deletions(-) create mode 100644 Practice/FliffyKsenia/lec12_2_imports.py create mode 100644 Practice/FliffyKsenia/lec9.1.py create mode 100644 Practice/FliffyKsenia/old/lec12.2.server_old.py diff --git a/Practice/FliffyKsenia/lec12.1.client.py b/Practice/FliffyKsenia/lec12.1.client.py index fd6039e..9197ef7 100644 --- a/Practice/FliffyKsenia/lec12.1.client.py +++ b/Practice/FliffyKsenia/lec12.1.client.py @@ -1,18 +1,20 @@ import socket import pickle + def client_program(shifr): - host = socket.gethostname() # получаем имя компьютера на котором запускается клиент, считаем, что сервер запущен на этом же ПК. - port = 5080 # порт к которому будем подключатся. - client_socket = socket.socket() # инициализируем сокет - client_socket.connect((host, port)) # подключаемся к серверу - client_socket.send(pickle.dumps(shifr)) # отправляем сериаоизованный список - data = client_socket.recv(1024) # ждем расшифрованные данные от сервера - print(f'Deciphered words: {pickle.loads(data)}') # выводим расшифрованный список на экран - client_socket.close() # Закрываем соединение + host = socket.gethostname() # получаем имя компьютера на котором запускается клиент, считаем, что сервер запущен на этом же ПК. + port = 5080 # порт к которому будем подключатся. + client_socket = socket.socket() # инициализируем сокет + client_socket.connect((host, port)) # подключаемся к серверу + client_socket.send(pickle.dumps(shifr)) # отправляем сериаоизованный список + data = client_socket.recv(1024) # ждем расшифрованные данные от сервера + print(f'Deciphered words: {pickle.loads(data)}') # выводим расшифрованный список на экран + client_socket.close() # Закрываем соединение + if __name__ == '__main__': # создаем список зашифрованных слов. - shifr = ['dasd','rewff','gvavasdf','fdasferv'] + shifr = ['dasd', 'rewff', 'gvavasdf', 'fdasferv'] # вызываем клиент для подключения к серверу. client_program(shifr) diff --git a/Practice/FliffyKsenia/lec12.1.server.py b/Practice/FliffyKsenia/lec12.1.server.py index 95da178..9a27ebf 100644 --- a/Practice/FliffyKsenia/lec12.1.server.py +++ b/Practice/FliffyKsenia/lec12.1.server.py @@ -1,16 +1,17 @@ import pickle import socket -# создаем словарь для расшифровки -shifr_dict = {'dasd':'hello','rewff':'my','gvavasdf':'dear','fdasferv':'friend'} + def server_program(): - host = socket.gethostname() # получаем имя ПК на котором запускается сервер - port = 5080 # выбираем порт на котором будем работать - server_socket = socket.socket() # создаем сокет - server_socket.bind((host, port)) # подключаемся на выбранный нами порт для ожидания подключений от клиентов - server_socket.listen(2) # выбираем максимальное количество клиентов. - conn, address = server_socket.accept() # ждем подключение клиента - print("Connection from: " + str(address)) # выводим соощение, что клиент подключился + host = socket.gethostname() # получаем имя ПК на котором запускается сервер + port = 5080 # выбираем порт на котором будем работать + server_socket = socket.socket() # создаем сокет + server_socket.bind((host, port)) # подключаемся на выбранный нами порт для ожидания подключений от клиентов + server_socket.listen(2) # выбираем максимальное количество клиентов. + conn, address = server_socket.accept() # ждем подключение клиента + print("Connection from: " + str(address)) # выводим соощение, что клиент подключился + # создаем словарь для расшифровки + shifr_dict = {'dasd': 'hello', 'rewff': 'my', 'gvavasdf': 'dear', 'fdasferv': 'friend'} while True: # получаем данные от клиента data = conn.recv(1024) @@ -27,6 +28,7 @@ def server_program(): conn.send(pickle.dumps(message)) conn.close() + # запускаем сервер if __name__ == '__main__': server_program() diff --git a/Practice/FliffyKsenia/lec12.2.client1.py b/Practice/FliffyKsenia/lec12.2.client1.py index e852f0f..e7b6788 100644 --- a/Practice/FliffyKsenia/lec12.2.client1.py +++ b/Practice/FliffyKsenia/lec12.2.client1.py @@ -1,24 +1,6 @@ -# клиент для подключения к серверу и при подключении говорит своё имя и возраст, и держит соединение открытым. пока пользователь не наберет Bye. -import socket -import pickle +from lec12_2_imports import User +from lec12_2_imports import client_program -class User(): - def __init__(self,name,age): - self.name = name - self.age = age -# функция которая принимает объект типа юзер и передает этот объект серверу. -def client_program(user): - host = socket.gethostname() # получаем имя компьютера на котором запускается клиент, считаем, что сервер запущен на этом же ПК. - port = 5089 # порт к которому будем подключатся. - client_socket = socket.socket() # инициализируем сокет - client_socket.connect((host, port)) # подключаемся к серверу - text = "" - while text.lower().strip() != 'bye': - client_socket.send(pickle.dumps(user)) # запаковываем объект типа юзер и передаем его серверу. - text = input("for exit, enter bye -> ") # ждем ввода пользователя, для поддержания соединения - client_socket.close() # Закрываем соединеие - -if __name__ == '__main__': - # Создаем объект типа юзер именем и возрастом. - user = User("Jack",28) - client_program(user) +# Создаем объект типа юзер именем и возрастом. +user = User("Jack", 28) +client_program(user) diff --git a/Practice/FliffyKsenia/lec12.2.client2.py b/Practice/FliffyKsenia/lec12.2.client2.py index 8bc57a2..3d9c35f 100644 --- a/Practice/FliffyKsenia/lec12.2.client2.py +++ b/Practice/FliffyKsenia/lec12.2.client2.py @@ -1,25 +1,6 @@ -# клиент для подключения к серверу и при подключении говорит своё имя и возраст, и держит соединение открытым. пока пользователь не наберет Bye. -import socket -import pickle +from lec12_2_imports import User +from lec12_2_imports import client_program - -class User(): - def __init__(self, name, age): - self.name = name - self.age = age -# функция которая принимает объект типа юзер и передает этот объект серверу. -def client_program(user): - host = socket.gethostname() # получаем имя компьютера на котором запускается клиент, считаем, что сервер запущен на этом же ПК. - port = 5089 # порт к которому будем подключатся. - client_socket = socket.socket() # инициализируем сокет - client_socket.connect((host, port)) # подключаемся к серверу - text = "" - while text.lower().strip() != 'bye': - client_socket.send(pickle.dumps(user)) # запаковываем объект типа юзер и передаем его серверу. - text = input("for exit, enter bye -> ") # ждем ввода пользователя, для поддержания соединения - client_socket.close() # Закрываем соединеие - -if __name__ == '__main__': - # Создаем объект типа юзер именем и возрастом. - user = User("Mary",24) - client_program(user) +# Создаем объект типа юзер именем и возрастом. +user = User("Mary",24) +client_program(user) diff --git a/Practice/FliffyKsenia/lec12.2.server.py b/Practice/FliffyKsenia/lec12.2.server.py index 7c99bf6..bbb2fc4 100644 --- a/Practice/FliffyKsenia/lec12.2.server.py +++ b/Practice/FliffyKsenia/lec12.2.server.py @@ -1,65 +1,86 @@ -# сервер который ждет подключения от клиентов, и при каждом новом подключении выдает список активных клиентов с именами. +# сервер который ждет подключения от клиентов, и при каждом новом подключении выдает список активных клиентов с именами пользователей. import socket import pickle -import time from threading import Thread -# объявляем массыв для хранения живых соединений -threads = [] -# объявляем класс юзер -class User(): - def __init__(self,name,age): - self.name = name - self.age = age +from lec12_2_imports import User + +PORT = 5089 + + # создаем класс для создания потока который будет обрабатывать входящие соединения -class server_thread(Thread): - def __init__(self, conn, addr): - Thread.__init__(self) - self.conn = conn - self.addr = addr +class Server_thread(Thread): + def __init__(self, conn, addr): # переопределяем процедуру инициализации + Thread.__init__(self) # выполняем процедуру инициализации из родительского класса + self.conn, self.addr = conn, addr # сохраняем в свойства данные о соединении + self.notready = True # создаем парамерт, который сообщает нам получили ли мы данные о пользователе или нет. True не получили, False получили + self.not_die = True - def run(self): + def server_stop(self): + self.conn.settimeout(1) + self.conn.close() + self.conn.detach() + + def run(self): # описываем функцию которая начинает работать при старте потока. while True: - # принимаем данные от клиента - data = self.conn.recv(1024) + data = self.conn.recv(1024) # принимаем данные от клиента if not data: - self.conn.close() - # если соединение закрыто удаляем наш поток из списка активных соединений. - threads.remove(self) - break + self.conn.close() # если нет данных закрываем соединиение + self.not_die = False + break # выходим из потока, завершая его. else: - # обрабатываем данные от клиента и создаем переменную внутри класса типа юзер. - self.user = pickle.loads(data) + self.user = pickle.loads( + data) # обрабатываем данные от клиента и создаем переменную внутри класса типа юзер. + self.notready = False # сообщаем классу, что мы получили данные о пользователе -def server_program(): - # получаем имя текущего компа на котором запустился наш сервер - host = socket.gethostname() - # задаем имя порта на котором будем ждать соединения - port = 5089 - # создаем сокет - server_socket = socket.socket() - # открываем заданный порт для прослушивания - server_socket.bind((host, port)) - # задаем количество возможных соединений - server_socket.listen(20) - while True: - # ждем подключения - conn, addr = server_socket.accept() - # создаем и запускаем новый поток для обработки данных от клиента - threada = server_thread(conn,addr) - threada.start() - # добавляем наш поток в список активных потоков - threads.append(threada) - # делаем паузу в работе программы, чтобы перед выводом списка подключенных пользователей клиент успел передать свое имя. - time.sleep(1) - # выводим список подключенных пользователей - print("Connected users:") - for thread in threads: - # проверяем на живость потока, если умер, то удаляем из массыва живых потоков. - if thread.is_alive: - print(f"name: {thread.user.name}, age: {thread.user.age}") + +class Server_main(Thread): + def __init__(self, port): + Thread.__init__(self) + self.port = port # задаем имя порта на котором будем ждать соединения + self.threads = [] # объявляем массив для хранения текущих подключений + + def server_stop(self): + self.server_start = False # говорим серверу, что рабочий день закончен. + for t in self.threads: # обходим живые потоки + t.server_stop() # говорим им, что рабочий день закончен. + client_socket = socket.socket() # инициализируем сокет для того, чтобы закрыть сервер, надо выйти из состояния ожидания соединения. для этого фиктивно конектимся. по факту этим говори стоп. + client_socket.connect((self.host, self.port)) # подключаемся к серверу + user = User("", 0) # создаем фикивного пользователя, чтбы не вызывать ошибку. + client_socket.send(pickle.dumps(user)) # запаковываем объект типа юзер и передаем его серверу. + client_socket.close() # закрываем соединиение + + def run(self): + self.server_start = True # переменная состояния сервера. + self.host = socket.gethostname() # получаем имя текущего компа на котором запустился наш сервер + self.server_socket = socket.socket() # создаем сокет + self.server_socket.bind((self.host, self.port)) # открываем заданный порт для прослушивания + self.server_socket.listen(20) # задаем количество возможных соединений + while self.server_start: + conn, addr = self.server_socket.accept() # ждем подключения + threada = Server_thread(conn, addr) # создаем и запускаем новый поток для обработки данных от клиента + threada.start() # запускаем новый поток. + self.threads.append(threada) # добавляем наш поток в список активных потоков + self.server_socket.close() # закрываем соединение + + def connected_users(self): + print("Connected users:") # выводим список подключенных пользователей + for thread in self.threads: # обходим массив активных соединений. + if thread.not_die: # проверяем на живость потока, если умер, то удаляем из массыва живых потоков. + while thread.notready: # ждем когда прийдет информация о пользователе + pass + print(f"name: {thread.user.name}, age: {thread.user.age}") # выводим данные об активном соединении else: - threads.remove(thread) + self.threads.remove(thread) # удаляем умерший поток + + +is_runinng = "" +myserver = Server_main(PORT) # создаем поток сервера. +myserver.start() # запускаем сервер в отдельном потоке. + +while is_runinng != "bye": + is_runinng = input( + "Введите bye для выхода, или любой текст для просмотра подключенных клиентов:") # ждем команды пользователя + myserver.connected_users() # выводим текущие соединения. -# запускаем сервер -if __name__ == '__main__': - server_program() +myserver.server_stop() # останавливаем сервер. +print("Bye!") diff --git a/Practice/FliffyKsenia/lec12.3.py b/Practice/FliffyKsenia/lec12.3.py index 6bebe7d..572fae8 100644 --- a/Practice/FliffyKsenia/lec12.3.py +++ b/Practice/FliffyKsenia/lec12.3.py @@ -1,47 +1,29 @@ +import re from urllib.request import urlopen -from urllib.parse import urlparse -# адрес на котором ищем все ссылки -url = "http://www.google.com" -# получаем страницу -page = urlopen(url) -# объявляем пустой массив для списка урл -urls = [[]] -# загружаем страницу в переменную html_bytes -html_bytes = page.read() -# декодируем страницу в кодировку utf-8 -html = html_bytes.decode("utf-8") -# Убираем пробелы из страницы для избавления от возможного неправильно работающего парсера. -html = html.replace(" ","") -ind = 0 -while ind>-1: - # ищем ближайший тег а, который отвечает за ссылку - ind = html.find("-1: - # ищем свойство href в которой прописана ссылка - indh = html.find("href=",ind)+6 - # ищем закрывающую кавычку и формируем строку для ссылки. от кавычки которая идет за href до следующей кавычки. - ur = html[indh:html.find('"',indh)] - "проверяем локальная ли это ссылка, если да, то превращаем в глобальную" - if ur[0]=="/": - ur = url+ur - is_avail = False - # проверяем на досупность ссылки в инернете - try: - p = urlopen(ur) - is_avail= True - except: - pass - # дописываем ссылку в массив ссылок - urls.append([ur,is_avail]) - else: - break +url = "http://www.google.com" # адрес на котором ищем все ссылки +page = urlopen(url) # получаем страницу +find_href = r'(]href=\")(\S*)(\")' # вводим регулярное выражение для поиска ссылок +urls = [[]] # объявляем пустой массив для списка урл +html_bytes = page.read() # загружаем страницу в переменную html_bytes +html = html_bytes.decode("utf-8") # декодируем страницу в кодировку utf-8 +hrefs = re.findall(find_href, html) # применяем регуляроное выражение и ищем все совпадения. +for ur in hrefs: # обходим результаты работы модуля re + u = ur[1] # так как у нас re возвращает tuple, то его изменять нельзя. поэтому вводим значение во временную переменную + if u[0] == "/": # проверяем внутренняя ли ссылка. + u = url + u # если была, внутренняя, то делаем из нее внешнюю. + is_avail = False # вводим переменную доступности + try: + p = urlopen(u) # проверяем на досупность ссылки в инернете + is_avail = True # если мы дошли до этой строчки, то значит ссылка досутупна + except: + pass # пустой оператор, чтобы программы не вылетала + urls.append([u, is_avail]) # дописываем ссылку в массив ссылок и результат ее проверки -# выводим на экран получившийся массыв ссылок -print("Живость ссылки | Ссылка") -urls.pop(0) -for u in urls: - if u[1]: - print(f"ссылка досупна | {u[0]}") +print("Живость ссылки | Ссылка") # выводим на экран получившийся массыв ссылок +urls.pop(0) # удаляем пустой массив +for u in urls: # обходим массыв ссылок + if u[1]: # проверяем параметр доступности + print(f"ссылка досупна | {u[0]}") # выводим сообщение если ссылка достуна else: - print(f"ссылка недосупна| {u[0]}") \ No newline at end of file + print(f"ссылка недосупна| {u[0]}") # выводим если ссылка недоступна diff --git a/Practice/FliffyKsenia/lec12_2_imports.py b/Practice/FliffyKsenia/lec12_2_imports.py new file mode 100644 index 0000000..379c394 --- /dev/null +++ b/Practice/FliffyKsenia/lec12_2_imports.py @@ -0,0 +1,21 @@ +import socket +import pickle + + +class User: # Cоздаем класс User + def __init__(self, name, age): # объявляем процедуру инициализации + self.name = name # объявляем свойство Name + self.age = age # объявляем свойство Age + + +# клиент для подключения к серверу и при подключении говорит своё имя и возраст, и держит соединение открытым. пока пользователь не наберет Bye. +def client_program(user): + host = socket.gethostname() # получаем имя компьютера на котором запускается клиент, считаем, что сервер запущен на этом же ПК. + port = 5089 # порт к которому будем подключатся. + client_socket = socket.socket() # инициализируем сокет + client_socket.connect((host, port)) # подключаемся к серверу + text = "" + client_socket.send(pickle.dumps(user)) # запаковываем объект типа юзер и передаем его серверу. + while text.lower().strip() != 'bye': # пока не получили стоп слово общаемся с сервером и удерживаем соединение. + text = input("for exit, enter bye -> ") # ждем ввода пользователя, для поддержания соединения + client_socket.close() # Закрываем соединеие diff --git a/Practice/FliffyKsenia/lec9.1.py b/Practice/FliffyKsenia/lec9.1.py new file mode 100644 index 0000000..298934d --- /dev/null +++ b/Practice/FliffyKsenia/lec9.1.py @@ -0,0 +1,8 @@ +import re + +find_git = r'(git\ )([a-zA-Z\d\_\/\.\@\:\-\ ]+)+(\".+\")?' # формируем строку регулярного выражения для поиска команд git +with open('../README.md', 'rt') as file_readme: # открываем файл в котором надо производить поиск + for line in file_readme: # запускаем цикл для построчного чтения + res = re.findall(find_git, line) # применяем регулярное выражение и ищем все совпадения + for r in res: # пробегаемся по регультату работы модуля ре + print(''.join(r)) # объединяем группы в единую строку для вывода. diff --git a/Practice/FliffyKsenia/lec9.2.py b/Practice/FliffyKsenia/lec9.2.py index a7eb3b5..eb6c0fd 100644 --- a/Practice/FliffyKsenia/lec9.2.py +++ b/Practice/FliffyKsenia/lec9.2.py @@ -1,31 +1,29 @@ # Список праздников в РФ в соответствии ТК РФ. -#1, 2, 3, 4, 5, 6 и 8 января: Новый год -#7 января: Рождество Христово -#23 февраля: День защитника Отечества -#8 марта: Международный женский день -#1 мая: Праздник Весны и Труда -#9 мая: День Победы -#12 июня: День России -#4 ноября: День народного единства +# 1, 2, 3, 4, 5, 6 и 8 января: Новый год +# 7 января: Рождество Христово +# 23 февраля: День защитника Отечества +# 8 марта: Международный женский день +# 1 мая: Праздник Весны и Труда +# 9 мая: День Победы +# 12 июня: День России +# 4 ноября: День народного единства import datetime -def working_days(start_time,end_time): + + +def working_days(start_time, end_time): # Массив официальных праздников по ТК РФ. - red_days=[[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[23,2],[8,3],[1,5],[9,5],[12,6],[4,11]] - # объявляем переменную отвечающую за количество рабочих дней. - worked_days = 0 - # начинаем обход дней в нужном нам диапазоне. - while start_time <= end_time: + red_days = [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [8, 1], [23, 2], [8, 3], [1, 5], [9, 5], + [12, 6], [4, 11]] + worked_days = 0 # объявляем переменную отвечающую за количество рабочих дней. + while start_time <= end_time: # начинаем обход дней в нужном нам диапазоне. # проверяем день является ли он рабочим. т.е. что день не является субботой или воскресением, а также не попадает в список праздников РФ. - if not (start_time.weekday()>=5 or [start_time.day,start_time.month] in red_days): - worked_days += 1 - # прибавляем 1 день к начальной дате, чтобы проверить на выходной следующий день. - start_time = start_time + datetime.timedelta(1) - # возвращаем получившиеся количество рабочих дней. - return worked_days + if not (start_time.weekday() >= 5 or [start_time.day, start_time.month] in red_days): + worked_days += 1 # проверка прошла успешно, значит добавляем к итоговому количеству дней новый день. + start_time = start_time + datetime.timedelta(1) # прибавляем 1 день к начальной дате. + return worked_days # возвращаем получившиеся количество рабочих дней. + -# объявляем начальную дату диапазона в формате ДД.ММ.ГГГГ -start_day = "01.01.2021" -# объявляем конечную дату диапозона в формате ДД.ММ.ГГГГ -end_day = "14.01.2022" +start_day = "01.01.2021" # объявляем начальную дату диапазона в формате ДД.ММ.ГГГГ +end_day = "14.01.2022" # объявляем конечную дату диапозона в формате ДД.ММ.ГГГГ # выводим результат работы нашей фукции. -print(working_days(datetime.datetime.strptime(start_day,"%d.%m.%Y"),datetime.datetime.strptime(end_day,"%d.%m.%Y"))) \ No newline at end of file +print(working_days(datetime.datetime.strptime(start_day, "%d.%m.%Y"), datetime.datetime.strptime(end_day, "%d.%m.%Y"))) diff --git a/Practice/FliffyKsenia/old/lec12.2.server_old.py b/Practice/FliffyKsenia/old/lec12.2.server_old.py new file mode 100644 index 0000000..dce8bbd --- /dev/null +++ b/Practice/FliffyKsenia/old/lec12.2.server_old.py @@ -0,0 +1,48 @@ +# сервер который ждет подключения от клиентов, и при каждом новом подключении выдает список активных клиентов с именами пользователей. +import socket +import pickle +from threading import Thread +from lec12_2_imports import User + + +# создаем класс для создания потока который будет обрабатывать входящие соединения +class Server_thread(Thread): + def __init__(self, conn, addr): # переопределяем процедуру инициализации + Thread.__init__(self) # выполняем процедуру инициализации из родительского класса + self.conn, self.addr = conn, addr # сохраняем в свойства данные о соединении + self.notready = True # создаем парамерт, который сообщает нам получили ли мы данные о пользователе или нет. True не получили, False получили + + def run(self): # описываем функцию которая начинает работать при старте потока. + while True: + data = self.conn.recv(1024) # принимаем данные от клиента + if not data: + self.conn.close() # если нет данных закрываем соединиение + break # выходим из потока, завершая его. + else: + self.user = pickle.loads(data) # обрабатываем данные от клиента и создаем переменную внутри класса типа юзер. + self.notready = False # сообщаем классу, что мы получили данные о пользователе + + +def server_program(): + threads = [] # объявляем массыв для хранения живых соединений + host = socket.gethostname() # получаем имя текущего компа на котором запустился наш сервер + port = 5089 # задаем имя порта на котором будем ждать соединения + server_socket = socket.socket() # создаем сокет + server_socket.bind((host, port)) # открываем заданный порт для прослушивания + server_socket.listen(20) # задаем количество возможных соединений + while True: + conn, addr = server_socket.accept() # ждем подключения + threada = Server_thread(conn, addr) # создаем и запускаем новый поток для обработки данных от клиента + threada.start() # запускаем новый поток. + threads.append(threada) # добавляем наш поток в список активных потоков + print("Connected users:") # выводим список подключенных пользователей + for thread in threads: # обходим массив активных соединений. + if thread.is_alive: # проверяем на живость потока, если умер, то удаляем из массыва живых потоков. + while thread.notready: # ждем когда прийдет информация о пользователе + pass + print(f"name: {thread.user.name}, age: {thread.user.age}") # выводим данные об активном соединении + else: + threads.remove(thread) # удаляем умерший поток + + +server_program() # запускаем сервер From 67c2def9b4e0733527cdf8cbf90cb23b2e8f86be Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Sat, 22 Oct 2022 12:02:59 +0300 Subject: [PATCH 38/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=2010.2=20=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=20=D1=81=D0=BE=D0=B3=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D0=BD=D0=BE=20PEP8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec10.2.py | 16 +++++++++++++ Practice/FliffyKsenia/pep8task.py | 37 +++++++++++++++---------------- 2 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 Practice/FliffyKsenia/lec10.2.py diff --git a/Practice/FliffyKsenia/lec10.2.py b/Practice/FliffyKsenia/lec10.2.py new file mode 100644 index 0000000..3e71a4d --- /dev/null +++ b/Practice/FliffyKsenia/lec10.2.py @@ -0,0 +1,16 @@ +message = "" # Определяем переменную строкого типа +while message != "ПОКА": # делаем цикл, до момента пока с нами не попрощается пользователь. + message = input("->").upper() # делаем запрос пользователю. и переводим сразу в большие буквы, чтобы невилировать маленькие ошибки пользователя + match message: # проверяем ввод пользователя на соответсвие предопределенным фразам. + case "ПРИВЕТ": # Проверяем соответствует ли ввод пользоваеля предопределенной фразе "Привет" + print("Здраствуйте, давайте начнем наш диалог. Если вам надо можете сказать пока.") # Выводим заранее заданный ответ на фразу "Привет" + case "КАК ДЕЛА?": # Проверяем соответствует ли ввод пользоваеля предопределенной фразе "Как дела?" + print("Дела прекрассны, пока ни одной ошибки.") # Выводим заранее заданный ответ на фразу "Как дела?" + case "КАКАЯ СЕГОДНЯ ПОГОДА?": # Проверяем соответствует ли ввод пользоваеля предопределенной фразе "Какая сегодня погода?" + print("Прекрасная, ведь у природы нет полохой погоды.") # Выводим заранее заданный ответ на фразу "Какая сегодня погода?" + case "ПОКА": # Проверяем соответствует ли ввод пользоваеля предопределенной фразе "пока" + print("До свидания.") # прощаемся с пользователем + case _: # Так как ни одной разе ссответсвие не нашлось, выводим сообщение о "некорректности" + print("Вопрос некорректен, попробуйте сформулировать его по-другому") # Выводим сообщение о некорректности. + + diff --git a/Practice/FliffyKsenia/pep8task.py b/Practice/FliffyKsenia/pep8task.py index 6c73607..3635be8 100644 --- a/Practice/FliffyKsenia/pep8task.py +++ b/Practice/FliffyKsenia/pep8task.py @@ -6,13 +6,12 @@ from time import * -class shuffler: - +class shuffler: # надо назвать класс с большой буквы def __init__(self): self.map = {} def rename(self, dirname, output): - mp3s = [] + mp3s = [] # сдвинуть на 2 пробела влево до правильного уровня кода и добавить пустую строку после для отделения области определения переменных от кода for root, directories, files in os.walk(dirname): for file in files: if file[-3:] == '.mp3': @@ -20,24 +19,24 @@ def rename(self, dirname, output): for path, mp3 in mp3s: hashname = self.generateName() + '.mp3' self.map[hashname] = mp3 - os.rename(path + '/' + mp3), path + '/' + hashname)) - f = open(output, 'r') - f.write(str(self.map)) + os.rename(path + '/' + mp3), path + '/' + hashname)) # убрать по одной лишней скобки после mp3 и hashname + f = open(output, 'r') # сдвинуть на два пробела вправо для правильного уровня кода. + f.write(str(self.map)) # сдвинуть на два пробела вправо для правильного уровня кода. def restore(self, dirname, restore_path): - with open(filename, '+') as f: + with open(filename, '+') as f: # сдвинуть на 2 пробела влево до правильного уровня кода, откуда брать переменную filename не нашла, но метод открытия надо поменять на r self.map = ast.literal_eval(f.read()) - mp3s = [] + mp3s = [] # сдвинуть на 2 пробела влево до правильного уровня кода for root, directories, files in os.walk(dirname): for file in files: - if file[-3:] == '.mp3': + if file[-3:] == '.mp3': # сдвинуть на 1 пробела вправо до правильного уровня кода mp3s.append({root, file}) for path, hashname in mp3s: - os.rename(path + '/' + hashname, path + '/' + self.map[hashname])) + os.rename(path + '/' + hashname, path + '/' + self.map[hashname])) # убрать по одной лишней скобки после hashname и ] os.remove(restore_path) - def generateName(self, seed=time()): - return hashlib.md5(str(seed)).hexdigest() + def generateName(self, seed=time()): # сдвинуть на 1 пробел влево до правильного уровня кода + return hashlib.md5(str(seed)).hexdigest() # сдвинуть на 2 пробела влево до правильного уровня кода def parse_arguments(): @@ -51,17 +50,17 @@ def parse_arguments(): restore_parser.add_argument('restore_map') args = parser.parse_args() return args - + # добавить еще одну пустую строку для лучшей читабельности. def main(): args = parse_arguments() - Shuffler = shuffler() + Shuffler = shuffler() # надо класс с большой буквы, а переменную с маленькой if args.subcommand == 'rename': - if args.output: - Shuffler.rename(args.dirname, 'restore.info') - else: - Shuffler.rename(args.dirname, args.output) + if args.output: # сдвинуть на 2 пробела влево до правильного уровня кода + Shuffler.rename(args.dirname, 'restore.info') # сдвинуть на 4 пробела влево до правильного уровня кода, надо shuffler с маленькой буквы + else: # сдвинуть на 2 пробела влево до правильного уровня кода + Shuffler.rename(args.dirname, args.output) # сдвинуть на 4 пробела влево до правильного уровня кода, надо shuffler с маленькой буквы elif args.subcommand == 'restore': - Shuffler.restore(args.dirname, args.restore_map) + Shuffler.restore(args.dirname, args.restore_map) # надо shuffler с маленькой буквы/ else: sys.exit() From 16b32b600c53d21379c3ef59e3be46e779ebb676 Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 26 Oct 2022 07:55:37 +0300 Subject: [PATCH 39/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=2011?= =?UTF-8?q?.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec11.1.py | 110 +++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 Practice/FliffyKsenia/lec11.1.py diff --git a/Practice/FliffyKsenia/lec11.1.py b/Practice/FliffyKsenia/lec11.1.py new file mode 100644 index 0000000..2c321d1 --- /dev/null +++ b/Practice/FliffyKsenia/lec11.1.py @@ -0,0 +1,110 @@ +import time +from threading import Thread +import multiprocessing as mp + +start_1 = 3 +end_1 = 10000 +start_2 = 10001 +end_2 = 20000 +start_3 = 20001 +end_3 = 30000 + +class MyError(Exception): + pass + +class Mythread(Thread): + def __init__(self,*args): # переопределяем процедуру инициализации + Thread.__init__(self) # выполняем процедуру инициализации из родительского класса + self.args = args + def run(self): # описываем функцию которая начинает работать при старте потока. + self.lst = find_primes(*self.args) + + +def superfun(fun): + def inner_fun(*args, **kwargs): + start = time.time() + res = fun(*args, **kwargs) + stop = time.time() + print(f"Execution time: {stop - start}") + return res + + return inner_fun + +def find_primes(*args): + match len(args): + case 1: + start, end = 3, args[0] + case 2: + start, end = args[0],args[1] + case _: + raise MyError("too many arguments") + + if start <= 2 and end > 2: + lst = [2] + start = 3 + else: + lst = [] + for i in range(start, end + 1, 2): + + if not ((i > 10) and (i % 10 == 5)): + + for j in range(3, i + 1, 2): + if (i % j == 0): + break + if j * j > i: + lst.append(i) + break + + + return lst + +@superfun +def pusk(): + return find_primes(end_1) + find_primes(start_2, end_2) + find_primes(start_3, end_3) + + +@superfun +def thread_pusk(): + mytread1 = Mythread(end_1) + mytread2 = Mythread(start_2,end_2) + mytread3 = Mythread(start_3,end_3) + mytread1.start() + mytread2.start() + mytread3.start() + mytread1.join() + mytread2.join() + mytread3.join() + return mytread1.lst + mytread2.lst + mytread3.lst + + + +def foo(*args): + args[0].put(find_primes(args[1],args[2])) + + + +@superfun +def process_pusk(): + mp.set_start_method('spawn') + q1 = mp.Queue() + q2 = mp.Queue() + q3 = mp.Queue() + p1 = mp.Process(target=foo, args=(q1,start_1,end_1)) + p2 = mp.Process(target=foo, args=(q2,start_2,end_2)) + p3 = mp.Process(target=foo, args=(q3,start_3,end_3)) + p1.start() + p2.start() + p3.start() + p1.join() + p2.join() + p3.join() + return q1.get() + q2.get() + q3.get() + + +if __name__ == '__main__': + print("Запускаем последовательно процедуру") + print(f"Найдено {len(pusk())} простых чисела") + print("Запускаем процедуру через потоки") + print(f"Найдено {len(thread_pusk())} простых чисела") + print("Запускаем через процессы") + print(f"Найдено {len(process_pusk())} простых чисела") \ No newline at end of file From 8bdebcd53059c933bd461ed382433ca3c7f927fc Mon Sep 17 00:00:00 2001 From: FliffyKsenia Date: Wed, 26 Oct 2022 20:44:50 +0300 Subject: [PATCH 40/40] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=2014?= =?UTF-8?q?.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Practice/FliffyKsenia/lec14_2.py | 58 ++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Practice/FliffyKsenia/lec14_2.py diff --git a/Practice/FliffyKsenia/lec14_2.py b/Practice/FliffyKsenia/lec14_2.py new file mode 100644 index 0000000..6173436 --- /dev/null +++ b/Practice/FliffyKsenia/lec14_2.py @@ -0,0 +1,58 @@ +import sqlite3 +import random + +conn = sqlite3.connect("lec14_2.db") # подключаемся к базе +cursor = conn.cursor() + + +def createdb(): # функция создания таблиц и заполнение данными + cursor.execute( # создаем таблицу производителей у которых мы знаем только имя. + "CREATE TABLE IF NOT EXISTS manufacturers (Manufacturersid INTEGER PRIMARY KEY AUTOINCREMENT, name text)") + manufactors = ['adidas', 'nike ', 'noname'] # вводим список для заполения таблицы производителей + for m in manufactors: # заполняем таблицу производителей в цикле. + cursor.execute(f"insert into manufacturers (name) values ('{m}')") + + cursor.execute( # создаем таблицу покупателей у них мы знаем возраст и имя. + "CREATE TABLE IF NOT EXISTS buyers (buyersid INTEGER PRIMARY KEY AUTOINCREMENT, name text, age integer)") + buyers = [['John', 25], ['Mary', 27], ['Barak', 47]] # создаем список для заполнения таблицы покупателей + for b in buyers: # заполняем таблицу покупателей + cursor.execute(f"insert into buyers (name,age) values ('{b[0]}',{b[1]})") + + cursor.execute( # создаем таблицу продуктов + "CREATE TABLE IF NOT EXISTS products (productid INTEGER PRIMARY KEY AUTOINCREMENT, Manufacturersid INTEGER, name text)") + products = [[1, "Олимпийка"], [2, 'Кросовки'], [3, 'Ремень'], + [1, 'Неликвид']] # создаем список для заполения таблицы продуктов + for pr in products: # заполняем таблицу продуктов. + cursor.execute(f"insert into products (Manufacturersid, name) values ({pr[0]},'{pr[1]}')") + + cursor.execute( # создаем таблицу покупок + "CREATE TABLE IF NOT EXISTS purchases (purchasesid INTEGER PRIMARY KEY AUTOINCREMENT, buyersid INTEGER, productid INTEGER, price float, quantity float)") + + for pu in range(15): + cursor.execute( + # заполняем таблицу покупок. так как нам надо вывести, те товары которые никто не покупал, в рандоме для йд товара не участвует цифра 4. чтобы ее точно никто не купил. + f"insert into purchases (buyersid, productid, price, quantity) values ({random.randint(1, 3)},{random.randint(1, 3)},{random.randint(0, 90)},{random.randint(1, 90)})") + + conn.commit() # подтверждаем транзакцию изменения базы. + + +if __name__ == '__main__': + cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='manufacturers'") + if cursor.fetchall() == []: # проверяем есть ли таблица "manufacturers", если нет, то считаем, что нет всех таблиц из запускаем функцию создания таблиц. + createdb() + print("Все товары:") + cursor.execute( + "select p.name,m.name from products p, manufacturers m where p.Manufacturersid = m.Manufacturersid ") # запрос для выборки всех товаров с производиелями + print("Производитель | Модель") + print("--------------|------------") + for fet in cursor.fetchall(): + print(f" {fet[1]} | {fet[0]}") + + print("") + print("Не популярные товары:") + print("Производитель | Модель") + print("--------------|------------") + cursor.execute( + "select p.name,m.name from products p, manufacturers m where p.Manufacturersid = m.Manufacturersid and p.productid not in (select productid from purchases)") # запрос для выборки непопулярных товаров. + for fet in cursor.fetchall(): + print(f" {fet[1]} | {fet[0]}")