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.
Belum perlu dipelajari sekarang
Semua ini penting nanti, tapi mempelajarinya sekarang cuma memperlambatmu. Kalau menemukannya di tutorial lain, lewati dengan tenang.
| Topik | Alasan ditunda |
|---|---|
| Class & OOP | Belum ada masalah yang butuh diselesaikan dengan itu |
Decorator, generator, lambda mendalam | Fitur lanjutan; kamu tidak akan kehilangan apa pun tanpanya |
| Django, Flask, FastAPI | Web framework β perlu dasar yang kokoh dulu |
| NumPy, pandas, machine learning | Butuh Python dasar yang lancar sebagai fondasi |
| Git, Docker, deployment | Alat kerja, bukan bahasa. Belajar terpisah setelah ini |
Python 2, print tanpa kurung | Sudah pensiun sejak 2020. Kalau tutorialnya begitu, tutup saja |
Empat aturan
- Ketik ulang setiap contoh kode. Jangan copy-paste. Salah ketik pun berguna β dari situ kamu belajar membaca pesan error.
- Kerjakan latihannya sebelum lanjut. Satu fase yang dikerjakan mengalahkan tiga fase yang dibaca.
- Baca pesan error sampai habis. Baris terakhirnya hampir selalu menyebutkan persis apa yang salah.
- Macet lebih dari 30 menit? Tandai, lanjut dulu. Banyak hal baru masuk akal setelah melihat konteks berikutnya.
Siap-Siap: Pasang & Jalankan
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
-
Kenapa Python?ResmiHalaman pembuka tutorial resmi: masalah seperti apa yang Python selesaikan, dan kenapa ia enak dipakai orang yang baru mulai.docs.python.orgBaca rangkuman β
-
Memasang PythonResmiUnduh dan pasang Python di Windows, macOS, atau Linux β lengkap dengan satu centang di Windows yang kalau terlewat bikin repot berhari-hari.python.orgBaca rangkuman β
-
Dua Cara Menjalankan PythonResmiMode interaktif (
>>>) untuk coba-coba, file.pyuntuk program sungguhan β kapan pakai yang mana.docs.python.orgBaca rangkuman β -
Menulis Kode di VS CodeResmiEditor gratis yang dipakai mayoritas programmer. Pasang, pilih interpreter, tekan Run β tiga langkah lalu selesai.code.visualstudio.comBaca rangkuman β
Kamu bisa membuat file .py baru di VS Code, mengetik print("halo"),
menjalankannya, dan melihat hasilnya di terminal β tanpa membuka tutorial lagi.
Variabel & Tipe Data
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
| Tipe | Untuk apa | Contoh |
|---|---|---|
int | Bilangan bulat | 20, -3 |
float | Bilangan desimal | 3.14, 0.5 |
str | Teks | "Budi", "20" |
bool | Benar / salah | True, 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
-
Angka, Teks, dan VariabelResmiPelajaran pertama yang sesungguhnya: berhitung, menyimpan nilai ke variabel, dan menempelkan teks.docs.python.orgBaca rangkuman β
-
Empat Tipe Data yang Perlu Kamu KenalResmi
int,float,str,boolβ apa bedanya, cara mengeceknya, dan cara mengubah satu jadi yang lain.docs.python.orgBaca rangkuman β -
Fungsi Bawaan yang Dipakai Tiap HariResmiPython menyediakan ~70 fungsi siap pakai. Dari daftar itu, ada 12 yang benar-benar kamu butuhkan sekarang.docs.python.orgBaca rangkuman β
-
f-string β Cara Merangkai TeksResmiSatu huruf
fdi depan tanda kutip, dan kamu bisa menyisipkan variabel langsung ke dalam kalimat.docs.python.orgBaca rangkuman β
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.
Percabangan
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
| Kelompok | Operator |
|---|---|
| Perbandingan | == != > < >= <= |
| Logika | and or not β bukan && atau || |
| Keanggotaan | in, not in |
Satu = menyimpan, dua == membandingkan.
if nilai = 70: adalah error sintaks β Python bahkan menyarankan perbaikannya di pesan error.
Materi
-
if, elif, elseResmiMembuat program mengambil keputusan β plus penjelasan indentasi, aturan Python yang paling asing buat pendatang baru.docs.python.orgBaca rangkuman β
-
Operator PerbandinganResmiEnam operator yang mengubah dua nilai jadi
TrueatauFalseβ bahan bakar setiapif.docs.python.orgBaca rangkuman β -
and, or, not β dan Nilai yang Dianggap SalahResmiMenggabungkan beberapa syarat, plus aturan Python soal nilai apa saja yang dihitung sebagai βkosongβ.docs.python.orgBaca rangkuman β
Kamu bisa menulis program validasi pendaftaran: menolak input yang salah, menyebutkan
bagian mana yang salah, dan menggabungkan beberapa syarat dengan and/or.
Perulangan
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()
| Pakai | Kalau |
|---|---|
for | Kamu tahu berapa kali, atau punya kumpulan data untuk disusuri |
while | Berhentinya 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
-
Perulangan forResmiMengerjakan hal yang sama untuk setiap item, tanpa menyalin-tempel kode. Ini perulangan yang paling sering dipakai di Python.docs.python.orgBaca rangkuman β
-
range() β Deretan AngkaResmiTiga bentuk
range(), dan kenaparange(5)berhenti di 4 β bukan di 5.docs.python.orgBaca rangkuman β -
while, break, dan continueResmiPerulangan yang jalan sampai syaratnya tidak lagi terpenuhi β untuk kasus yang jumlah putarannya belum diketahui.docs.python.orgBaca rangkuman β
-
enumerate dan zipResmiDua fungsi kecil yang menghilangkan kode ribet: nomor urut otomatis, dan menyusuri dua list sekaligus.docs.python.orgBaca rangkuman β
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.
Struktur Data
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
| Butuh | Pakai | Mengambil isinya |
|---|---|---|
| Deretan data sejenis | list | nilai[0] β indeks mulai dari 0 |
| Data yang tiap bagiannya punya nama | dict | siswa["nama"] |
| Data tetap yang tidak boleh berubah | tuple | titik[0] |
| Membuang data kembar | set | list(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
-
List β Menyimpan Banyak NilaiResmiSatu variabel yang menampung banyak nilai sekaligus, plus cara mengambil isinya lewat nomor indeks dan potongan.docs.python.orgBaca rangkuman β
-
Mengubah Isi ListResmi
append,remove,pop,sortβ perintah yang menambah, membuang, dan merapikan isi list.docs.python.orgBaca rangkuman β -
Dictionary β Data BerpasanganResmiMenyimpan data dengan label, bukan nomor urut:
{"nama": "Budi", "umur": 20}. Struktur data terpenting kedua setelah list.docs.python.orgBaca rangkuman β -
Tuple dan SetResmiDua struktur data sisanya: tuple untuk data yang tidak boleh berubah, set untuk data yang tidak boleh kembar.docs.python.orgBaca rangkuman β
-
Mengurutkan DataResmi
sorted()untuk data sederhana, dan parameterkeyuntuk mengurutkan daftar dictionary menurut isinya.docs.python.orgBaca rangkuman β
Kamu bisa membuat aplikasi daftar tugas di terminal: menambah, menghapus berdasarkan nomor, menampilkan daftar bernomor, dan keluar β semuanya dalam satu perulangan menu.
Fungsi
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 apa | Menampilkan ke layar | Menyerahkan nilai ke pemanggil |
| Hasilnya bisa dihitung lagi? | Tidak | Ya |
| Kapan dipakai | Saat ingin menampilkan | Hampir 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
-
Membuat Fungsi SendiriResmiMemberi nama pada sepotong kode supaya bisa dipakai berulang kali β langkah pertama menuju program yang tidak berantakan.docs.python.orgBaca rangkuman β
-
Argumen FungsiResmiNilai bawaan, memanggil dengan nama parameter, dan satu jebakan berbahaya soal
[]sebagai nilai bawaan.docs.python.orgBaca rangkuman β -
Scope β Di Mana Variabel HidupResmiKenapa variabel yang dibuat di dalam fungsi menghilang di luar β dan kenapa itu justru bagus.docs.python.orgBaca rangkuman β
-
Docstring β Menjelaskan FungsimuResmiSatu kalimat di baris pertama fungsi yang menjelaskan gunanya. Murah ditulis, sangat mahal kalau tidak ada.peps.python.orgBaca rangkuman β
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.
String, File & Error
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
| Error | Artinya |
|---|---|
ValueError | Tipenya benar, isinya tidak masuk akal β int("abc") |
TypeError | Tipe salah untuk operasi itu β "5" + 5 |
KeyError / IndexError | Kunci atau posisi yang diminta tidak ada |
FileNotFoundError | File 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
-
Mengolah TeksResmi
strip,split,replace,lowerβ dua belas perintah yang menutupi hampir semua pekerjaan teks.docs.python.orgBaca rangkuman β -
Membaca dan Menulis FileResmi
with open(...)β cara menyimpan data supaya tidak hilang saat program ditutup.docs.python.orgBaca rangkuman β -
pathlib β Mengurus Lokasi FileResmiCara modern menangani nama folder dan file β bekerja sama di Windows, macOS, dan Linux tanpa diubah.docs.python.orgBaca rangkuman β
-
Error dan try/exceptResmiCara membaca pesan error, dan cara membuat program tetap hidup ketika sesuatu yang wajar-wajar saja ternyata gagal.docs.python.orgBaca rangkuman β
-
JSON β Menyimpan Data TerstrukturResmiMenyimpan dictionary dan list ke file lalu membacanya kembali utuh β format yang dipakai hampir semua aplikasi di dunia.docs.python.orgBaca rangkuman β
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.
Modul & Proyek Akhir
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.
| Proyek | Yang 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
- Terbagi ke minimal dua file, dan tidak ada fungsi lebih panjang dari 20 baris
- Data tersimpan permanen ke file β masih ada setelah program ditutup
- Tidak pernah berhenti mendadak apa pun yang diketik pengguna
- Setiap fungsi punya docstring satu kalimat
- Lolos
ruff checktanpa keluhan - Ada
README.mdberisi cara menjalankannya
Materi
-
Modul dan importResmiMemecah program jadi beberapa file, dan memakai kode yang ditulis orang lain.docs.python.orgBaca rangkuman β
-
Modul Bawaan yang BergunaResmi
random,datetime,math,csvβ sudah terpasang, tinggalimport.docs.python.orgBaca rangkuman β -
Virtual Environment dan pipResmiMemasang pustaka buatan orang lain, dan kenapa tiap proyek sebaiknya punya lingkungannya sendiri.docs.python.orgBaca rangkuman β
-
PEP 8 β Gaya Menulis KodeResmiAturan gaya resmi Python. Dokumennya panjang; sepuluh aturan pertamanya sudah cukup untuk membuat kodemu terlihat profesional.peps.python.orgBaca rangkuman β
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 ke | Pelajari berikutnya |
|---|---|
| AI / LLM engineering | Python untuk AI Engineer β idiom Python, type hints, async, SDK LLM, FastAPI |
| Analisis data | pandas, matplotlib, dasar statistik |
| Web / backend | HTTP, FastAPI, database, SQL |
| Otomasi pekerjaan | openpyxl, 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.