This commit is contained in:
2025-10-25 18:42:49 +05:00
commit 17d24d3d64
28 changed files with 1129 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
__pycache__
.git
.idea

7
LICENSE Normal file
View File

@@ -0,0 +1,7 @@
Copyright (c) 2025 Igor Ragozin
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

4
mpstwm/README.md Normal file
View File

@@ -0,0 +1,4 @@
# МПНТОМ - Модульная панель настройки тайлинговых оконных менеджеров
-----
# UNDER CONSTRUCTION
----

1
python/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
__pycache__

27
python/01.10.py Normal file
View File

@@ -0,0 +1,27 @@
famils = {"Петров", "Сидоров", "Иванов", "Козляков", "Колмокозков", "Дрозников"}
# Так как не было сказанно про распределение.
# Попросил ИИ распределить по рандому должников.
math_fails = {"Иванов", "Козляков"}
lang_fails = {"Петров", "Дрозников", "Сидоров"}
info_fails = {"Колмокозков", "Иванов", "Петров"}
# Вывожу сразу три задания, так как ответ умещается в одну строку.
# Для красивого показа использую оператор распаковки *, тоесть вывод будет: Козляков Иванов Петров
print("Должники по информатике и математике:", *math_fails | info_fails)
print("Должники по трем предметам: ", *famils) # или math_fails | lang_fails | info_fails
print("Должник по одному предмету: ", *math_fails - lang_fails - info_fails )
if 'Сидоров' in math_fails and 'Сидоров' in lang_fails:
sid_res = "Да"
elif 'Сидоров' in math_fails:
sid_res = "Да, только Математика"
elif 'Сидоров' in lang_fails:
sid_res = "Да, только Русский"
print("Сидоров в должниках по матем или русскому?", sid_res )
# Вывод(В первом ответ может быть рандомный, как угодно множеству)
#Должники по информатике и математике: Козляков Петров Иванов Колмокозков
#Должники по трем предметам: Козляков Сидоров Петров Иванов Дрозников Колмокозков
#Должник по одному предмету: Козляков
#Сидоров в должниках по матем или русскому? Да, только Русский

View File

@@ -0,0 +1,85 @@
from random import randint
# Небольшая информация.
# * Это распаковка элементов в списке, множествах списков и тд.
#
# Задания начал возносить в функции без принятия значения
# (если в самом задании не нужно указывать значения).
# Так как легче понимать где задание, чем писать комментарий.
# Задание 1
def task1():
print("== 1 ЗАДАНИЕ ==")
list_default = [] # создаем список
min_num = -10 # Минимальное
max_num = 10 # Максимальное
elements = 20 # Кол во элементов
# Создание списка через рандом
for _ in range(elements):
list_default.append(randint(min_num,max_num))
print("Несорт:", *list_default)
# Алгоритм пузырька
for i in range(elements):
for j in range(elements-1-i):
if list_default[j] > list_default[j+1]:
list_default[j], list_default[j+1] = list_default[j+1], list_default[j]
print("Сорт:", *list_default)
# Задание 2
def task2():
print("== 2 ЗАДАНИЕ ==")
# Списки
list_default = [] # создаем список
list_even = [] # Создаем четный список
list_odd = [] # Создаем не четный список
list_min_max = [] # список min и max
# Остальное
min_number = -20 # Минимальное
max_number = 20 # Максимальное
elements = 45 # Кол во элементов
index = 0 # Индекс
# Создание списка через рандом
for _ in range(elements):
list_default.append(randint(min_number,max_number))
# Алгоритм пузырька
for i in range(elements):
for j in range(elements-1-i):
if list_default[j] > list_default[j+1]:
list_default[j],list_default[j+1]=list_default[j+1],list_default[j]
print("Нач список:", *list_default)
print("Виды сортировок:")
# Первый вид сортировки:
while index <= 44:
if list_default[index] % 2 == 0: list_even.append(list_default[index])
index+=1
print(" - 1. четные элементы:", *list_even[:len(list_even)//3])
# Второй вид сортировки
print(" - 2. min и max:",
min(list_default[:len(list_default)*2//3]),
max(list_default[:len(list_default)*2//3])
)
# Третий вид сортировки
index=0 # обнуляю индекс
while index <= 44:
if list_default[index] % 2 != 0: list_odd.append(list_default[index])
index+=1
print(" - 3. нечетные элементы:", *list_odd[:len(list_default)*3//3])
# Мини бонус, просто хочу сделать ;)
def main():
value = int(input("Выберите задание(1 или 2): "))
if value == 1: task1()
elif value == 2: task2()
elif value == 0: exit()
else:
print("Введено не верное значение")
main()
main()

127
python/02.10.25/lecture.py Normal file
View File

@@ -0,0 +1,127 @@
# === Питон михаил петров
import random
#N = 10
#list_sort_buble = []
#for _ in range(N):
# list_sort_buble.append(random.randint(0,100))
#print(f"Не сортированный список: {list_sort_buble}")
# Сортировка пузырьком
#for i in range(N):
# for j in range(N - 1 - i):
# if list_sort_buble[j] > list_sort_buble[j+1]:
# list_sort_buble[j], list_sort_buble[j+1] = list_sort_buble[j+1], list_sort_buble[j]
#print(f"Отсортированный список: {list_sort_buble}")
#===
# :: Теория
#===
# 2 Пары Артем Данилов
#def hello():
# print("Hello world")
#hello()
#def one_two(one): # one принимает значения
# num = one + 1
# return num
#print(one_two(10))
# Расчитывание круга
#def circle(r):
# area = 3.14*r*r
# return area
#print(circle(10))
# Факториал
# 5! = 5*4*3*2*1
# 0! = 1
# 6! = 6 * 5!
# n! = n * (n-1)!
# Рекурсия
#def f(n):
# if n == 1: return n
# return n * f(n-1) # рекурсивная функция, вызывающая саму себя.
#print(f(5))
#===
# :: Задания
#===
# 1 task
#def rectg(a,b):
# return (a+b)*2
#print(rectg(20,5))
# 2 task
#def chetnoe(numb):
# if numb%2==0: return numb
# else: return numb+1
#print(f"четное: {chetnoe(2)}, нечетное: {chetnoe(3)}")
# 3 task
#cel=5
#def cel_far(gr):
# return (gr*9/5)+32
#print(f"Цельсий {cel}, Фаренгейт: {cel_far(cel)}")
# 4 task
#def sechour(secn):
# return secn/3600
#print(sechour(1000))
# 5 task
#def month(numbs):
# if numbs in [4,6,9,11]: # Если число равен значению в списке то вывести то число месяца
# return 30
# if numbs in [1,3,5,7,8,10,12]:
# return 31
# if numbs in 2:
# return 28
# else:
# return "nin"
#print(month(5))
#===
# Практика рекурсия
#===
#def num_aver(a,b,c):
# return (a+b+c)/3
#print(num_aver(2,3,5))
#def num_mezdu(a,b,c):
# 1 решение а не if
# if a<=b<=c or c<=b<=a:
# return b
# elif b<=a<=c or c<=a<=b:
# return a
# else:
# return c
# 2 решение в одну строку
# sorted([a,b,c])[1]
#print(num_mezdu(1,2,3))
#def num_mod(a,b,c):
# if a == b or b == c:
# return b
# if b == c or c == a:
# return c
# if c == a or a == b:
# return a
# else:
# return a,b,c
#print(num_mod(3,3,3))
#def nat_num(a):
# total=0
# for i in range(1, a+1):
# total+=i
# return total
#print(nat_num(5))

83
python/06.10.py Normal file
View File

@@ -0,0 +1,83 @@
import random
# Так как меня не было на паре я буду честен,
# некоторые задания смотрел у одногруппницы
# но смотрел как они выполняются.
#===
# Задание 3
#===
print("-= Задание 3 =-")
# Обьявляю переменные
lis = []
n = 15
iterations = 0
# Создание списка из 15 чисел
for i in range(n):
lis.append(random.randint(1,100))
print(f"1: ", lis)
# Сортировка от большего к меньшему
i = 0
while i < n - 1:
m,j = i,i+1
while j < n:
if lis[j] < lis[m]:
m = j
j += 1
# меняем местами
lis[i], lis[m] = lis[m], lis[i]
i += 1
iterations += 1
print(f"2: ", lis)
print(f"3: ", iterations)
#===
# Задание 4
#===
print("-= Задание 4 =-")
# обьявляю переменные
words = [ "apple", "banana", "cherry", "date", "apricot" ]
n = len(words)
j = 0
for i in range(1, n):#1-5
key = words[i]#apple
j = i - 1#1-1 0
# Сдвигаем элементы вправо, пока они больше key
while j >= 0 and words[j] > key:
words[j + 1] = words[j]
j -= 1
words[j + 1] = key
print(words)
#===
# Задание 5
#===
print("-= Задание 5 =-")
# Обьявляю переменные
lisb = ["1", "10", "3", "5", "7", "8"]
k = 2
fix_k = lisb[k]
oth_el = []
for i in range(len(lisb)):
if i != k:
oth_el.append(lisb[i])
n = len(oth_el)
for i in range(n):
for j in range(0, n - i - 1):
if oth_el[j] > oth_el[j + 1]:
oth_el[j], oth_el[j + 1] = oth_el[j + 1], oth_el[j]
left_par = oth_el[:k]
right_par = oth_el[k:]
res = left_par + [fix_k] + right_par
print(res)

23
python/12.09.25/ex1.py Normal file
View File

@@ -0,0 +1,23 @@
import sys
number_input = int(input("Введите число :: "))
if number_input < 100 and number_input > 1:
if number_input % 3 and number_input % 5:
print("Fizz Buzz")
sys.exit(1)
elif number_input % 3 != 0 and number_input % 5 != 0:
print(number_input)
sys.exit(1)
elif number_input % 3 == 0:
print("Fizz")
sys.exit(1)
elif number_input % 5:
print("Buzz")
sys.exit(1)
else:
print("ОШИБКА! Введено число не в диапазоне")
sys.exit(1)

13
python/12.09.25/ex2.py Normal file
View File

@@ -0,0 +1,13 @@
import sys
number = int(input("Введите число :: "))
stage = float(input("Введите степень(0-7) :: "))
if stage <= 7 and stage >= 1:
numbd = number ** stage
print("Ответ: {}".format(numbd))
sys.exit(1)
else:
print("ОШИБКА, введена степень выше/ниже диапазона")
sys.exit(1)

41
python/12.09.25/ex3.py Normal file
View File

@@ -0,0 +1,41 @@
import sys as os
price_call = int(input("Стоймость разговора, в мин :: "))
operators = [
"tmobile",
"t2",
"mts",
"yota"
]
print("Список доступных операторов:")
for el in operators:
print(f" - {el}")
def operator_func(operator_num):
match operator_num:
case "tmobile":
math_num = 3.9 * price_call
print("{} Rub".format(math_num))
os.exit(1)
case "t2":
math_num = 3.60 * price_call
print("{} Rub".format(math_num))
os.exit(1)
case "mts":
math_num = 2.5 * price_call
print("{} Rub".format(math_num))
os.exit(1)
case "yota":
math_num = 2.50 * price_call
print("{} Rub".format(math_num))
os.exit(1)
case _:
print("Указан оператор не из списка!")
os.exit(0)
operator_select = input('\n' "Введите оператора из списка :: ")
operator_func(operator_select)

41
python/12.09.25/ex4.py Normal file
View File

@@ -0,0 +1,41 @@
def get_percent(number):
if 0 <= number < 500:
return 3
elif 500 <= number <= 1000:
return 5
elif number >= 1000:
return 8
def salary(manag):
casing = 200
percen = manag / 100
summ = casing * percen
final = summ + casing
return final
manager_1 = salary(get_percent(int(input("уровень продаж 1 менеджера :: "))))
manager_2 = salary(get_percent(int(input("уровень продаж 2 менеджера :: "))))
manager_3 = salary(get_percent(int(input("уровень продаж 3 менеджера :: "))))
manager_top = max(manager_1, manager_2, manager_3)
manager_gener = [ manager_1, manager_2, manager_3 ]
def why_manager(top):
if top == manager_1:
return 'Менеджер 1'
elif top == manager_2:
return 'Менеджер 2'
elif top == manager_3:
return 'Менеджер 3'
why_man = why_manager(manager_top)
favor_manager = manager_top + 200
print("Лучший менеджер: {}. Зарплата(с премией): {}$".format(why_man, favor_manager))
print("---")
print("Остальные менеджеры:\n"
" - {}$, Первый менеджер\n"
" - {}$, Второй менеджер\n"
" - {}$, Третий менеджер"
.format(manager_1, manager_2, manager_3))

41
python/12.09.25/ex5.py Normal file
View File

@@ -0,0 +1,41 @@
def get_percent(number):
if 0 <= number < 500:
return 3
elif 500 <= number <= 1000:
return 5
elif number >= 1000:
return 8
def salary(manag):
casing = 200
percen = manag / 100
summ = casing * percen
final = summ + casing
return final
manager_1 = salary(get_percent(int(input("уровень продаж 1 менеджера :: "))))
manager_2 = salary(get_percent(int(input("уровень продаж 2 менеджера :: "))))
manager_3 = salary(get_percent(int(input("уровень продаж 3 менеджера :: "))))
manager_top = max(manager_1, manager_2, manager_3)
manager_gener = [ manager_1, manager_2, manager_3 ]
def why_manager(top):
if top == manager_1:
return 'Менеджер 1'
elif top == manager_2:
return 'Менеджер 2'
elif top == manager_3:
return 'Менеджер 3'
why_man = why_manager(manager_top)
favor_manager = manager_top + 200
print("Лучший менеджер: {}. Зарплата(с премией): {}$".format(why_man, favor_manager))
print("---")
print("Остальные менеджеры:\n"
" - {}$, Первый менеджер\n"
" - {}$, Второй менеджер\n"
" - {}$, Третий менеджер"
.format(manager_1, manager_2, manager_3))

View File

@@ -0,0 +1,3 @@
for i in range(0, 20):
print("*", end=' ')
print(i)

View File

@@ -0,0 +1,75 @@
#-=-=-=-=-=-=-=-=-=-=-=-
# FOR IN
#-=-=-=-=-=-=-=-=-=-=-=-
#1 Задание
#for i in range(0, 100 + 1):
# print(i)
#2 Задание
#for i in range(100, 0, -1):
# print(i)
#3 Задание
#dfor i in range(0, 1000 + 1):
# if i % 5 == 0 and i % 12 == 0:
# print(i)
#4 Задание
#start_diap = int(input("Start diapason :: "))
#end_diap = int(input("End diapason :: "))
#
#for i in range(start_diap, end_diap):
# if i % 2 == 0:
# print(i)
#-=-=-=-=-=-=-=-=-=-=-=-
# while()
#-=-=-=-=-=-=-=-=-=-=-=-
#1 Задание
#num = 1
#while num < 5 + 1:
# print(num)
# num += 1
#2 Задание
#t = 0
#n = 1
#while n < 5 + 1:
# n += t
# t += n
#print(t)
#3 Задание
#num = int(input("enter num: "))
#while num != 0:
# num = int(input("enter num: "))
#4 Задание
#t = 0
#n = int(input("enter num: "))
#while n != 0:
# t = n + t
# n = int(input("enter num: "))
#print(t)
#-=-=-=-=-=-=-
# 3 ЧАСТЬ
#-=-=-=-=-=-=-
#1 Задание
#age = int(input("Enter age: "))
#rost = int(input("Enter rost: "))
#if age >= 18 and rost >= 185:
# print("approved!")
#elif rost >= 200:
# print("approved!")
#else:
# print("Did't approve, age or rost not fit")
#2 Задание
#num = int(input("Input num: "))
#if num % 2 != 0:
# num1 = num * 2
# print(num1)

View File

@@ -0,0 +1,18 @@
#start, stop, step
# от 0 до 99, 100 не входит
#for i in range(100, 0 - 1, -1):
# print(i)
#numb = 0
#while numb < 5:
# print(numb)
# numb += 1
#def login(i):
# login = input("Enter login: ")
# password = input("Enter pass: ")
#while login != "user" and password != "1234":
# print ("Err")
# login()
#print("you welc")

47
python/18.09.py Normal file
View File

@@ -0,0 +1,47 @@
#num1 = '' # 1 слаг
#num2 = '' # 2 слаг
#operation = '' # оператор
# Ввод выражения
#letter_num = 0
# Поиск знака и индекса
#user_str = input("Enter num: ")
#for i in range(0, len(user_str)):
# if user_str[i] in "+-*/":
# letter_num = i
# operation = user_str[i]
# Поиск 1 числа
#for i in range(0, letter_num):
# num1 += user_str[i]
# Поиск 2 числа
#for i in range(letter_num + 1, len(user_str)): # увеличение индекса на единицу
# num2 += user_str[i]
# Преобразование типа
#num1 = int(num1)
#num2 = int(num2)
#if operation == "+":
# result = num1 + num2
#elif operation == "-":
# result = num1 - num2
#elif operation == "*":
# result = num1 * num2
#elif operation == "/":
# result = num1 / num2
#print("result: ", result)
#===
# Задания
#===
# 1 Задание
# Для того чтоб не показаться что я взял у ии то обьясню что делает код
#num = str(input()) # считывание
#rev = '' # создание пустой строки
#for i in range(len(num) -1, -1, -1): Создание цикла и в радиусе(подсчитать(num) -start, -step, -stop), тоесть от конца
# rev += num[i] # записывание num в rev с индексом i
#print(rev)

88
python/21.10.25/ex1.py Normal file
View File

@@ -0,0 +1,88 @@
# Основная функция.
# для возврата значений ошибок текста и самого вывода баллов
# буду использовать get_coords для создания возврата значений в кортеж
def scrabble(text):
#=====
# Обьявление переменных
#=====
# Словарь, слово: балл
alphabet = {
# English alphabet
'a': 1, 'e': 1, 'i': 1, 'o': 1, 'l': 1, 'n': 1, 's': 1, 't': 1, 'r': 1,
'd': 2, 'g': 2,
'b': 3, 'c': 3, 'm': 3, 'p': 3,
'f': 4, 'h': 4, 'w': 4, 'y': 4,
'k': 5,
'j': 8, 'x': 8,
'q': 10, 'z': 10,
# Russian alphabet
'а': 1, 'в': 1, 'е': 1, 'и': 1, 'н': 1, 'о': 1, 'с': 1, 'т': 1,
'д': 2, 'к': 2, 'л': 2, 'м': 2, 'п': 2, 'у': 2, 'р': 2, # "р" не было, на рандом добавил в 2 баллы.
'б': 3, 'г': 3, 'ё': 3, 'ь': 3, 'я': 3,
'й': 4, 'ы': 4,
'ж': 5, 'з': 5, 'ч': 5, 'ц': 5,
'ш': 8, 'э': 8, 'ю': 9,
'ф': 10, 'щ': 10, 'ъ': 10}
text = text.replace(' ', '') # убираю пробелы
text = text.lower() # делаю все символы низкими
score = 0 # нулевой счетчик баллов
symb_err = [] # инициализация списка для символов не в алфавите
# =====
# Главная логика
# =====
for symbol in text:
if symbol in alphabet:
score += alphabet[symbol]
else:
symb_err.append(symbol)
return score
# Функция мультиплеера
# Внутри встроена одиночная игра
# и интерактив ввиде выхода, выбора игры и ввода игроков
def parral_game(players):
players = players.split() # преобразование в список.
print(len(players))
if len(players) == 1: # Если игрок один то вопрос переходить ли на одиночный режим
print("- У вас один игрок\n- Выбираете режим одиночной?")
print("Yes(1), No(0)")
subm = int(input(":: "))
if subm == 1: # Если да то начинается одиночная игра
onepl_game = input("Введите текст: ")
resopl = scrabble(onepl_game)
print(f"Введенное слово: {onepl_game}, счет: {resopl}")
exit()
if subm == 0: # Если нет то опрашивается имя игроков
subm_name = input("Введите снова имена игроков: ")
subm_name = subm_name.split() # преобразую в список
subm_name = players # называю его как основной входящий аргумент функции
if len(players) > 1: # Мультиплеер
score_list = [] # инициализация игрового списка, индекс игрока == индекс статистики
for rond in range(1,10+1): # создание цикла на раунд
print(f"{rond} round")
for player_index in range(len(players)): # создания цикла на кол-во игроков
print(f"Ход {players[player_index]}")
input_text = input(":: ")
res = scrabble(input_text)
score_list.append(res)
if score_list[player_index] > 0:
score_list[player_index] += res
print(f"Очки :: {score_list[player_index]}")
print("--след--")
score_top = max(score_list) # определение победителя
score_top_index = score_list.index(score_top) # определение имени победителя
print(f"Выйграл {players[score_top_index]}, результат {score_top}")
print(f"Список игроков:")
for num_player in range(len(players)): # создания цикла на вывод списка играющих, не по сортировке
print(f"- {num_player}: {players[num_player]}, {score_list[num_player]}")
else: # Выход из игры
print("!Не веденны игроки, выход.")
exit()
parral_game(input("- Для выхода из программы нажмите энтер без текста\n- Введите кол-во игроков: "))

18
python/21.10.25/ex2.py Normal file
View File

@@ -0,0 +1,18 @@
# Немножечко не понял суть задания, так как на листке решение было давно уже указанно.
backpack = {
'Зажигалка':20, 'Компас':100, 'Фрукты':500, 'Рубашка':300,
'Термос':1000, 'аптечка':200, 'Куртка':600, 'Бинокль':400,
'Удочка':1300, 'Салфетки':40, 'Бутерброды':800,'Палатка':5500,
'Спальный мешок':2500,'Изолента':250,'Котел':3000
}
massa = int(input("Введите массу рюкзака :: "))*1000
lis_no = []
lis_ye = []
for key, value in backpack.items():
if value < massa:
lis_no.append(key)
for key, value in backpack.items():
if value > massa:
lis_ye.append(key)
print(f"могу взять {lis_no}, не могу взять {lis_ye}")

31
python/21.10.25/ex3.py Normal file
View File

@@ -0,0 +1,31 @@
note_book = {"Маша":
{'tel':'+7922123561','vk':'vk.com/masha321','youtube':'youtube.com/masha321','telegram'
:'t.me/masha321'},
"Маша":
{'tel':'+7922123561','vk':'vk.com/masha321','youtube':'youtube.com/masha321','telegram'
:'t.me/masha321'},
"Маша":
{'tel':'+7922123561','vk':'vk.com/masha321','youtube':'youtube.com/masha321','telegram'
:'t.me/masha321'},
"Маша":
{'tel':'+7922123561','vk':'vk.com/masha321','youtube':'youtube.com/masha321','telegram'
:'t.me/masha321'},
"Маша":
{'tel':'+7922123561','vk':'vk.com/masha321','youtube':'youtube.com/masha321','telegram'
:'t.me/masha321'},
}
user_input = input("Введите имя из списка контактов: ")
if user_input:
user_search = user_input[0].upper() + user_input[1:].lower()
else:
user_search = ""
if user_search in note_book:
contact = note_book[user_search]
print(f"Контакт: {user_search}")
for key, value in contact.items():
print(f"{key.capitalize()}: {value}")
else:
print("Контакт не найден.")

View File

@@ -0,0 +1,75 @@
#====
# Tasks
#====
def one_task(): # Форматированный текст при помощи табуляции.
print("\n\"Don\'t compare yourself with anyone in this world...if you do so, you are insulting\nyourself.\""
"\n\nBill Gates \n")
def two_task(): # Четные числа
list_numbers=[]
one_num = int(input("1_число :> "))
two_num = int(input("2_число :> "))
for nums in range(one_num,two_num+1):
if nums%2==0:
list_numbers.append(nums) # Добавление числа в список
print("Четные числа:",*list_numbers) # Вывод чисел без скобок через операнд распаковки *
def thr_task(): # Квадрат
# Перевод булева значения в true или false если у них низкие буквы
def to_bool(bool_str):
if bool_str.lower() == "true":
return True
elif bool_str.lower() == "false":
return False
else:
return True
# Интерактивное меню
def interact():
print("напишите значения в строку так: \"(ширина) (высота) (Заполнять квадрат(булево значение!) (патерн внутри если заполнять квадрат))\"\n"
"Обязательно заполнять аргументы через пробел! Допустимо через - или ,")
answer = input(":> ") # опрашиваю пользователя, как в bash с $1/$2/$n....
lis = answer.split() # превращаю тип данных в список(все определяется по пробелам)
cube(int(lis[0]), int(lis[1]), to_bool(lis[2]), lis[3]) # передаю эти значения, так же назначаю на ширину и высоту тип данных int, а на булево значение проверку если оно другое
# Сам алгоритм(грубо говоря мозги)
def cube(width, height, bool_fill, pattern):
if bool_fill == True:
for height_cube in range(1,height+1):
print(pattern*width)
elif bool_fill == False:
print(pattern*width)
for height_cube in range(1,height-2):
print(pattern, " "*(width-4), pattern)
print(pattern*width)
interact() # Вызов интерактивного меню
#====
# Main
#====
def main(): # Основные функции
def tasks(ans): # Модуль перехода к заданиями
if ans == 1:
one_task() # Так как задания изолированые, входные аргументы не передаются
elif ans == 2:
two_task()
elif ans == 3:
thr_task()
def menu(): # Основной модуль выбора задания
while True: # Так как программа подразумевает запуск нескольких заданий
# Мы делаем цикличную работу, пока не будет выбран 0 для brake.
print("Домашнее задание от 23.10.25\nВыберите номер задания:\n"
":-1 формат текст\t" ":-2 четн числа\n" ":-3 квадрат\t\t"
":-0 Выход\n")
answer = int(input(":> "))
if answer == 0:
print(":: exit!")
break
tasks(answer) # Переход к модулю перехода к заданиям
menu()
if __name__ == "__main__": # Используем скрипт как основной а не как импорт
main()

View File

@@ -0,0 +1,40 @@
def menu():
while True:
print(":: Calculator lesson 23-10 ::")
a = int(input("(1)-:: "))
b = int(input("(2)-:: "))
print(":: Menu ::\n" "1::+\t" "2::-\n" "3::-*\t" "4::-/\n" "0::exit\n")
oper = int(input("Enter oper :: "))
if oper == 0:
print(":: exit!")
break
calc(a,b,oper)
def calc(num1,num2,ans):
result=0
def summ():
return num1+num2
def deff():
return num1-num2
def diff():
if num2 == 0:
return 0
else:
return num1/num2
def multi():
return num1*num2
def printf():
print(f"{num1}{ans}{num2}={result}")
if ans == 1:
ans = "+"
result = summ(num1,num2)
elif ans == 2:
ans = "-"
result = deff(num1,num2)
elif ans == 4:
ans = "/"
result = diff(num1,num2)
elif ans == 3:
ans = "*"
result = multi(num1,num2)
printf(result,ans)

View File

@@ -0,0 +1,4 @@
from calc import menu
if __name__ == "__main__":
menu()

View File

@@ -0,0 +1,71 @@
# Experiment::monte-carlo
import datetime
from random import randint
def getBirthdays(numberOfBirthDays):
birthdays = [] # Список дней рожддения
for i in range(numberOfBirthDays):
# Год в нашей имитации роли не играет
# Лишь бы в обьектах дней рождения он был одинаков
startOfYear = datetime.date(2000,1,1)
# случайный день года
randomNumberOfDays = datetime.timedelta(randint(0,364))
birthday = startOfYear + randomNumberOfDays
birthdays.append(birthday)
return birthdays
'''
Принимает список дней рождения. обрабатывает его и
возвращает совпадения в датах, кот.
Встречаются несколько раз.
'''
def getMatch(birthdays):
if len(birthdays) == len(set(birthdays)):
return None # даты не совпадают, выход.
for a, birthdayA in enumerate(birthdays): # enumerate() про списку
for b, birthdayB in enumerate(birthdays[a+1 : ]):
if birthdayA == birthdayB:
return birthdayA # даты совпали
def main():
# Кортеж мес в году
MONTHS = ('Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec')
print("Симуляция совпадения дней рождения")
while True:
print("Сколько симуляции хотите сделать?\n PS max=100")
response = input(":>")
if response.isdecimal() and 0 < int(response): # Для неограниченного ввода значений убираем <= 100
numBDats = int(response) # При комментировании прилетает ошибка неопределенного типа данных.
break
print()
# Генерируем и отображаем дни рождения
day_birth = getBirthdays(numBDats) # Так как существует вторая переменная birthdays, то она перезаписывает данные по новому. По этому при выполнении кода на 59 строке переменная перезаписывается.
for i, birthday in enumerate(day_birth): # Изменение переменной(43 строка)
if i != 0:
print(", ", end='')
month = MONTHS[birthday.month - 1]
dateText = "{} {}".format(month, birthday.day)
print(dateText, end='')
print()
print()
print(f"Генерация {numBDats} случайных симуляции")
input("Нажмите Enter для старта....")
print("Запуск 100.000 симуляции")
simMatch = 0
for i in range(100_000):
if i % 1_000 == 0: # меняем число с 10_000 на 1_000
print(i, " запущена симуляция...")
birthdays = getMatch(day_birth) # Изменение переменной(43 строка)
if getMatch(day_birth) != None: # Изменение переменной(43 строка)
simMatch += 1
print(":"*11)
print("Было выполнено 100.000 симуляции.")
probability = round(simMatch/100_000*100,2)
print("Процент совпадения",probability)
print("Кол-во дат для исследования:",numBDats)
print("Кол-во циклов симуляции:",simMatch)
if __name__ == "__main__":
main()

39
python/26.09.py Normal file
View File

@@ -0,0 +1,39 @@
#2 задание
b = input()
lis = [int(ind) for ind in b]
b_min = b[0]
print(f"минимум: {b_min} список: {b}")
#3 задание
b = input()
lis = [int(i) for i in b]
index_num = 0
std_num = 0
while True:
if lis[index_num] <= 1:
std_num += 1
elif lis[index_num] <= 1:
std_num += 1
elif lis[index_num] % 2 == 0 or lis[index_num] % 3 == 0:
std_num += 1
index_num += 1
if index_num == len(lis) - 1:
print(f"Кол во простых чисел: {std_num}, список: {lis}")
#4 задание
list = [1, 2, 3, 4, 5, 6, 10, 22, 343, 4]
num_input = int(input())
del_list = list.remove(num_input)
print("удаленные элементы: {} \n список: {}".format(num_input, list))
#5 задание
list1 = [1, 2, 3, 4, 5]
list2 = [100, 200, 300, 200]
def lis_obe(lis1, lis2):
return lis1+lis2
print(lis_obe(list1, list2))
# 6 задание
spisok = [1, 2, 3, 4, 10, 12]
stepen = 2
print([i ** stepen for i in spisok])

57
python/README.md Normal file
View File

@@ -0,0 +1,57 @@
### Код в лекциях, решения заданий от преподавателей.
> xx.xx.xx - день.месяц.год
### Обозначение файлов.
- menu.py - класс Menu для легкого создания меню выполнения задания. Без постоянного повторения кода.
- xx.xx.xx.py - Файлы лекций/домашних работ, содержат код от преподавателя или задания с домашней работы.
- xx.xx.xx/ - тоже самое что файл, но каталог с отдельными файлами.
### Пример использования menu.py.
```python
from menu import Menu # Импортирую модуль, подразумеваю что он в каталоге где и ваш файл.
# Создаю для теста 3 функции
def hi():
print("Hello World")
def name():
ans = int(input("введи имя"))
print(f"Твое имя {ans}")
def radius():
for i in range(0,10+1):
print(i)
# Создаю константу TASKS.
# Примерные значения словаря:
# числоадания: ["описание задания", названиеункции]
TASKS = {
1: ["Вывод hello world", hi],
2: ["Вывод имени человека", name],
3: ["Создание радиуса до 10", radius]
}
# Условие проверки не импортирования модуля
# а так же инициализация модуля Menu.
if __name__ == "__main__":
# Указываю дату выполнения задания, и словарь с заданиями
info = Menu("25.10.25", TASKS)
info.Tasks() # Показываю список заданий и их описания
info.Answer() # Инициализирую опросник
'''
Вывод будет таким:
Домашнее задание от 25.10.25
Список заданий:
::::::::::::::::
:-1 - Вывод hello world.
:-2 - Вывод имени человека.
:-3 - Создание радиуса до 10.
:-0 - Выход.
::::::::::::::::
:> 1
Hello World
:> 0
:>> Выход!
'''
```

39
python/menu.py Normal file
View File

@@ -0,0 +1,39 @@
# ====
# ГОТОВЫЙ КЛАСС СОЗДАНИЯ МЕНЮ
# ====
# Для учителей по питону, в целях того что я знаю что у меня в коде:
# class - шаблон для создания обьектов для удобного вызова.
# __init__ - функция инициализации класса.
# self.x - функция получения аттрибутов.
# try/except - функция проверки ошибок для вывода своего текста вместо traceback.
# def func(self) - self в функции необходим для ссылки на обьект класса(тоесть обязательный параметр).
class Menu: # Класс меню, для легкого создания меню заданий
def __init__(self, date, dict_tasks): # Инициализируем класс с значениями
self.date = date # Число домашней работы
self.dict_tasks = dict_tasks # Словарь задач
def Tasks(self): # Вывод таблицы заданий
print(f"Домашнее задание от {self.date}")
print(f"Список заданий:")
print("::"*8)
for key,value in self.dict_tasks.items(): # создание списка заданий
print(f":-{key} - {value[0]}.")
print(":-0 - Выход.")
print("::"*8)
def Answer(self): # Ввод задания
while True:
try: # Использую проверку ошибок для тех кто введет не верное значение.
ans = int(input(":> "))
if ans == 0: # Проверяем введен ли выход из программы
print(":>> Выход!")
break
elif ans in self.dict_tasks: # Проверка числа задания в словаре
self.dict_tasks[ans][1]()
else: # Иначе выводим что задание не существует
print(":>> Задания не существует!")
except ValueError: # Если значение равно тексту или пустоте то выводится сообщение.
print(":>> Введите число!")

28
python/test.py Normal file
View File

@@ -0,0 +1,28 @@
from menu import Menu # Импортирую модуль, подразумеваю что он в каталоге где и ваш файл.
# Создаю для теста 3 функции
def hi():
print("Hello World")
def name():
ans = int(input("введи имя"))
print(f"Твое имя {ans}")
def radius():
for i in range(0,10+1):
print(i)
# Создаю константу TASKS.
# Примерные значения словаря:
# числоадания: ["описание задания", названиеункции]
TASKS = {
1: ["Вывод hello world", hi],
2: ["Вывод имени человека", name],
3: ["Создание радиуса до 10", radius]
}
# Условие проверки не импортирования модуля
# а так же инициализация модуля Menu.
if __name__ == "__main__":
# Указываю дату выполнения задания, и словарь с заданиями
info = Menu("25.10.25", TASKS)
info.Tasks() # Показываю список заданий и их описания
info.Answer() # Инициализирую опросник