Roadmap Belajar

Python Dasar untuk Pemula

Roadmap ini ditulis untuk orang yang belum pernah menulis satu baris kode pun. Tidak ada pengetahuan yang diandaikan: tidak perlu tahu apa itu variabel, apa itu fungsi, bahkan tidak perlu pernah membuka terminal. Kita mulai dari memasang Python.

Delapan fase, berurutan, tiap fase punya checkpoint konkret β€” kalimat sederhana yang menyatakan apa yang harus bisa kamu lakukan sebelum lanjut. Tiap materi punya halaman rangkuman berbahasa Indonesia; klik kartunya untuk membaca.

Durasi
~7 minggu
Beban
~5 jam/minggu
Prasyarat
Tidak ada
Setelah ini
Bisa bikin program sendiri

Cara memakai roadmap ini

Kesalahan terbesar pemula bukan β€œmaterinya terlalu susah”, tapi membaca terlalu banyak dan mengetik terlalu sedikit. Menonton orang berenang tidak membuatmu bisa berenang. Karena itu roadmap ini pendek, dan tiap materi diakhiri satu latihan yang harus kamu kerjakan sendiri.

Empat aturan

  1. Ketik ulang setiap contoh kode. Jangan copy-paste. Salah ketik pun berguna β€” dari situ kamu belajar membaca pesan error.
  2. Kerjakan latihannya sebelum lanjut. Satu fase yang dikerjakan mengalahkan tiga fase yang dibaca.
  3. Baca pesan error sampai habis. Baris terakhirnya hampir selalu menyebutkan persis apa yang salah.
  4. Macet lebih dari 30 menit? Tandai, lanjut dulu. Banyak hal baru masuk akal setelah melihat konteks berikutnya.
0

Siap-Siap: Pasang & Jalankan

2–3 jam instalasiVS Codeterminal

Tujuan: Python terpasang, editor siap, dan kamu bisa menjalankan file .py pertamamu.

Fase paling membosankan sekaligus paling sering bikin orang menyerah β€” bukan karena susah, tapi karena satu langkah terlewat lalu semuanya terasa rusak. Ikuti berurutan, sekali saja, dan kamu tidak perlu menyentuhnya lagi.

Program pertamamu

print("Halo, dunia!")

Simpan sebagai halo.py, lalu jalankan. Kalau tulisannya muncul di layar, seluruh rantai β€” Python, editor, terminal β€” sudah bekerja. Itu satu-satunya target fase ini.

Dua perintah yang perlu kamu kenal

python --version        # cek Python sudah terpasang (macOS/Linux: python3)
python halo.py          # jalankan sebuah file

Windows: saat memasang Python, wajib centang β€œAdd python.exe to PATH” di layar pertama installer. Ini penyebab masalah nomor satu di hari pertama. macOS/Linux: perintahnya python3, bukan python.

Materi

βœ“ Checkpoint

Kamu bisa membuat file .py baru di VS Code, mengetik print("halo"), menjalankannya, dan melihat hasilnya di terminal β€” tanpa membuka tutorial lagi.

1

Variabel & Tipe Data

1 minggu variabelint / strinputf-string

Tujuan: menyimpan nilai, menghitungnya, meminta data dari pengguna, dan menampilkan hasilnya dengan rapi.

Semua program dibangun dari dua hal: nilai, dan nama untuk menyimpan nilai. Fase ini kecil isinya tapi jangan diburu β€” hampir semua kebingungan di fase-fase berikutnya berakar pada tipe data yang tidak dipahami di sini.

Yang akan kamu tulis

nama = input("Siapa namamu? ")
umur = int(input("Umur kamu? "))        # int() karena input() selalu teks

tahun_depan = umur + 1
print(f"Halo {nama}, tahun depan kamu {tahun_depan} tahun.")

Empat tipe data

TipeUntuk apaContoh
intBilangan bulat20, -3
floatBilangan desimal3.14, 0.5
strTeks"Budi", "20"
boolBenar / salahTrue, False

Jebakan terbesar fase ini: input() selalu menghasilkan teks, walaupun kamu mengetik angka. "20" + 1 menghasilkan error, bukan 21. Bungkus dengan int() setiap kali angkanya mau dihitung.

Materi

βœ“ Checkpoint

Kamu bisa membuat kalkulator sederhana: minta dua angka dari pengguna, hitung, dan tampilkan hasilnya dalam kalimat yang rapi memakai f-string β€” tanpa error tipe data.

2

Percabangan

0,5–1 minggu if / elif / elseindentasiand / or

Tujuan: membuat program mengambil keputusan, dan memahami indentasi β€” aturan Python yang paling asing buat pendatang baru.

Sampai fase ini program berjalan lurus dari atas ke bawah. Dengan if, ia mulai bisa memilih jalan berdasarkan data. Ini juga fase pertama di mana spasi di awal baris menentukan arti kode.

Yang akan kamu tulis

nilai = int(input("Nilai ujian: "))

if nilai >= 90:
    grade = "A"
elif nilai >= 80:
    grade = "B"
elif nilai >= 70:
    grade = "C"
else:
    grade = "D"

if grade == "D":
    print(f"Nilai {nilai} β€” grade {grade}. Belum lulus, coba lagi.")
else:
    print(f"Nilai {nilai} β€” grade {grade}. Lulus!")

Indentasi bukan hiasan

if umur >= 17:
    print("Boleh punya SIM")     # ← menjorok: hanya jalan kalau kondisi benar
print("Program selesai")         # ← di tepi kiri: SELALU jalan

Gunakan 4 spasi, dan jangan pernah mencampurnya dengan Tab. Keduanya terlihat sama di layar tapi berbeda bagi Python. Nyalakan Render Whitespace di VS Code supaya kelihatan.

Operator yang dipakai

KelompokOperator
Perbandingan== != > < >= <=
Logikaand or not β€” bukan && atau ||
Keanggotaanin, not in

Satu = menyimpan, dua == membandingkan. if nilai = 70: adalah error sintaks β€” Python bahkan menyarankan perbaikannya di pesan error.

Materi

βœ“ Checkpoint

Kamu bisa menulis program validasi pendaftaran: menolak input yang salah, menyebutkan bagian mana yang salah, dan menggabungkan beberapa syarat dengan and/or.

3

Perulangan

1 minggu forwhilerangebreak

Tujuan: menyuruh komputer mengulang pekerjaan β€” inilah alasan utama orang menulis program.

Fase ini yang membuat programmu benar-benar berguna. Mengerjakan sesuatu sekali bisa dilakukan manual; mengerjakannya 10.000 kali tanpa lelah dan tanpa salah adalah pekerjaan komputer.

Dua jenis perulangan

# for β€” jumlah putaran sudah diketahui
for nama in ["Ani", "Budi", "Cici"]:
    print(f"Halo {nama}")

for i in range(1, 11):
    print(f"{i} x 7 = {i * 7}")

# while β€” berhenti kalau sesuatu terjadi
jawab = ""
while jawab != "ya":
    jawab = input("Sudah paham? (ya) ").lower()
PakaiKalau
forKamu tahu berapa kali, atau punya kumpulan data untuk disusuri
whileBerhentinya tergantung sesuatu yang belum terjadi

Kalau ragu, pakai for. Sebagian besar kebutuhan sehari-hari terpenuhi olehnya.

Pola yang akan kamu pakai terus

nilai = [80, 95, 67, 88]

total = 0                 # wadah disiapkan DI LUAR perulangan
for n in nilai:
    total += n

print(f"Rata-rata: {total / len(nilai):.1f}")

Perulangan tak berujung itu wajar terjadi. Kalau kondisi while tidak pernah jadi salah, programmu berjalan selamanya. Tekan Ctrl+C di terminal untuk menghentikannya.

Materi

βœ“ Checkpoint

Kamu bisa membuat game tebak angka: program mengacak angka, terus meminta tebakan, memberi petunjuk β€œterlalu besar/kecil”, dan berhenti saat benar sambil menyebutkan jumlah percobaan.

4

Struktur Data

1 minggu listdicttupleset

Tujuan: menyimpan banyak data dalam satu variabel, lalu mengolahnya β€” menambah, mencari, mengurutkan.

Satu variabel untuk satu nilai cepat sekali mentok. Fase ini memberi wadah yang bisa menampung ratusan data sekaligus, dan ini fase yang paling langsung terasa gunanya.

Empat wadah

nilai  = [80, 95, 67]                            # list  β€” berurutan, bisa diubah
siswa  = {"nama": "Budi", "umur": 20}            # dict  β€” berpasangan nama–nilai
titik  = (10, 20)                                # tuple β€” tetap, tidak bisa diubah
unik   = {"Ani", "Budi", "Ani"}                  # set   β€” tanpa kembar
ButuhPakaiMengambil isinya
Deretan data sejenislistnilai[0] β€” indeks mulai dari 0
Data yang tiap bagiannya punya namadictsiswa["nama"]
Data tetap yang tidak boleh berubahtupletitik[0]
Membuang data kembarsetlist(set(data))

Bentuk data yang paling sering kamu temui

siswa = [
    {"nama": "Ani", "nilai": 85},
    {"nama": "Budi", "nilai": 92},
    {"nama": "Cici", "nilai": 78},
]

peringkat = sorted(siswa, key=lambda s: s["nilai"], reverse=True)

for i, s in enumerate(peringkat, start=1):
    print(f"{i}. {s['nama']:<8} {s['nilai']}")

List berisi dictionary β€” inilah bentuk hampir semua data yang datang dari internet, file, atau database. Begitu kamu nyaman dengannya, sebagian besar pekerjaan data jadi terasa mudah.

Indeks mulai dari nol. Item pertama adalah data[0]. List berisi 4 item punya indeks 0 sampai 3, dan data[4] menghasilkan IndexError.

Materi

βœ“ Checkpoint

Kamu bisa membuat aplikasi daftar tugas di terminal: menambah, menghapus berdasarkan nomor, menampilkan daftar bernomor, dan keluar β€” semuanya dalam satu perulangan menu.

5

Fungsi

1 minggu defreturnparameterscope

Tujuan: memecah program jadi bagian-bagian bernama yang bisa dipakai ulang β€” batas antara β€œbisa ngoding” dan β€œbisa bikin program”.

Sampai fase ini programmu adalah satu tumpukan kode dari atas ke bawah. Begitu panjangnya lewat seratus baris, itu jadi tidak terkelola. Fungsi memberi kamu cara memberi nama pada sepotong logika, lalu memakainya tanpa perlu mengingat isinya.

Yang akan kamu tulis

def hitung_diskon(harga, persen=10):
    """Hitung harga setelah diskon."""
    potongan = harga * persen / 100
    return harga - potongan


print(hitung_diskon(100000))              # 90000.0
print(hitung_diskon(100000, persen=25))   # 75000.0

Dua hal yang paling sering dikacaukan

print()return
Melakukan apaMenampilkan ke layarMenyerahkan nilai ke pemanggil
Hasilnya bisa dihitung lagi?TidakYa
Kapan dipakaiSaat ingin menampilkanHampir selalu
def tambah(a, b):
    print(a + b)          # ← fungsi ini mengembalikan None

x = tambah(2, 3)          # layar: 5
print(x * 2)              # TypeError β€” x isinya None

Aturan yang perlu ditanam: data masuk lewat parameter, hasil keluar lewat return. Fungsi yang mengikuti pola ini bisa dipahami cukup dengan membaca dirinya sendiri.

Materi

βœ“ Checkpoint

Kamu bisa mengambil program daftar tugas dari Fase 4 dan memecahnya jadi fungsi-fungsi (tambah, hapus, tampilkan) β€” semua data mengalir lewat parameter dan return, tanpa satu pun variabel global.

6

String, File & Error

1 minggu str methodsopenpathlibtry/exceptjson

Tujuan: menyimpan data supaya tidak hilang saat program ditutup, dan membuat program tetap hidup ketika sesuatu gagal.

Ini fase yang mengubah latihan jadi program sungguhan. Program yang datanya hilang tiap kali ditutup tidak bisa dipakai siapa pun β€” termasuk kamu sendiri.

Menyimpan dan membaca

import json
from pathlib import Path

FILE = Path("tugas.json")

def simpan(daftar):
    FILE.write_text(json.dumps(daftar, indent=2, ensure_ascii=False), encoding="utf-8")

def muat():
    if not FILE.exists():
        return []
    return json.loads(FILE.read_text(encoding="utf-8"))

Menangani yang gagal

while True:
    try:
        umur = int(input("Umur: "))
        break
    except ValueError:
        print("Masukkan angka, bukan huruf.")

Error yang paling sering muncul

ErrorArtinya
ValueErrorTipenya benar, isinya tidak masuk akal β€” int("abc")
TypeErrorTipe salah untuk operasi itu β€” "5" + 5
KeyError / IndexErrorKunci atau posisi yang diminta tidak ada
FileNotFoundErrorFile tidak ditemukan

Baca traceback dari bawah ke atas. Baris paling bawah menyebutkan jenis error dan sebabnya; baris File terdekat di atasnya menunjukkan baris kode yang benar-benar gagal. Jangan pernah menulis except: polos β€” ia menelan bug-mu sendiri.

Materi

βœ“ Checkpoint

Daftar tugasmu sekarang tersimpan ke file JSON dan datanya masih ada saat program dijalankan lagi besok. Input yang salah tidak pernah membuat programnya berhenti mendadak.

7

Modul & Proyek Akhir

1–1,5 minggu importvenvpipPEP 8

Tujuan: memecah program ke beberapa file, memakai pustaka buatan orang lain, dan menyelesaikan satu proyek utuh dari nol.

Menata proyek

proyek-tugas/
β”œβ”€β”€ .venv/            # lingkungan Python khusus proyek ini (jangan di-commit)
β”œβ”€β”€ main.py           # titik masuk: menu dan alur program
β”œβ”€β”€ penyimpanan.py    # muat() dan simpan() ke JSON
β”œβ”€β”€ tugas.py          # tambah(), hapus(), tampilkan()
└── requirements.txt  # daftar pustaka yang dipakai
# main.py
from penyimpanan import muat, simpan
from tugas import tambah, tampilkan

def main():
    daftar = muat()
    ...

if __name__ == "__main__":
    main()

Proyek akhir

Pilih satu dan selesaikan sampai benar-benar bisa dipakai. Bukan sampai β€œkodenya jalan”, tapi sampai kamu nyaman memakainya sendiri selama seminggu.

ProyekYang dilatih
Pencatat keuangan harian
Catat pemasukan/pengeluaran, laporan per bulan
dict, JSON, datetime, fungsi
Aplikasi kuis
Bank soal, acak urutan, skor, riwayat nilai
list of dict, random, file, perulangan
Perapi file
Rapikan folder Downloads ke subfolder per jenis file
pathlib, perulangan, kondisi
Buku kontak
Tambah, cari, ubah, hapus, ekspor CSV
dict, csv, validasi input

Syarat kelulusan proyek

  1. Terbagi ke minimal dua file, dan tidak ada fungsi lebih panjang dari 20 baris
  2. Data tersimpan permanen ke file β€” masih ada setelah program ditutup
  3. Tidak pernah berhenti mendadak apa pun yang diketik pengguna
  4. Setiap fungsi punya docstring satu kalimat
  5. Lolos ruff check tanpa keluhan
  6. Ada README.md berisi cara menjalankannya

Materi

βœ“ Checkpoint

Satu proyek selesai dan memenuhi keenam syarat di atas. Kamu bisa menjelaskan tiap baris kodenya ke orang lain tanpa membuka catatan.

Setelah roadmap ini

Kamu sudah punya fondasi Python yang utuh: variabel, percabangan, perulangan, struktur data, fungsi, file, error, dan modul. Itu fondasi yang sama untuk ke mana pun kamu melanjutkan.

Kalau tertarik kePelajari berikutnya
AI / LLM engineeringPython untuk AI Engineer β€” idiom Python, type hints, async, SDK LLM, FastAPI
Analisis datapandas, matplotlib, dasar statistik
Web / backendHTTP, FastAPI, database, SQL
Otomasi pekerjaanopenpyxl, requests, penjadwalan tugas

Apa pun pilihannya, satu hal yang paling menentukan: terus membangun sesuatu yang kamu pakai sendiri. Satu proyek kecil yang benar-benar berguna mengajarkan lebih banyak daripada sepuluh tutorial.