diff --git a/Practice/Kechkin/Pep8.py b/Practice/Kechkin/Pep8.py new file mode 100644 index 00000000..55ea98b1 --- /dev/null +++ b/Practice/Kechkin/Pep8.py @@ -0,0 +1,70 @@ +import sys +import os +import hashlib +import ast +import argparse +from time import * # использовать - import time + + +class shuffler: # Название класса с большой буквы +# должно быть отделено 2 строки между def и class + def __init__(self): + self.map = {} + + def rename(self, dirname, output): + mp3s = [] #должно быть 4 пробела + 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() #4 пробела + + +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') + #!!!превышает 79 символов + 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: #4 пробела + Shuffler.rename(args.dirname, 'restore.info') #4 пробела + else: + Shuffler.rename(args.dirname, args.output) #4 пробела + elif args.subcommand == 'restore': + Shuffler.restore(args.dirname, args.restore_map) + else: + sys.exit() + + +main() \ No newline at end of file diff --git a/Practice/Kechkin/game.py b/Practice/Kechkin/game.py new file mode 100644 index 00000000..05d63b5c --- /dev/null +++ b/Practice/Kechkin/game.py @@ -0,0 +1,128 @@ +import random +import time + + +class Characters: # main class for all + _health = 100 + _speed = 10 + _jump = 5 + _shoot = 50 # power of shoot + _status = False # Dead or Alive + + def getStatus(self): + if not self._status: + print("Alive") + else: + print("Dead") + + def damage(self, damage): + if not self._status: + self._health = self._health - damage + if self._health > 0: + print("Damage: ", damage) + print("health: ", self._health) + else: + self._status = True + print("dead: ", self._health) + + def show_health(self): + print("My health: ", self._health) + + def collect_items(self): # Black box or something like that + + if not self._status: + _item = random.randint(1, 4) + if _item == 1: + self._health += random.randint(1, 10) + print("health++ ") + elif _item == 2: + self._speed += random.randint(1, 5) + print("speed++ ") + elif _item == 3: + self._jump += random.randint(1, 5) + print("jump++ ") + elif _item == 4: + self._shoot += random.randint(1, 5) + print("shoot++ ") + + def run(self): + if not self._status: + self._speed += 4 + print("run: speed", self._speed) + + def jump(self): + if not self._status: + self._jump += 2 + print("jump:", self._jump) + + def shoot(self): + if not self._status: + print("I'm shooting: power", self._shoot) + + +class Solder(Characters): + _health = 200 + _grenade = 40 + + def throw_grenade(self): + if not self._status: + print("throw grenade:", self._grenade) + time.sleep(3) + print("BA-BAH") + + +class FlySolder(Characters): # solder is using jet pack for example + _health = 150 + _flySpeed = 40 + _shoot = 30 + _turbo = 10 + + def fly(self): + if not self._status: + self._flySpeed += 2 + print("fly: speed", self._flySpeed) + + def turboSpeed(self): + if not self._status: + self._flySpeed += self._turbo + print("Turbo on: speed", self._flySpeed) + + +class DriverSolder(Characters): # just a driver + _carSpeed = 80 + _turbo = 5 + + def drive(self): + if not self._status: + print("driving: speed", self._carSpeed) + + def turboDrive(self): + if not self._status: + self._carSpeed += self._turbo + print("Turbo on: speed", self._carSpeed) + + +if __name__ == '__main__': # point for start + # for demonstration only + solder = Solder() + driver = DriverSolder() + flySolder = FlySolder() + + print("---------solder------------") + solder.show_health() + solder.run() + solder.jump() + solder.throw_grenade() + solder.damage(75) + time.sleep(2) + + print("---------driver-------------") + driver.getStatus() + driver.drive() + driver.turboDrive() + time.sleep(2) + + print("-------flySolder--------------") + flySolder.fly() + flySolder.shoot() + flySolder.turboSpeed() diff --git a/Practice/Kechkin/task1,2(2 lessons).py b/Practice/Kechkin/task1,2(2 lessons).py new file mode 100644 index 00000000..74cef5a2 --- /dev/null +++ b/Practice/Kechkin/task1,2(2 lessons).py @@ -0,0 +1,17 @@ +# Написать и вызвать функцию,принимающую два числа и выводящую на экран большее из двух. +def print_num(a, b): + if a > b: + print(a) + else: + print(b) + + +print_num(9, 10) + + +# Написать и вызвать функцию,принимающую два числа и возвращающую большее из двух. +def return_num(a, b): + return a if a > b else b + + +print(return_num(14, 15)) diff --git a/Practice/Kechkin/task1.py b/Practice/Kechkin/task1.py new file mode 100644 index 00000000..723914ec --- /dev/null +++ b/Practice/Kechkin/task1.py @@ -0,0 +1,18 @@ +# Напишите программу,которая выводит на экран числа от 1 до 100. +# При этом вместо чисел,кратных трем,программа должна выводить слово Fizz, +# а вместо чисел,кратных пяти — слово Buzz. +# Если число кратно пятнадцати,то программа должна выводить слово FizzBuzz. + +def print_FizzBuzz(): + for i in range(1, 101): + if i % 3 == 0: + print("Fizz") + if i % 5 == 0: + print("Buzz") + if i % 15 == 0: + print("FizzBuzz") + else: + print(i) + + +print(print_FizzBuzz()) diff --git a/Practice/Kechkin/task2.py b/Practice/Kechkin/task2.py new file mode 100644 index 00000000..68002675 --- /dev/null +++ b/Practice/Kechkin/task2.py @@ -0,0 +1,19 @@ +# Составить программу,которая будет считывать введённое пятизначное число. +# После чего,каждую цифру этого числа необходимо вывести в новой строке: + +def number(): + arr = list(str(int(input("Enter number of 5 digits: ")))) + array = [] + k = 0 + for i in arr: + k += 1 + array.append(f"{k} цифра равна {i}") + return "\n".join(array) + + +print(number()) + + + + + diff --git a/Practice/Kechkin/task3.py b/Practice/Kechkin/task3.py new file mode 100644 index 00000000..633d48f5 --- /dev/null +++ b/Practice/Kechkin/task3.py @@ -0,0 +1,15 @@ +# Реализовать алгоритм сортировки выбором + +arr = [1, 4, 6, 3, 6 - 1, 0, -12, 55, -143] + + +def Sort(arr): + N = len(arr) + for i in range(N - 1): + for j in range(i + 1, N): + if arr[i] > arr[j]: + arr[i], arr[j] = arr[j], arr[i] + return arr + + +print(Sort(arr)) diff --git a/Practice/Kechkin/task4.py b/Practice/Kechkin/task4.py new file mode 100644 index 00000000..2ee6dde0 --- /dev/null +++ b/Practice/Kechkin/task4.py @@ -0,0 +1,16 @@ +s = '\tРавным образом повышение уровня\t гражданского сознания представляет\t \n' \ + '\tсобой интересный\t эксперимент проверки системы обучения к \n' \ + '\tкадров, соответствующей насущным\t потребностям?' + + +def deploy(text): + return text.expandtabs(4) + + +def redeploy(text): + space = " " + if space in text: + return text.replace(space, '\t') + + +print(deploy(s)) diff --git a/Practice/Kechkin/task5.py b/Practice/Kechkin/task5.py new file mode 100644 index 00000000..bc3170fd --- /dev/null +++ b/Practice/Kechkin/task5.py @@ -0,0 +1,15 @@ +# Интерполировать некие шаблоны в строке.Есть строка с определенного вида форматированием. +# необходимо заменить в этой строке все вхождения шаблонов на их значение из словаря + +d = {"red": "blue", "car": "bike", "beautiful": "cool"} + + +def dict_words(): + file = open("text.txt", "r") + for i in file: + for k, v in d.items(): + i = i.replace(k, v) + print(i) + + +dict_words() diff --git a/Practice/Kechkin/task6.py b/Practice/Kechkin/task6.py new file mode 100644 index 00000000..5a25f4ec --- /dev/null +++ b/Practice/Kechkin/task6.py @@ -0,0 +1,12 @@ +# Есть список списков(матрица).Каждый внутренний список-это строка матрицы. +# Необходимо реализовать функцию,которая удаляет столбец,который содержит заданную цифру +import numpy + + +def matrix(num): + m = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) + index = numpy.argwhere(m == num) + return numpy.delete(m, index, axis=1) + + +print(matrix(4)) diff --git a/Practice/Kechkin/text.txt b/Practice/Kechkin/text.txt new file mode 100644 index 00000000..753497bb --- /dev/null +++ b/Practice/Kechkin/text.txt @@ -0,0 +1 @@ +A red car was so beautiful despite of it was so old \ No newline at end of file