# PyLite - Упрощённый Python для детей 🐍✨

PyLite - это упрощённая версия языка Python, созданная специально для обучения детей программированию. Он сохраняет синтаксис Python, убирая сложные конструкции, которые могут запутать начинающих.

## 🌟 Особенности

- **Дружелюбный синтаксис** - максимально близок к настоящему Python
- **Понятные ошибки** - сообщения с эмодзи и советами на русском языке  
- **Интерактивный REPL** - экспериментируйте с кодом прямо в терминале
- **Безопасная среда** - ограничения защищают от сложных конструкций
- **Готовые модули** - math, random, time для интересных проектов

## 🚀 Быстрый старт

### Установка

```bash
# Устанавливаем из PyPI
pip install py-lite-edu

# Или клонируем из репозитория для разработки
git clone https://github.com/QueenDekim/pylite.git
cd pylite

# Запускаем
pylite
```

### Ваша первая программа

Создайте файл `hello.pyl`:

```python
def greet(name):
    print("Привет, " + name + "!")

greet("Мир")
print("Добро пожаловать в PyLite!")
```

Запустите её:

```bash
python -m pylite hello.pyl
```

### Интерактивный режим

```bash
python -m pylite
```

```
🐍 Добро пожаловать в PyLite!
Режим: базовый
Наберите 'quit()' или 'exit()' для выхода.

pyl> 2 + 3
5
pyl> print("Hello!")
Hello!
```

### Поддержка многострочных функций в интерактивном режиме
```
pyl> def hello(name):
...     print("Hello,", name)
...  
<function hello>
pyl> hello(str(input("Your name: ")))
Your name: Victor
Hello, Victor
```

## 📚 Поддерживаемые конструкции

### ✅ Что можно использовать:

- **Переменные**: `x = 5`, `name = "Анна"`
- **Типы данных**: числа, строки, булевы, списки, словари
- **Операторы**: `+`, `-`, `*`, `/`, `==`, `!=`, `<`, `>`, `and`, `or`, `not`
- **Условия**: `if`, `elif`, `else`
- **Циклы**: `for`, `while`
- **Функции**: `def my_function(param):`
- **Классы**: простые классы с методами
- **Модули**: `import math`, `from random import randint`

### ❌ Что НЕ поддерживается (для простоты):

- Генераторы и декораторы
- Множественное наследование
- break/continue в циклах
- Сложные конструкции типа lambda, yield
- Работа с файлами и сетью

## 🎮 Примеры программ

### Простой калькулятор

```python
def add(a, b):
    return a + b

def divide(a, b):
    if b == 0:
        print("Ошибка: нельзя делить на ноль!")
        return None
    return a / b

print("10 + 5 =", add(10, 5))
print("10 / 2 =", divide(10, 2))
```

### Игра "Угадай число"

```python
import random

secret = random.randint(1, 10)
print("Я загадал число от 1 до 10!")

for attempt in range(3):
    guess = int(input("Твоя догадка: "))
    
    if guess == secret:
        print("🎉 Поздравляю! Ты угадал!")
        break
    elif guess < secret:
        print("📈 Больше!")
    else:
        print("📉 Меньше!")
else:
    print("Число было", secret)
```

### Работа с классами

```python
class Pet:
    def __init__(self, name, animal_type):
        self.name = name
        self.type = animal_type
    
    def speak(self):
        if self.type == "собака":
            print(self.name + " говорит: Гав!")
        elif self.type == "кот":
            print(self.name + " говорит: Мяу!")

my_dog = Pet("Рекс", "собака")
my_cat = Pet("Мурка", "кот")

my_dog.speak()
my_cat.speak()
```

## 🔧 Встроенные возможности

### Функции

- `print()` - вывод на экран
- `input()` - ввод от пользователя  
- `len()` - длина объекта
- `range()` - последовательность чисел
- `str()`, `int()`, `float()` - преобразование типов
- `max()`, `min()`, `sum()` - работа с числами

### Модули

**math** - математика:
```python
import math
print(math.pi)  # 3.14159...
print(math.sqrt(16))  # 4.0
```

**random** - случайные числа:
```python
import random
print(random.randint(1, 6))  # Бросок кубика
print(random.choice(["красный", "синий", "зелёный"]))
```

**time** - работа с временем:
```python
import time
print("Спим 2 секунды...")
time.sleep(2)
print("Проснулись!")
```

## 🚨 Понимание ошибок

PyLite показывает дружелюбные сообщения:

```
📝 Ой! Ты забыл закрыть кавычки в строке 3.
🔍 Ты забыл поставить двоеточие ':' после if в строке 5.  
🚀 Переменная 'my_var' не определена. Ты забыл её создать?
📏 Слишком много уровней вложенности (больше 3). Попробуй упростить код.
```

## 🎯 Ограничения (базовый режим)

Эти ограничения помогают сосредоточиться на основах:

- Максимум 500 строк в программе
- Максимум 80 символов в строке  
- Глубина вложенности до 3 уровней
- Только простые конструкции Python

Для продвинутых учеников есть расширенный режим:

```bash
python -m pylite --mode extended my_program.pyl
```

## 📖 Документация

- [Руководство пользователя](docs/user_guide.md) - подробное описание языка
- [Техническая документация](docs/technical_documentation.md) - для разработчиков
- [Примеры программ](examples/) - готовые программы для изучения

## 🧪 Тестирование

```bash
# Запуск всех тестов
python run_tests.py

# Тестирование конкретного файла
python -m pylite examples/calculator.pyl
```

## 🖥️ Интеграция с VS Code

Для удобной разработки на PyLite доступно расширение для Visual Studio Code:

- Синтаксическая подсветка кода
- Автодополнение встроенных функций
- Сниппеты для быстрого создания конструкций
- Запуск программ прямо из редактора

Расширение можно установить тремя способами:

1. **Из Marketplace**: Откройте VS Code, перейдите в Extensions (Ctrl+Shift+X), найдите "PyLite" и установите расширение от `QueenDekim`.

2. **Через команду**: В палитре команд VS Code (Ctrl+Shift+P) выполните:
   ```
   ext install QueenDekim.pylite-language-support
   ```

3. **Из файла**: Расширение находится в директории `vscode-extension` и может быть установлено как `.vsix` файл.

4. **По ссылке** https://marketplace.visualstudio.com/items?itemName=QueenDekim.pylite-language-support.

## �🤝 Вклад в проект

1. Fork репозитория
2. Создайте ветку для новой функции
3. Добавьте тесты для ваших изменений
4. Убедитесь, что все тесты проходят
5. Отправьте Pull Request

## 📄 Лицензия

MIT License - используйте PyLite свободно для обучения и проектов!

---

**PyLite** - делаем программирование доступным для каждого ребёнка! 🌈👨‍💻👩‍💻
