📋 Daftar Isi
1. Variabel & Tipe Data
# Variabel & assignment
nama = "Budi" # str
umur = 25 # int
tinggi = 1.75 # float
aktif = True # bool
data = None # NoneType
# Multiple assignment
a, b, c = 1, 2, 3
x = y = z = 0
# Konversi tipe
s = str(42) # "42"
n = int("42") # 42
f = float("3.14") # 3.14
b = bool(1) # True
lst = list("abc") # ['a', 'b', 'c']
tpl = tuple([1,2]) # (1, 2)
st = set([1,2,2]) # {1, 2}
# Type checking
type(nama) # <class 'str'>
isinstance(nama, str) # TrueTipe Data Bawaan
| Tipe | Contoh | Sifat |
|---|---|---|
int | 42, -7, 0 | Integer, tanpa batas |
float | 3.14, -0.5 | Desimal |
str | "hello", 'world' | Immutable, sequence |
bool | True, False | Boolean |
list | [1, 2, 3] | Mutable, ordered |
tuple | (1, 2, 3) | Immutable, ordered |
dict | {"a": 1} | Mutable, key-value |
set | {1, 2, 3} | Mutable, unique, unordered |
None | None | Null value |
2. String Operations
# F-string (Python 3.6+)
nama = "Budi"
umur = 25
print(f"Halo {nama}, umur {umur} tahun")
print(f"Hasil: {10 * 3 = }") # Debug = (Python 3.8+)
print(f"Pi: {3.14159:.2f}") # Format: 3.14
print(f"Kanan: {'hi':>10}") # Padding kanan
print(f"Nol: {42:05d}") # Zero-pad: 00042
# Method umum
s = "Hello World"
s.lower() # "hello world"
s.upper() # "HELLO WORLD"
s.strip() # Hapus whitespace
s.split(" ") # ["Hello", "World"]
"-".join(["a","b"]) # "a-b"
s.replace("H", "J") # "Jello World"
s.startswith("He") # True
s.find("World") # 6
s.count("l") # 3
s.isnumeric() # False
",".join(map(str, [1,2,3])) # "1,2,3"
# Slicing
s = "Python"
s[0] # 'P'
s[-1] # 'n'
s[1:4] # 'yth'
s[::2] # 'Pto'
s[::-1] # 'nohtyP' (reverse)3. List Operations
# Buat list
arr = [1, 2, 3, 4, 5]
kosong = []
campuran = [1, "dua", 3.0, True]
# Akses & slicing
arr[0] # 1 (indeks pertama)
arr[-1] # 5 (indeks terakhir)
arr[1:4] # [2, 3, 4]
arr[::2] # [1, 3, 5]
# Method
arr.append(6) # Tambah di akhir
arr.insert(0, 0) # Tambah di indeks 0
arr.extend([7, 8]) # Tambah banyak elemen
arr.pop() # Hapus & return elemen terakhir
arr.pop(0) # Hapus di indeks 0
arr.remove(3) # Hapus nilai pertama yang cocok
arr.sort() # Sort ascending
arr.sort(reverse=True) # Sort descending
arr.reverse() # Balik urutan
arr.index(2) # Cari indeks nilai
arr.count(2) # Hitung kemunculan
len(arr) # Panjang list
sorted(arr) # Return sorted baru (tidak ubah asli)
min(arr), max(arr) # Min & max
sum(arr) # Jumlah semua elemen
# Unpacking
a, b, *rest = [1, 2, 3, 4, 5]
# a=1, b=2, rest=[3,4,5]4. Dictionary Operations
# Buat dict
d = {"nama": "Budi", "umur": 25, "kota": "Jakarta"}
d2 = dict(nama="Ani", umur=20)
# Akses
d["nama"] # "Budi" (KeyError jika tidak ada)
d.get("nama") # "Budi" (None jika tidak ada)
d.get("email", "N/A") # "N/A" (default)
# Operasi
d["email"] = "budi@mail.com" # Tambah/update
del d["kota"] # Hapus
d.pop("umur") # Hapus & return value
d.keys() # dict_keys([...])
d.values() # dict_values([...])
d.items() # dict_items([...])
d.update({"hp": "0812"}) # Update banyak
len(d) # Jumlah key
# Iterasi
for key in d:
print(key, d[key])
for key, val in d.items():
print(f"{key}: {val}")
# Merge (Python 3.9+)
merged = d | d2 # Merge baru
d |= d2 # In-place merge
# Dict Comprehension
squares = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}5. Set Operations
# Buat set
s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
s3 = set([1, 2, 3])
# Operasi himpunan
s1 | s2 # Union: {1,2,3,4,5,6}
s1 & s2 # Intersection: {3,4}
s1 - s2 # Difference: {1,2}
s1 ^ s2 # Symmetric diff: {1,2,5,6}
# Method
s1.add(5) # Tambah elemen
s1.discard(1) # Hapus (no error jika tidak ada)
s1.remove(2) # Hapus (error jika tidak ada)
s1.pop() # Hapus & return satu elemen
s1.update([6, 7]) # Tambah banyak elemen
len(s1) # Jumlah elemen
# Cek keanggotaan (sangat cepat)
3 in s1 # True
10 not in s1 # True6. List / Dict / Set Comprehension
# List comprehension
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
genap = [x for x in range(20) if x % 2 == 0]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
nested = [x*y for x in range(3) for y in range(3)]
# [0, 0, 0, 0, 1, 2, 0, 2, 4]
# Conditional expression dalam comprehension
labels = ["genap" if x%2==0 else "ganjil" for x in range(5)]
# ['genap', 'ganjil', 'genap', 'ganjil', 'genap']
# Dict comprehension
d = {k: v for k, v in [("a", 1), ("b", 2)]}
# {'a': 1, 'b': 2}
filter_d = {k: v for k, v in d.items() if v > 1}
# {'b': 2}
# Set comprehension
unique = {x % 3 for x in range(10)}
# {0, 1, 2}
# Generator expression (lazy)
gen = (x**2 for x in range(1000000)) # Tidak alokasi memori langsung
sum(gen) # Hitung saat diminta7. Fungsi & Decorator
# Fungsi dasar
def sapa(nama="World"):
return f"Halo, {nama}!"
# *args dan **kwargs
def hitung(*args, **kwargs):
total = sum(args)
label = kwargs.get("label", "Total")
return f"{label}: {total}"
hitung(1, 2, 3, label="Sum") # "Sum: 6"
# Lambda
kali = lambda a, b: a * b
sorted(data, key=lambda x: x["umur"])
# Decorator
def log(func):
def wrapper(*args, **kwargs):
print(f"Memanggil {func.__name__}")
result = func(*args, **kwargs)
print(f"Selesai: {result}")
return result
return wrapper
@log
def tambah(a, b):
return a + b
# Decorator dengan parameter
def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def halo():
print("Halo!")8. Class & OOP
class Hewan:
def __init__(self, nama, suara):
self.nama = nama
self.suara = suara
def speak(self):
return f"{self.nama}: {self.suara}!"
def __repr__(self):
return f"Hewan('{self.nama}')"
def __eq__(self, other):
return self.nama == other.nama
class Kucing(Hewan):
def __init__(self, nama):
super().__init__(nama, "Meong")
def purr(self):
return f"{self.nama} mendengkur..."
# Penggunaan
kucing = Kucing("Kitty")
print(kucing.speak()) # "Kitty: Meong!"
print(kucing.purr()) # "Kitty mendengkur..."
# Property
class Lingkaran:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@property
def luas(self):
return 3.14159 * self._radius ** 29. File I/O
# Baca file
with open("data.txt", "r") as f:
content = f.read() # Baca semua
# lines = f.readlines() # List baris
# for line in f: # Per baris
# print(line.strip())
# Tulis file
with open("output.txt", "w") as f:
f.write("Hello World\n")
f.writelines(["line1\n", "line2\n"])
# Append
with open("log.txt", "a") as f:
f.write("Baris baru\n")
# JSON
import json
data = {"nama": "Budi", "umur": 25}
with open("data.json", "w") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
with open("data.json", "r") as f:
loaded = json.load(f)
# String ↔ JSON
json_str = json.dumps(data, indent=2)
parsed = json.loads(json_str)
# CSV
import csv
with open("data.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["Nama", "Umur"])
writer.writerow(["Budi", 25])
with open("data.csv", "r") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["Nama"], row["Umur"])10. Error Handling (try/except)
# Basic try/except
try:
result = 10 / 0
except ZeroDivisionError:
print("Tidak bisa dibagi nol!")
# Multiple except
try:
value = int(input("Angka: "))
result = 10 / value
except ValueError:
print("Input bukan angka!")
except ZeroDivisionError:
print("Tidak boleh nol!")
except Exception as e:
print(f"Error: {e}")
else:
print(f"Hasil: {result}") # Jika tidak ada error
finally:
print("Selalu dijalankan") # Selalu eksekusi
# Custom exception
class ValidationError(Exception):
def __init__(self, field, message):
self.field = field
self.message = message
super().__init__(f"{field}: {message}")
# Context manager
from contextlib import contextmanager
@contextmanager
def timer(label):
import time
start = time.time()
yield
print(f"{label}: {time.time() - start:.2f}s")
with timer("Proses"):
sum(range(1000000))11. Generator & Iterator
# Generator function (yield)
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# Penggunaan
for num in fibonacci(10):
print(num)
# Generator expression
gen = (x**2 for x in range(1000))
# Yield from (delegasi)
def flatten(nested):
for item in nested:
if isinstance(item, list):
yield from flatten(item)
else:
yield item
list(flatten([1, [2, 3], [4, [5]]]))
# [1, 2, 3, 4, 5]
# itertools populer
from itertools import count, cycle, chain, islice, groupby
# count: 0, 1, 2, 3, ...
# cycle: a, b, c, a, b, c, ...
# chain: gabung beberapa iterabel
list(chain([1,2], [3,4])) # [1, 2, 3, 4]
list(islice(count(), 5)) # [0, 1, 2, 3, 4]12. Modul Populer
os — Operasi Sistem
import os
os.getcwd() # Current working directory
os.listdir(".") # List isi direktori
os.makedirs("dir/sub", exist_ok=True) # Buat folder
os.path.exists("file.txt") # Cek file ada
os.path.isfile("file.txt") # Cek file
os.path.isdir("dir") # Cek direktori
os.path.join("dir", "file") # Gabung path (cross-platform)
os.path.basename("/a/b.txt") # "b.txt"
os.path.dirname("/a/b.txt") # "/a"
os.environ["HOME"] # Environment variable
os.rename("lama.txt", "baru.txt")
os.remove("file.txt") # Hapus filesys — System Parameters
import sys
sys.argv # Command line arguments
sys.version # Python version
sys.platform # "win32", "linux", "darwin"
sys.path # Module search path
sys.exit(0) # Keluar dari program
sys.stdin # Standard input
sys.stdout # Standard output
sys.maxsize # Max integerre — Regular Expression
import re
text = "Email: budi@mail.com dan ani@corp.co.id"
# Cari semua email
emails = re.findall(r'[\w.]+@[\w.]+\.\w+', text)
# ['budi@mail.com', 'ani@corp.co.id']
# Match satu
m = re.search(r'(\d{3})-(\d{4})', "Hub: 021-1234")
m.group(0) # "021-1234"
m.group(1) # "021"
# Replace
re.sub(r'\d+', '*', "Ada 42 angka 7")
# "Ada * angka *"
# Split
re.split(r'[,;]\s*', "a, b; c, d")
# ['a', 'b', 'c', 'd']datetime — Tanggal & Waktu
from datetime import datetime, timedelta
now = datetime.now()
print(now) # 2026-07-03 14:30:00.123456
# Format
now.strftime("%d/%m/%Y %H:%M") # "03/07/2026 14:30"
now.strftime("%A, %d %B %Y") # "Jumat, 03 Juli 2026"
# Parse string ke datetime
dt = datetime.strptime("03/07/2026", "%d/%m/%Y")
# Operasi tanggal
besok = now + timedelta(days=1)
minggu_lalu = now - timedelta(weeks=1)
selisih = datetime(2026, 12, 31) - now
selisih.days # Jumlah hari tersisaTambahan: Math, Random, Collections
# math
import math
math.ceil(3.2) # 4
math.floor(3.8) # 3
math.sqrt(16) # 4.0
math.pi # 3.14159...
# random
import random
random.randint(1, 100) # Random int 1-100
random.choice(["a", "b", "c"]) # Pilih satu
random.shuffle(my_list) # Acak in-place
random.sample(range(100), 5) # 5 unik dari 0-99
# collections
from collections import Counter, defaultdict, namedtuple
Counter("abracadabra")
# Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
d = defaultdict(list)
d["key"].append(1) # Tidak perlu cek key ada
Point = namedtuple("Point", ["x", "y"])
p = Point(3, 4)
print(p.x, p.y) # 3 4