Skip to main content

Interactive 42-style exam practice shell for Python exercises

Project description

examshell-python

Interactive terminal shell for practising 42-style Python exam tasks. Simulates the real exam environment — timed pressure, blind grading, sequential levels — or lets you work through exercises freely in practice mode.

Features

  • Two modes — Real (exam simulation) and Practice (free training)
  • Automatic gradinggrademe runs your solution against test cases and shows a results table
  • Multi-language task descriptions — each task is described in EN, DE, FR, ES, IT
  • 14 tasks across 6 levels — from easy warm-ups to hard algorithmic challenges
  • Clean terminal UI — built with Rich

Installation

Requires Python 3.10+.

pip install examshell-python

Or install from source:

git clone <repo-url>
cd examshell-python
pip install .

Usage

examshell42

On launch you choose a mode:

╭─ Choose your Exam mode ─╮
│ Real mode       (1)     │
│ Practice mode   (2)     │
╰─────────────────────────╯

Real mode

Simulates the actual exam. Tasks are drawn randomly per level. Each correct solution earns +16 points; reach 100 to pass.

Command Description
grademe Check your solution
status Show current task info again
finish End the exam

Practice mode

Work through all tasks in any order, retry freely, no score pressure.

Command Description
grademe Check your solution
list Show all available tasks
choose Pick a task by number
skip Move to the next task
status Show current task info again
finish End the practice session

How it works

When a session starts, examshell creates a working directory (exam42/) with two sub-folders:

exam42/
├── subjects/
│   └── <task_name>/
│       ├── <task_name>.en.txt   ← task description + signature + examples
│       ├── <task_name>.de.txt
│       └── ...
└── rendu/
    └── <task_name>/
        └── <task_name>.py       ← put your solution here

Write your solution in rendu/<task_name>/<task_name>.py, then run grademe. The shell imports your file, executes each example against it, and prints a pass/fail table.

Tasks

Level Difficulty Task
1 Easy py_bracket_validator — validate bracket pairs ()[]{}
1 Easy py_cryptic_sorter — custom sort logic
2 Easy py_echo_validator — string validation
2 Easy py_mirror_matrix — matrix mirroring
3 Medium py_hidenp — hidden number problem
3 Medium py_inter — intersection of sequences
3 Medium py_number_base_converter — base conversion
3 Medium py_pattern_tracker — pattern detection
4 Medium py_anagram — anagram check
4 Medium py_shadow_merge — merge operations
4 Medium py_string_permutation_checker — permutation check
5 Hard py_string_sculptor — string transformation
5 Hard py_twist_sequence — sequence manipulation
6 Hard py_whisper_cipher — cipher encoding

Dependencies

  • pydantic ≥ 2.0 — task data models
  • rich ≥ 13.0 — terminal UI

Project structure

src/examshell/
├── __init__.py
├── __main__.py
├── main.py           # CLI entry point, mode logic, UI screens
├── models.py         # Pydantic models (Task, Description, Example)
├── task_generator.py # TaskManager: file creation, grading, task selection
├── config.py
└── data/
    └── data.json     # All task definitions

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

examshell_python-0.1.4.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

examshell_python-0.1.4-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file examshell_python-0.1.4.tar.gz.

File metadata

  • Download URL: examshell_python-0.1.4.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for examshell_python-0.1.4.tar.gz
Algorithm Hash digest
SHA256 2b0451824b54ac8cfa6fca84568cef2cdca5efbc71648674b2f1b61ded5e6b3f
MD5 5ffd9290e8ea5629676dc22ca41133e8
BLAKE2b-256 95cb33cbd178b7af87b79e74d138248cbdfa0d20c28c31eab5fc0d2a2dc6f704

See more details on using hashes here.

File details

Details for the file examshell_python-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: examshell_python-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for examshell_python-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0936a7201f218a87b671f58f78508bf45f8634adf046a59b98d246835cf90dff
MD5 35647de8adc3f3559e8528d89a74d64d
BLAKE2b-256 4678bd47f7a0468bbe2404eea3e5cb30a86f023dd40842a1d6c6333dfa1d9199

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page