diff --git a/LR_DK92_Kiba/Lab_Rab_0.py b/LR_DK92_Kiba/Lab_Rab_0.py new file mode 100644 index 0000000..d91f099 --- /dev/null +++ b/LR_DK92_Kiba/Lab_Rab_0.py @@ -0,0 +1,147 @@ +def Index(index_cod, list_cod, rotor_dict): + """Данная функция ищет индексы по елементам в словаре. + + Она нужна для более легкого поиска и оброботки значений. + + """ + index_cod = [ + key + for el in list_cod + for key, value in rotor_dict.items() + if el == value + ] + + return index_cod + + +def Rotor_norm(index_cod, sum): + """ Функция выступает 3-тим фиксированым ротором.""" + + result = [sum - x for x in index_cod] + + return result + + +def Rotor_in(index_key,index_cod): + """Начало входа в первую часть роторов(начало шифровки).""" + result_list = [ + value + for _ in range(len(index_cod)) + for value in index_key + ] + + result = [ + x - y + for x, y in zip(index_cod, result_list) + ] + + return result + + +def Rotor_out(index_key, index_cod, count): + """Выход и обработки значени(конец шифроки).""" + result_list = [ + symbol + for _ in range(len(index_cod)) + for symbol in index_key + ] + + result=[x + y for x, y in zip(index_cod, result_list)] + + return result + + +def Sum_chek(index_cod): + """Отдельная функция для проверки диапазона кодируемых индексов.""" + for key in range(len(index_cod)): + + if index_cod[key] < 0: + index_cod[key] = index_cod[key] + 38 + + elif index_cod[key] > 38: + index_cod[key] = index_cod[key] - 38 + + return index_cod + + +def Coder(index_key, index_cod, count, sum): + """Функция реализована для упращения работы. + + Может виступать как для шифровки так и для дешифровки. + + """ + + for x in index_key: + index_cod = Rotor_in(index_key, index_cod) + index_cod = Sum_chek(index_cod) + + index_cod = Rotor_norm(index_cod, sum) + + for x in index_key: + index_cod = Rotor_out(index_key, index_cod, count) + index_cod = Sum_chek(index_cod) + + return index_cod + + +def Unindex(index_cod, list_cod, rotor_dict): + """Ищет по индексу буквы в словаре и перености их в лист.""" + + list_cod = [ + value + for el in index_cod + for key, value in rotor_dict.items() + if el == key + ] + + return list_cod + + +rotor_dict = { + 0:'0',6:'F',12:'L',18:'S',24:'Y',30:'4',36:'_', + 1:'A',7:'G',13:'M',19:'T',25:'Z',31:'5',37:'.', + 2:'B',8:'H',14:'O',20:'U',26:'N',32:'6',38:',', + 3:'C',9:'Q',15:'P',21:'V',27:'1',33:'7', + 4:'D',10:'J',16:'I',22:'W',28:'2',34:'8', + 5:'E',11:'K',17:'R',23:'X',29:'3',35:'9' + } +# Инициализация словаря для индексации. + +string_cod = input("Введите кодируемое слово: ").upper() +string_key = input("Введите слово шифровки: ").upper() +# Ввод кодируемого слова и его ключа. + +space = string_cod.split() +string_cod = '_'.join(space) +space = string_key.split() +string_key = '_'.join(space) +# Замена пробелов для возможности их кодировки. + +count = len (string_key) + +list_key = list(string_key) +list_cod = list(string_cod) +# Разделение строки посимвольно для дальнешей индексации. + +index_cod = [] +index_key = [] + +index_cod = Index(index_cod, list_cod, rotor_dict) +index_key = Index(index_key, list_key, rotor_dict) +# Инициализация поиска индесов. + +sum = sum(index_key) +# Сумма ключа нужна для фиксированого ротора. + +index_cod = Coder(index_key, index_cod, count,sum) +list_cod = Unindex(index_cod, list_cod, rotor_dict) +string_cod = "".join(list_cod) +print("Результат шифроки: ", string_cod) +# Блок кода отвечает за пoлный процесс шифровки кодруемого слова. + +index_cod = Coder(index_key, index_cod, count,sum) +list_cod = Unindex(index_cod, list_cod, rotor_dict) +string_cod = "".join(list_cod) +print("Результат дешифровки: ", string_cod) +# Аналогичный блок когда, но отвечающий за дешифровку. + diff --git a/MKR_Kiba/MKR_KIBAI.rst b/MKR_Kiba/MKR_KIBAI.rst new file mode 100644 index 0000000..98b218d --- /dev/null +++ b/MKR_Kiba/MKR_KIBAI.rst @@ -0,0 +1,57 @@ +Простите я пересоздал файл ибо не он не сохранилося + + + +1. Що таке Git та для чого використовується? Як створити новий локальний репозиторій Git? Наведіть команди. +Git-це система контролю версій. Для створення нового репозиторію потрібна відкрити головну сторінку та вибрати на ній Створення нового репозиторію. Після у відкритому вікні обрати ім’я для нього, відкритий чи приатний доступ, та поставити прапор на инициализування файлу Readme $ git add- додаванняя файлу до репозиторію $ git status- відоброзити статус репозиторію 2. Наведіть команди git для додавання файлів та директорій ./dev ./dev/file.c ./.gitignore до локального репозиторію одним комітом (уважно). Для тогго, щоб додати вайли вікористовується команда git add з обраним до нас типом файлів . + + $ git add .gitignore + +3. Перерахуйте та коротко окресліть відомі вам базові типи даних Python. Числа- числа , що записуеться до змінних (бувають цілими та з плавуючею комою ) Словарі- невпорядочена структура об’єктів з данним їм ключем + +Список- упорядкована структура об’єктів ріних типів +Строки- незммінна послідовність символів( можна за допомогою індексіів витягати нам потрібні значення ) +Булеві значення – змінні які мають два типи значень(True False) +Mножества – стуктура у якій є неупорядковані, неіндексовані елементи +Кортежи – Структура як список, але з незмінною структурою даних + +4. Числові типи Python. Коротко опишіть з прикладами використання. Створіть функцію, що розраховує реактивний опір конденсатора з ємністю C [Ф] на частоті f [Гц]. Якщо значення f не задано користувачем, за замовчуванням використати 1 кГц. Цілі числа , комплексні .з фіксовано точністю, множини та логічні значення +C=Input() +F=Input() +іf isNaN(F): F=1000 + +Print(1/(6.18*C*F)) +5. Створіть функцію, яка приймає в якості першого аргументу бажаний опір паралельно з'єднаних резисторів R [Ом], а в якості подальших аргументів – величини резисторів, що є в наявності [Ом]. Функція повертає кортеж (tuple), першим елементом якого є словник типу {номінал: кількість}, а другим елементом – абсолютне відхилення результуючого опору від бажаного [Ом]. + Def asd(): +R=Input() +Res_In=[] +Elem=0 +while not isNaN(Res_In.append(Elem=elem+input())) : + T={ [Res_In] : Res_In.len()} +return T + + 6. Наведіть приклад функції, що коректно приймає в якості значення за замовчанням Mutable-об'єкт. Чому коректно робити саме так? + Def asd(): +list = [10, 20, 30] +list[0] = 40 +print(list) + +Викорестаня такого обьекта дозволяє нам заміняти данні при не зміні індефікатору. +Окрім цього незмінні обьекти в памяті набагато більщі і для іх зміни потрібно ініціалізувати окремий доступ. + +7. Тернарний оператор Python. Навести код, що за допомогою тернарного оператора присвоїть змінній var значення 69 якщо змінна arg задана в None, в іншому випадку – присвоїть значення arg. Як зробити це без тернарного оператора? Наведіть приклад коду. Def asd(var, arg): Return var=arg if arg not None else 69 : - тернарний оператор + +Def asd(var,arg): + return arg if arg=var else arg=69 + +8. Які цикли Python вам відомі? Яким чином можна зімітувати функціонал циклу do-while з мови С в Python? + Цикли for та while . +While – цикл який буде виконуватися доки умова виконання істина For – буде виконуатися , поки ітеруємий об’єкт не буде повністю переборен (ітерован) +Зімітувати цикл do-while у пітоні мона інізіалізувавши функцію перед вайлом і надати потрібні після вимогу. +Funk() While not fail_funk Funk() +Або створивши потрібну нам змінну та надати їй булевий формат + + Funk = True while Funk: + + Funk = test_funk() + diff --git a/README.md b/README.md new file mode 100644 index 0000000..c42afec --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# kpi-python-course +Python course repository +Kiba Evgen diff --git a/students.rst b/students.rst deleted file mode 100644 index e66921f..0000000 --- a/students.rst +++ /dev/null @@ -1,10 +0,0 @@ -Student List -############ - -================== ========================================= -Student Directory -================== ========================================= -Anton Romanenko `dk92_romanenko `_ -Artem Herashchenko `dk91_herashchenko `_ -================== ========================================= -