Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions LR_DK92_Kiba/Lab_Rab_0.py
Original file line number Diff line number Diff line change
@@ -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)
# Аналогичный блок когда, но отвечающий за дешифровку.

57 changes: 57 additions & 0 deletions MKR_Kiba/MKR_KIBAI.rst
Original file line number Diff line number Diff line change
@@ -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()

3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# kpi-python-course
Python course repository
Kiba Evgen
10 changes: 0 additions & 10 deletions students.rst

This file was deleted.