Tiến độ: 0%
Huy hiệu: 0

Lộ trình Python ➜ Từ cơ bản đến thực chiến

1
Cơ bản
Biến, kiểu dữ liệu, toán tử, I/O
2
Cấu trúc dữ liệu
List, dict, set, tuple, comprehension
3
Tập tin & Ngoại lệ
File I/O, JSON, try/except, context
4
OOP & Nâng cao
Class, kế thừa, iterator, generator, decorator, typing
5
Thực chiến
Bài tập, Quiz, Dự án mini
Tổng: 0 bài

Chọn bài để bắt đầu

Mỗi bài có ví dụ. Nhấn Chạy ví dụ để mở trong Playground.

Danh sách bài tập

Đã qua: 0/0

Chọn bài tập để làm

gợi ý, mẫu code, và chấm điểm tự động.

Chọn quiz

Trả lời câu hỏi trắc nghiệm, nộp bài để xem điểm.

Tổng: 0 link

Chọn tài liệu để xem

Tài liệu chính thức, hướng dẫn, best practices, công cụ…

Chọn dự án

Mỗi dự án có mô tả, tiêu chí, và bộ test tự động.

Đang tải Pyodide...
stdin (dòng vào cho input())
📦 Quản lý gói Python
idle
Preset nhanh:
Hệ thống tự thử pyodide.loadPackage() (gói có sẵn như numpy, pandas, matplotlib, ...), nếu không có sẽ dùng micropip.install() cho gói thuần Python từ PyPI/URL .whl. Gói cần C-extension (ví dụ: torch) sẽ không cài được trong trình duyệt.
📒 Log cài đặt sẽ hiện ở đây.
🔌 Bật Runtime Server (CPython thật) — hướng dẫn nhanh

Tuỳ chọn này cho phép chạy CPython thật trong container, hỗ trợ cả gói C-extension (nếu có wheel phù hợp). Bạn cần dựng API POST /api/run phía server.

# FastAPI (ví dụ đơn giản)
from fastapi import FastAPI
from pydantic import BaseModel
import subprocess, tempfile, textwrap, json, os

app = FastAPI()
class Req(BaseModel):
    code: str
    stdin: list[str] = []
    requirements: str | None = None
    timeout_sec: int = 15

@app.post("/api/run")
async def run(req: Req):
    with tempfile.TemporaryDirectory() as td:
        if req.requirements:
            open(os.path.join(td,'requirements.txt'),'w').write(req.requirements)
            subprocess.run(["python","-m","pip","install","-r","requirements.txt","--no-input","--disable-pip-version-check"], cwd=td, timeout=120)
        code = textwrap.dedent(req.code)
        open(os.path.join(td,'main.py'),'w').write(code)
        p = subprocess.run(["python","main.py"], input="\n".join(req.stdin).encode(), cwd=td, capture_output=True, timeout=req.timeout_sec)
        return {"stdout": p.stdout.decode(), "stderr": p.stderr.decode()}

Triển khai thực tế: chạy trong Docker (non-root), giới hạn CPU/RAM/timeout, chroot/Firejail, cấm mạng nếu cần. Frontend này sẽ gọi /api/run khi chọn Runtime = Server.

⏳ Chưa có output.
Mẹo nhanh & công thức

Cheat Sheet

# List comprehension
[x*x for x in range(10) if x%2==0]

# Dict comprehension
{k:len(k) for k in ["a","bb","ccc"]}

# Context manager
with open('f.txt') as f:
    data = f.read()

# Decorator (đơn giản)
def log(fn):
    def wrap(*a, **kw):
        print('call', fn.__name__)
        return fn(*a, **kw)
    return wrap

@log
def hello():
    print('hi')

Hướng dẫn nhanh

  • Chạy Python trong trình duyệt bằng Pyodide. Không cần cài đặt.
  • Tiến độ, lời giải, điểm số lưu localStorage. Có thể Xuất/Nhập JSON hoặc Reset.
  • Playground hỗ trợ input() qua khung stdin, và cài package bằng micropip (package thuần Python).
  • Hoàn thành bài học → làm bài tập → quiz → dự án. Thu thập huy hiệu theo tiến độ.

Made with 💙 cho người học thích thực hành.