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.5.tar.gz (17.4 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.5-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: examshell_python-0.1.5.tar.gz
  • Upload date:
  • Size: 17.4 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.5.tar.gz
Algorithm Hash digest
SHA256 dc5409990d9d2f6fa50f13b805725b33a6861d5339ffb42a19372d16867adebb
MD5 87baf277f2b0825087f25747bf3f7886
BLAKE2b-256 7d917f34a92e6b7c09584650e1883d7871db83cb20f559ea704e83f1e5ea4397

See more details on using hashes here.

File details

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

File metadata

  • Download URL: examshell_python-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 16.9 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f4db52fd8058dd4edb1da82ff15a9076d394d770a637e19b794a9c4de0a6c439
MD5 71dea3f170fe716059d1b93eac3a67f3
BLAKE2b-256 7295bf1ae573aa338f143486a52dd6d04fda275a865a04dcb17daa1077b72648

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