Compare commits

..

19 Commits

Author SHA1 Message Date
79411a06a0 last.commit.end 2025-10-25 18:51:17 +05:00
fox
7bea304138 См прошлый коммит 2025-10-25 13:01:12 +05:00
sophron
35e4ef07f7 d 2025-10-24 13:29:25 +05:00
sophron
01681ef20c a 2025-10-24 11:32:34 +05:00
fox
e4a890e01c d 2025-10-23 19:58:49 +05:00
sophron
a94433a226 add 2025-10-23 06:24:09 +00:00
fox
fa78d86ef7 add 2025-10-21 21:47:42 +05:00
sophron
52cc48f965 21.10.25 2025-10-21 20:01:30 +05:00
sophron
978c4a38e7 сегодня без питона 2025-10-20 10:50:19 +05:00
sophron
a8eacb0ec3 add 2025-10-13 05:04:45 +00:00
fox
0b664143f8 add 2025-10-12 21:04:40 +05:00
e7bc4ecb92 Обновить 02-10/tasks.py 2025-10-02 19:09:37 +05:00
fox
16d81d6d71 add 2025-10-02 19:09:09 +05:00
it-top
6a4255afff add 2025-10-02 15:21:03 +05:00
it-top
02970172af add 2025-10-02 13:37:55 +05:00
it-top
f9abd0c48c add 2025-10-02 12:31:48 +05:00
it-top
2e56fd2fe3 add 2025-10-02 12:31:43 +05:00
000bedddd7 add coment 2025-10-01 11:31:02 +05:00
fox
567fe0085e add 2025-10-01 11:29:42 +05:00
16 changed files with 653 additions and 2 deletions

27
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 )
# Вывод(В первом ответ может быть рандомный, как угодно множеству)
#Должники по информатике и математике: Козляков Петров Иванов Колмокозков
#Должники по трем предметам: Козляков Сидоров Петров Иванов Дрозников Колмокозков
#Должник по одному предмету: Козляков
#Сидоров в должниках по матем или русскому? Да, только Русский

127
02-10/practica.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))

85
02-10/tasks.py Normal file
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()

83
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)

0
13-10/danilov.py Normal file
View File

0
13-10/petrov.py Normal file
View File

18
21-10/backpack_twotask.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}")

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("Контакт не найден.")

88
21-10/scrabble_onetask.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- Введите кол-во игроков: "))

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()

75
23-10/home_work.py Normal file
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()

71
24-10/mont_carlo.py Normal file
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()

2
26-10.py Normal file
View File

@@ -0,0 +1,2 @@
num = lambda x,y: x+y
print(num(1,2))

View File

@@ -1,3 +1,3 @@
# python_it_top
# РЕПОЗИТОРИЙ АРХИВИРОВАН
[НОВЫЙ_РЕПОЗИТОРИЙ](https://git.sophron.ru/sophron/itc_projects)
Мои файлы с пары