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
1 change: 0 additions & 1 deletion __init__.py

This file was deleted.

6 changes: 0 additions & 6 deletions main.py

This file was deleted.

45 changes: 0 additions & 45 deletions периметр_и_площадь.py

This file was deleted.

Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
83 changes: 83 additions & 0 deletions проект/math_and_intelect/main_расчетов.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@


def main():
try:
from . import периметр_и_площадь, ports
except ImportError:
import периметр_и_площадь, ports

import math, random
while True:
primer = input('''
введите операцию
(площадь - вычисление периметра и площади,
+ = сложение,
= вычитание,
* = умножение,
степень - степени,
рандом - рандом
e или exit - выход
порты - просматривать статусы портов localhost
ip сайта - просмотреть ip-адрес сайта):
''')
if primer == 'площадь':
периметр_и_площадь.main()
elif primer == '+':
int1 = float(input('введите 1 число: '))
int2 = float(input('введите 2 число: '))

print(f'сумма: {int1 + int2}')
elif primer == '-':
int1 = float(input('введите 1 число: '))
int2 = float(input('введите 2 число: '))

print(f'разность: {int1 - int2}')
elif primer == '*':
int1 = float(input('введите 1 число: '))
int2 = float(input('введите 2 число: '))

print(f'произведение: {int1 * int2}')
elif primer == '/':
int1 = float(input('введите 1 число (не 0!): '))
int2 = float(input('введите 2 число (не 0!): '))

if int2 == 0.0:
print('деление на ноль!')
else:
print(f'частное: {int1 / int2}')
elif primer == 'степень':
int1 = float(input('1 число: '))
int2 = float(input('2 число: '))

print(f'степень чисел: {math.pow(int1, int2)}')
elif primer == 'рандом':
min_ = input('минимальное число: ')
max_ = input('максимальное число: ')

min_ = min(min_, max_)
max_ = max(min_, max_)

print(random.randint(int(min_), int(max_)))

elif primer == 'e' or primer == 'exit':
print('выход...')
break
elif primer == 'порты':
min__ = int(input('введите минимальный порт: '))
max__ = int(input('введите максимальный порт: '))
sleeping = input('скорость ожидания (рекомендуется не сменять) (по умолчанию 0.1): ')
if sleeping == '':
pass
else:
sleeping = float(sleeping)

ports.main_scan(min__, max__, sleeping)
elif primer == 'ip сайта':
a = input('введите название сайта: ')
ports.main_dns(a)
else:
print(f'операция \'{primer}\' не распознана')


if __name__ == "__main__":
main()
33 changes: 33 additions & 0 deletions проект/math_and_intelect/ports.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import socket
from rich import print as rprint

def main_scan(port_min: int = 0, port_max: int = 1024, timeout: float = 0.1):
host = '127.0.0.1'

for i in range(port_min, port_max + 1):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as soc:
soc.settimeout(timeout)
result = soc.connect_ex((host, i))

protocol = 'неизвестен'
try:
protocol = socket.getservbyport(i, 'tcp')
except (socket.error, OverflowError):
pass

if result == 0:
rprint(f'порт {i:5} [#00FF66] ОТКРЫТ[/] (сервис: {protocol})')
else:
rprint(f'порт {i:5} [#FF6500] ЗАКРЫТ[/] (сервис: {protocol})')
def main_dns(guery: str = 'google.com'):
try:
ip = socket.gethostbyname(guery)
except Exception as e:
print(f'возникла ошибка {e}')
ip = None

rprint(f'запрос: [#00FF66] {guery}, [#00FFDD] ip-адрес: {ip}[/]')

if __name__ == '__main__':
main_scan(0, 1000, 0.01)
main_dns('python.org')
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@

import math

def Calculations(figura, a=0, b=0, c=0):
if figura == 'круг':
perimetr = 2 * math.pi * a
ploshad = math.pi * (a ** 2)
return perimetr, ploshad
elif figura == 'квадрат':
perimetr = a * 4
ploshad = a * a
return perimetr, ploshad
elif figura == 'треугольник':
perimetr = a + b + c
p = perimetr / 2
# Формула Герона
ploshad = math.sqrt(p * (p - a) * (p - b) * (p - c))
return perimetr, ploshad
elif figura == 'прямоугольник':
perimetr = (a + b) * 2
ploshad = a * b

return perimetr, ploshad

def main():
print('-' * 30)
print('Программа расчета периметра и площади:')
print('-' * 30)
figura = input('Введите фигуру (круг, квадрат, треугольник, прямоугольник): ').lower()

try:
if figura == 'круг':
r = float(input('Введите радиус (дм): '))
p, s = Calculations('круг', a=r)
print(f'Периметр: {p:.3f} дм\nПлощадь: {s:.3f} дм²')

elif figura == 'квадрат':
a = float(input('Введите сторону (дм): '))
p, s = Calculations('квадрат', a=a)
print(f'Периметр: {p:.3f} дм\nПлощадь: {s:.3f} дм²')

elif figura == 'треугольник':
s1 = float(input('1-я сторона: '))
s2 = float(input('2-я сторона: '))
s3 = float(input('3-я сторона: '))

# Проверка существования треугольника
if s1 + s2 > s3 and s1 + s3 > s2 and s2 + s3 > s1:
p, s = Calculations('треугольник', a=s1, b=s2, c=s3)
print(f'Периметр: {p:.3f} дм\nПлощадь: {s:.3f} дм²')
else:
print("Треугольник с такими сторонами не существует!")
elif figura == 'прямоугольник':
s1 = float(input('1 сторона: '))
s2 = float(input('2 сторона: '))

print(f'Периметр: дм {Calculations('прямоугольник', a=s1, b=s2)[0]:.3f}\nплощадь: {Calculations('прямоугольник', a=s1, b=s2)[1]:.3f} дм²')

else:
print("Неизвестная фигура")
except ValueError:
print("Ошибка: введите числовое значение!")

print('-' * 30)

if __name__ == '__main__':
main()
Empty file added проект/os/__init__.py
Empty file.
97 changes: 97 additions & 0 deletions проект/os/os_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
import sys
import os, shutil
from rich.console import Console as Cons
import json
from time import sleep

# --- НАСТРОЙКА ПУТЕЙ ---
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
CONFIG_PATH = os.path.join(SCRIPT_DIR, 'settings.json')
PARENT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

if PARENT_DIR not in sys.path:
sys.path.append(PARENT_DIR)

os.system('cls' if os.name == 'nt' else 'clear')

try:
from math_and_intelect import main_расчетов
except ImportError:
main_расчетов = None

def main():
con = Cons()

# Дефолтные настройки
default_settings = {"user": "kirill", "version": "1.5.5", "start": 9, "color": {"fon": "#ff6600", "text": "#ff0000"}}


# --- ЗАГРУЗКА И ОБНОВЛЕНИЕ СЧЕТЧИКА ---
if not os.path.exists(CONFIG_PATH) or os.stat(CONFIG_PATH).st_size == 0:
settings = default_settings
else:
with open(CONFIG_PATH, 'r', encoding='utf-8') as file:
try:
settings = json.load(file)
except json.JSONDecodeError:
settings = default_settings

# Увеличиваем счетчик запусков
settings["start"] = settings.get("start", 0) + 1

# Сохраняем обновленные настройки (теперь счетчик реально пишется в JSON)
with open(CONFIG_PATH, 'w', encoding='utf-8') as f:
json.dump(settings, f, indent=4)

def draw_ui():
"""Функция для отрисовки шапки, чтобы не дублировать код"""
c_fon = settings.get("color", {}).get("fon", "#ad3bff")
c_text = settings.get("color", {}).get("text", "#1bb3a3")
size = shutil.get_terminal_size().columns
os.system('cls' if os.name == 'nt' else 'clear')

con.print(f'[{c_fon}]#[/]' * size)
# Добавили инфу о запусках в шапку!
header_text = f"{settings.get('user', 'User').capitalize()} OS {settings.get('version', '1.0')} (Запуск #{settings['start']})"
con.print(f'[{c_text}]{header_text.center(size)}[/]')
con.print(f'[{c_fon}]#[/]' * size)

draw_ui()

while True:
command = input(f"{settings.get('user', 'user')}@os: ").strip().lower()

if command == 'help':
print('''
help - показывает это окно
version - показывает версию ос
cls - очистить экран
exit, e - выйти
cal - калькулятор
restart - полная перезагрузка интерфейса
''')
elif command == 'version':
print(f"Version: {settings.get('version', '1.0')} (Runs: {settings.get('start')})")

elif command == 'cls' or command == 'restart':
draw_ui()
if command == 'restart':
con.print("[yellow]Система перезагружена...[/]")

elif command == 'cal':
if main_расчетов:
main_расчетов.main()
else:
print("Ошибка: калькулятор не найден!")

elif not command:
continue

elif command in ['exit', 'e']:
os.system('cls' if os.name == 'nt' else 'clear')
break
else:
print(f'команда \'{command}\' не определена')

if __name__ == "__main__":
main()
9 changes: 9 additions & 0 deletions проект/os/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"user": "kirill",
"version": "1.5.5",
"start": 14,
"color": {
"fon": "#ff6600",
"text": "#ff0000"
}
}