Belajar Python dengan Project Nyata: 7 Ide Program untuk Melatih Skill Pemrograman
Belajar Python dengan Project Nyata: 7 Ide Program untuk Melatih Skill Pemrograman
Sebagai Software Engineer, saya sering melihat programmer pemula terjebak dalam siklus tutorial hell. Mereka menghafal sintaks tetapi gagal menerapkannya dalam sistem yang fungsional. Teori tanpa eksekusi adalah ilusi. Hari ini, di GEARFORGE, kita akan memotong kebisingan tersebut. Anda akan membangun perangkat lunak.
Berikut adalah 7 ide project nyata yang dirancang untuk melatih logika sistematis, arsitektur bersih (clean architecture), dan efisiensi script Python Anda.
1. CLI Todo App dengan Penyimpanan JSON
Mulailah dari fondasi. Aplikasi Command Line Interface (CLI) melatih Anda memahami struktur data dasar, manipulasi file I/O, dan penanganan argumen.
- Konsep Utama: CRUD (Create, Read, Update, Delete), modul
json, penanganan eksepsi (try-except). - Arsitektur Bersih: Pisahkan logika bisnis (manipulasi data) dari antarmuka I/O (terminal).
import json
from pathlib import Path
DATA_FILE = Path("todos.json")
def load_data() -> list:
if not DATA_FILE.exists():
return []
with open(DATA_FILE, "r") as f:
return json.load(f)
def save_data(todos: list) -> None:
with open(DATA_FILE, "w") as f:
json.dump(todos, f, indent=4)
def add_task(title: str):
todos = load_data()
todos.append({"title": title, "completed": False})
save_data(todos)
print(f"Task ditambahkan: {title}")
if __name__ == "__main__":
add_task("Pelajari Clean Architecture Python")
2. Web Scraper Otomatis dengan BeautifulSoup
Ekstraksi data melatih efisiensi script dan bagaimana menangani struktur DOM yang tidak terduga.
- Konsep Utama: Permintaan HTTP (
requests), parsing HTML (BeautifulSoup), dan ekspor data ke CSV. - Efisiensi: Gunakan list comprehension dan tangani timeout jaringan dengan benar.
3. RESTful API Sederhana menggunakan FastAPI
Jangan gunakan framework berat untuk permulaan. FastAPI memaksa Anda memahami tipe data ketat (type hints) dan standar arsitektur REST.
- Konsep Utama: Pydantic models, HTTP status codes, asinkronitas dasar (
async/def).
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
in_memory_db = {}
@app.post("/items/")
def create_item(item_id: int, item: Item):
if item_id in in_memory_db:
raise HTTPException(status_code=400, detail="Item sudah ada")
in_memory_db[item_id] = item.dict()
return {"message": "Sukses", "data": in_memory_db[item_id]}
4. Bot Telegram Otomatisasi Tugas
Integrasikan Python dengan layanan pihak ketiga. Project ini melatih penanganan event-driven programming dan manajemen token yang aman.
- Konsep Utama: Webhook, pengelolaan environment variables (
python-dotenv), dan polling.
5. Pemindai Port Jaringan (Network Port Scanner)
Uji kemampuan logika algoritmik dan konkurensi Anda dengan membangun alat keamanan jaringan dasar.
- Konsep Utama: Modul
socket, multithreading/asyncio untuk mempercepat proses pemindaian.
import socket
from concurrent.futures import ThreadPoolExecutor
def scan_port(target: str, port: int):
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(0.5)
s.connect((target, port))
print(f"[OPEN] Port {port}")
except (socket.timeout, ConnectionRefusedError):
pass
def scan_target(target: str, ports: range):
with ThreadPoolExecutor(max_workers=100) as executor:
for port in ports:
executor.submit(scan_port, target, port)
if __name__ == "__main__":
# Contoh penggunaan lokal
scan_target("127.0.0.1", range(20, 100))
6. Sistem Manajemen Database dengan SQLite & ORM
Berhenti menggunakan file teks untuk data kompleks. Pelajari bagaimana sistem manajemen database relasional berinteraksi dengan aplikasi Python.
- Konsep Utama: SQL Queries, SQLAlchemy ORM, migrasi data.
7. Pemantau Harga Kripto Real-Time
Gabungkan semua skill di atas: ambil data dari API publik, proses secara asinkron, dan simpan hasilnya ke database atau kirimkan notifikasi.
- Konsep Utama:
asyncio, penanganan API rate limits, dan error recovery.
Kesimpulan
Menulis kode yang bisa berjalan saja tidak cukup. Terapkan prinsip DRY (Don't Repeat Yourself), gunakan type hinting, dan pastikan struktur direktori proyek Anda rapi. Pilih satu dari 7 ide di atas hari ini, buka IDE Anda, dan mulai bangun sistemnya.