Init
This commit is contained in:
1
python/.gitignore
vendored
Normal file
1
python/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
__pycache__
|
||||
27
python/01.10.py
Normal file
27
python/01.10.py
Normal 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 )
|
||||
|
||||
# Вывод(В первом ответ может быть рандомный, как угодно множеству)
|
||||
#Должники по информатике и математике: Козляков Петров Иванов Колмокозков
|
||||
#Должники по трем предметам: Козляков Сидоров Петров Иванов Дрозников Колмокозков
|
||||
#Должник по одному предмету: Козляков
|
||||
#Сидоров в должниках по матем или русскому? Да, только Русский
|
||||
85
python/02.10.25/exercise.py
Normal file
85
python/02.10.25/exercise.py
Normal 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
127
python/02.10.25/lecture.py
Normal 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
83
python/06.10.py
Normal 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
23
python/12.09.25/ex1.py
Normal 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
13
python/12.09.25/ex2.py
Normal 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
41
python/12.09.25/ex3.py
Normal 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
41
python/12.09.25/ex4.py
Normal 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
41
python/12.09.25/ex5.py
Normal 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))
|
||||
|
||||
3
python/12.09.25/lecture.py
Normal file
3
python/12.09.25/lecture.py
Normal file
@@ -0,0 +1,3 @@
|
||||
for i in range(0, 20):
|
||||
print("*", end=' ')
|
||||
print(i)
|
||||
75
python/16.09.25/exercise.py
Normal file
75
python/16.09.25/exercise.py
Normal 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)
|
||||
18
python/16.09.25/lecture.py
Normal file
18
python/16.09.25/lecture.py
Normal 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
47
python/18.09.py
Normal 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
88
python/21.10.25/ex1.py
Normal 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
18
python/21.10.25/ex2.py
Normal 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
31
python/21.10.25/ex3.py
Normal 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("Контакт не найден.")
|
||||
75
python/23.10.25/home_work.py
Normal file
75
python/23.10.25/home_work.py
Normal 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()
|
||||
40
python/23.10.25/lecture_calculator/calc.py
Normal file
40
python/23.10.25/lecture_calculator/calc.py
Normal 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)
|
||||
4
python/23.10.25/lecture_calculator/main.py
Normal file
4
python/23.10.25/lecture_calculator/main.py
Normal file
@@ -0,0 +1,4 @@
|
||||
from calc import menu
|
||||
|
||||
if __name__ == "__main__":
|
||||
menu()
|
||||
71
python/24.10.25/lecture_montecarlo.py
Normal file
71
python/24.10.25/lecture_montecarlo.py
Normal 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
39
python/26.09.py
Normal 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
57
python/README.md
Normal 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
39
python/menu.py
Normal 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
28
python/test.py
Normal 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() # Инициализирую опросник
|
||||
Reference in New Issue
Block a user