Python

Python untuk Pemula: Panduan Lengkap

Tutorial lengkap belajar Python dari nol β€” instalasi, variabel, tipe data, kontrol alur, fungsi, list, dictionary, file I/O, dan quiz interaktif dengan contoh kode praktis

1. Pengenalan Python

Python adalah bahasa pemrograman tingkat tinggi yang dikembangkan oleh Guido van Rossum dan pertama kali dirilis pada tahun 1991. Python dirancang dengan filosofi yang mengutamakan keterbacaan kode (readability), sehingga sangat cocok untuk pemula yang baru memulai belajar pemrograman.

Python digunakan secara luas di berbagai bidang seperti pengembangan web, data science, kecerdasan buatan (AI), otomasi, scripting, game development, dan masih banyak lagi. Popularitasnya terus meningkat dan saat ini menjadi salah satu bahasa pemrograman paling populer di dunia.

Mengapa Memilih Python?

Keunggulan Penjelasan
Sintaks SederhanaPython menggunakan sintaks yang mirip bahasa Inggris, mudah dibaca dan ditulis
MultipurposeBisa digunakan untuk web, AI, data science, otomasi, game, dan IoT
Komunitas BesarJutaan developer aktif, dokumentasi lengkap, ribuan library tersedia
Cross-PlatformBisa dijalankan di Windows, macOS, dan Linux tanpa modifikasi
InterpretedTidak perlu compile, kode langsung dieksekusi baris per baris
Gratis & Open SourceBisa digunakan dan didistribusikan secara bebas

Python vs Bahasa Lain

Aspek Python JavaScript Java
TipeInterpretedInterpreted (JIT)Compiled + Interpreted
TypingDynamicDynamicStatic
Sintaks🟒 Sangat Mudah🟑 SedangπŸ”΄ Verbose
Kecepatan🟑 Sedang🟑 Sedang🟒 Cepat
Cocok untukAI, Data, OtomasiWeb FrontendEnterprise, Android
Diagram: Ekosistem Python
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  EKOSISTEM PYTHON                     β”‚
β”‚                                                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚  Web Dev  β”‚  β”‚Data Sci. β”‚  β”‚  AI / Machine    β”‚    β”‚
β”‚  β”‚ Django    β”‚  β”‚ Pandas   β”‚  β”‚  Learning        β”‚    β”‚
β”‚  β”‚ Flask     β”‚  β”‚ NumPy    β”‚  β”‚  TensorFlow      β”‚    β”‚
β”‚  β”‚ FastAPI   β”‚  β”‚ Matplotlibβ”‚  β”‚  PyTorch         β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚                                                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚ Otomasi  β”‚  β”‚ Game Dev β”‚  β”‚  IoT & Embedded  β”‚    β”‚
β”‚  β”‚ Selenium β”‚  β”‚ Pygame   β”‚  β”‚  MicroPython     β”‚    β”‚
β”‚  β”‚ Scriptingβ”‚  β”‚ Godot    β”‚  β”‚  Raspberry Pi    β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2. Instalasi Python

Python bisa diinstal di semua sistem operasi utama. Berikut panduan instalasi untuk masing-masing platform.

Instalasi di Windows

Windows
# 1. Kunjungi https://www.python.org/downloads/
# 2. Download installer terbaru (Python 3.12+)
# 3. Jalankan installer, PASTIKAN centang "Add Python to PATH"
# 4. Klik "Install Now"

# Verifikasi instalasi di Command Prompt / PowerShell:
python --version
# Output: Python 3.12.4

pip --version
# Output: pip 24.0 from ... (python 3.12)

# Atau gunakan Microsoft Store:
# Buka Microsoft Store β†’ cari "Python 3.12" β†’ Install

Instalasi di macOS

macOS
# macOS sudah memiliki Python bawaan, tapi sebaiknya instal versi terbaru
# Gunakan Homebrew:

# Instal Homebrew (jika belum punya):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Instal Python:
brew install python

# Verifikasi:
python3 --version
# Output: Python 3.12.4

pip3 --version

Instalasi di Linux (Ubuntu/Debian)

Linux
# Update package manager terlebih dahulu
sudo apt update && sudo apt upgrade -y

# Instal Python 3 dan pip
sudo apt install python3 python3-pip python3-venv -y

# Verifikasi:
python3 --version
# Output: Python 3.12.3

pip3 --version

Menulis Program Python Pertama

Python β€” hello.py
# File: hello.py
print("Halo, dunia!")
print("Selamat datang di Python!")
print("Nama saya: BeebaneLabs")

# Menjalankan dari terminal:
# python hello.py
#
# Output:
# Halo, dunia!
# Selamat datang di Python!
# Nama saya: BeebaneLabs

Python Interactive Mode (REPL)

Python REPL
# Buka terminal, ketik "python" atau "python3" untuk masuk REPL
# Python 3.12.4 (default, Jun  6 2024)
# >>> print("Hello!")
# Hello!
# >>> 2 + 3
# 5
# >>> "Python" * 3
# 'PythonPythonPython'
# >>> exit()  # Keluar dari REPL
πŸ’‘ Tips

Selalu gunakan Python 3 (bukan Python 2 yang sudah tidak didukung). Python 2 sudah resmi dihentikan sejak Januari 2020. Pastikan juga untuk centang opsi "Add Python to PATH" saat instalasi di Windows agar bisa menjalankan python dari mana saja.

3. Variabel dan Tipe Data

Variabel adalah wadah untuk menyimpan data. Di Python, Anda tidak perlu mendeklarasikan tipe data secara eksplisit β€” Python akan mendeteksinya secara otomatis (dynamic typing).

Mendeklarasikan Variabel

Python β€” Variabel
# Deklarasi variabel sederhana
nama = "Budi Santoso"       # string
umur = 25                    # integer
tinggi = 175.5               # float
is_active = True             # boolean

# Menampilkan nilai variabel
print(nama)         # Budi Santoso
print(f"Umur: {umur} tahun")  # Umur: 25 tahun

# Python bisa mengubah tipe variabel secara dinamis
x = 10          # x adalah integer
x = "sekarang string"  # x sekarang string β€” tidak masalah!

# Multiple assignment
a, b, c = 1, 2, 3
print(a, b, c)  # 1 2 3

# Satu nilai untuk beberapa variabel
x = y = z = 0
print(x, y, z)  # 0 0 0

# Aturan penamaan variabel:
# βœ… nama_lengkap, umur_pengguna, _private, jumlah2
# ❌ 2angka, nama-lengkap, class, def (reserved words)

Tipe Data Dasar

Tipe Contoh Penjelasan
int42, -10, 0Bilangan bulat (integer)
float3.14, -0.5, 2.0Bilangan desimal (floating point)
str"hello", 'world'String / teks
boolTrue, FalseBoolean / logika benar-salah
NoneNoneTipe kosong (null)
list[1, 2, 3]Kumpulan data terurut (mutable)
tuple(1, 2, 3)Kumpulan data terurut (immutable)
dict{"a": 1}Key-value pairs
set{1, 2, 3}Kumpulan unik tanpa urutan

Konversi Tipe Data (Casting)

Python β€” Casting
# Konversi tipe data
angka_str = "42"
angka_int = int(angka_str)     # String β†’ Integer: 42
angka_float = float(angka_str) # String β†’ Float: 42.0

# Integer β†’ String
umur = 25
umur_str = str(umur)  # "25"

# Float β†’ Integer (membulatkan ke bawah)
pi = 3.14159
pi_int = int(pi)  # 3

# Input dari pengguna (selalu menghasilkan string)
nama = input("Masukkan nama: ")  # hasilnya string
umur = int(input("Masukkan umur: "))  # konversi ke int

# Cek tipe data dengan type()
print(type(42))        # <class 'int'>
print(type("hello"))   # <class 'str'>
print(type(3.14))      # <class 'float'>
print(type(True))      # <class 'bool'>

# isinstance() β€” cek tipe dengan lebih fleksibel
print(isinstance(42, int))       # True
print(isinstance("hi", (str, int)))  # True (cek beberapa tipe)

4. Operator

Python menyediakan berbagai jenis operator untuk melakukan operasi terhadap data.

Operator Aritmatika

Python β€” Aritmatika
# Operator aritmatika dasar
a, b = 15, 4

print(a + b)    # 19    (penjumlahan)
print(a - b)    # 11    (pengurangan)
print(a * b)    # 60    (perkalian)
print(a / b)    # 3.75  (pembagian, selalu float)
print(a // b)   # 3     (pembagian bulat)
print(a % b)    # 3     (modulus/sisa bagi)
print(a ** b)    # 50625 (pangkat: 15^4)

# Shortcut assignment
x = 10
x += 5   # x = x + 5 β†’ 15
x -= 3   # x = x - 3 β†’ 12
x *= 2   # x = x * 2 β†’ 24
x /= 4   # x = x / 4 β†’ 6.0

Operator Perbandingan dan Logika

Python β€” Perbandingan
# Operator perbandingan β€” menghasilkan boolean (True/False)
x, y = 10, 20

print(x == y)   # False (sama dengan)
print(x != y)   # True  (tidak sama)
print(x > y)    # False (lebih besar)
print(x < y)    # True  (lebih kecil)
print(x >= 10)  # True  (lebih besar atau sama)
print(x <= 5)   # False (lebih kecil atau sama)

# Operator logika β€” menggabungkan kondisi
umur = 25
punya_sim = True

# AND β€” kedua kondisi harus True
bisa_mengemudi = umur >= 17 and punya_sim
print(bisa_mengemudi)  # True

# OR β€” salah satu kondisi harus True
print(umur < 18 or punya_sim)  # True

# NOT β€” membalik nilai boolean
print(not punya_sim)  # False

# Operator keanggotaan
buah = ["apel", "mangga", "jeruk"]
print("apel" in buah)       # True
print("pisang" not in buah) # True

# Operator identitas
a = [1, 2, 3]
b = [1, 2, 3]
c = a

print(a == b)    # True  (nilai sama)
print(a is b)    # False (objek berbeda)
print(a is c)    # True  (objek sama)

5. Kontrol Alur

Kontrol alur menentukan urutan eksekusi program. Python menggunakan indentasi (spasi/tab) untuk menandai blok kode, bukan kurung kurawal seperti bahasa lain.

If-Elif-Else

Python β€” If-Elif-Else
# Percabangan sederhana
umur = 20

if umur >= 18:
    print("Kamu sudah dewasa")
elif umur >= 13:
    print("Kamu remaja")
else:
    print("Kamu masih anak-anak")

# Nested if
nilai = 85
huruf = ""

if nilai >= 60:
    if nilai >= 85:
        huruf = "A"
    elif nilai >= 75:
        huruf = "B"
    else:
        huruf = "C"
else:
    huruf = "D"

print(f"Nilai: {nilai}, Huruf: {huruf}")  # Nilai: 85, Huruf: A

# Ternary expression (one-liner)
status = "Lulus" if nilai >= 60 else "Tidak Lulus"
print(status)  # Lulus

For Loop

Python β€” For Loop
# For loop dengan range
for i in range(5):
    print(f"Iterasi ke-{i}")
# Output: 0, 1, 2, 3, 4

# range(start, stop, step)
for i in range(2, 10, 2):
    print(i, end=" ")  # 2 4 6 8

# For loop dengan list
buah = ["apel", "mangga", "jeruk", "pisang"]
for item in buah:
    print(f"Saya suka {item}")

# For loop dengan enumerate (dapat index + value)
for index, item in enumerate(buah):
    print(f"{index + 1}. {item}")
# 1. apel
# 2. mangga
# 3. jeruk
# 4. pisang

# List comprehension (cara cepat buat list)
kuadrat = [x**2 for x in range(1, 6)]
print(kuadrat)  # [1, 4, 9, 16, 25]

# List comprehension dengan kondisi
genap = [x for x in range(20) if x % 2 == 0]
print(genap)  # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

While Loop

Python β€” While Loop
# While loop β€” berjalan selama kondisi True
hitungan = 0
while hitungan < 5:
    print(f"Hitungan: {hitungan}")
    hitungan += 1

# While True dengan break
while True:
    teks = input("Ketik 'quit' untuk keluar: ")
    if teks == "quit":
        print("Sampai jumpa!")
        break
    print(f"Kamu mengetik: {teks}")

# While dengan continue
angka = 0
while angka < 10:
    angka += 1
    if angka % 3 == 0:
        continue  # Lewati angka kelipatan 3
    print(angka, end=" ")  # 1 2 4 5 7 8 10
⚠️ Hindari Infinite Loop!

Pastikan kondisi while loop selalu bisa menjadi False. Infinite loop (loop tak terbatas) bisa membuat program hang. Selalu pastikan ada perubahan pada variabel kondisi atau break di dalam loop.

6. Fungsi

Fungsi adalah blok kode yang dapat digunakan berulang kali. Fungsi membantu mengorganisir kode, menghindari duplikasi, dan membuat program lebih mudah dipahami.

Mendefinisikan dan Memanggil Fungsi

Python β€” Fungsi
# Fungsi sederhana tanpa parameter
def sapa():
    print("Halo! Selamat datang!")

sapa()  # Halo! Selamat datang!

# Fungsi dengan parameter
def sapa_nama(nama):
    print(f"Halo, {nama}! Selamat datang!")

sapa_nama("Budi")    # Halo, Budi! Selamat datang!
sapa_nama("Sari")    # Halo, Sari! Selamat datang!

# Fungsi dengan return value
def tambah(a, b):
    return a + b

hasil = tambah(5, 3)
print(hasil)  # 8

# Fungsi dengan multiple return
def hitung_luas_keliling(panjang, lebar):
    luas = panjang * lebar
    keliling = 2 * (panjang + lebar)
    return luas, keliling

luas, keliling = hitung_luas_keliling(10, 5)
print(f"Luas: {luas}, Keliling: {keliling}")  # Luas: 50, Keliling: 30

# Fungsi dengan default parameter
def buat_profil(nama, umur=18, kota="Jakarta"):
    return {"nama": nama, "umur": umur, "kota": kota}

print(buat_profil("Andi"))           # Semua default
print(buat_profil("Sari", 25))       # Custom umur
print(buat_profil("Budi", 30, "Bandung"))  # Custom semua

Args dan Kwargs

Python β€” *args **kwargs
# *args β€” menerima jumlah argumen tak terbatas (positional)
def jumlahkan(*args):
    total = 0
    for angka in args:
        total += angka
    return total

print(jumlahkan(1, 2, 3))       # 6
print(jumlahkan(1, 2, 3, 4, 5)) # 15

# **kwargs β€” menerima keyword arguments tak terbatas
def buat_user(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

buat_user(nama="Budi", umur=25, role="Admin")
# nama: Budi
# umur: 25
# role: Admin

# Lambda β€” fungsi satu baris
kali_dua = lambda x: x * 2
print(kali_dua(5))   # 10

kuadrat = lambda x: x ** 2
print(kuadrat(4))    # 16

# Lambda dengan sort
siswa = [("Budi", 85), ("Ani", 92), ("Dimas", 78)]
siswa.sort(key=lambda x: x[1], reverse=True)
print(siswa)  # [('Ani', 92), ('Budi', 85), ('Dimas', 78)]

Scope (Cakupan Variabel)

Python β€” Scope
# Variabel global vs lokal
pesan = "Ini global"  # Global scope

def ubah_pesan():
    pesan = "Ini lokal"  # Local scope
    print(pesan)

ubah_pesan()  # Ini lokal
print(pesan)  # Ini global (tidak berubah)

# Gunakan 'global' untuk mengubah variabel global
counter = 0

def tambah_counter():
    global counter
    counter += 1

tambah_counter()
tambah_counter()
print(counter)  # 2

7. List dan Tuple

List dan Tuple adalah struktur data yang menyimpan kumpulan item secara berurutan. Perbedaannya: list bisa diubah (mutable), sedangkan tuple tidak bisa diubah (immutable).

Operasi List

Python β€” List
# Membuat list
buah = ["apel", "mangga", "jeruk", "pisang"]
angka = [10, 20, 30, 40, 50]
campur = [1, "dua", 3.0, True, None]  # Boleh campur tipe

# Mengakses elemen (index dimulai dari 0)
print(buah[0])     # apel
print(buah[-1])    # pisang (elemen terakhir)
print(buah[1:3])   # ['mangga', 'jeruk'] (slicing)

# Mengubah elemen
buah[0] = "anggur"
print(buah)  # ['anggur', 'mangga', 'jeruk', 'pisang']

# Menambah elemen
buah.append("durian")        # Tambah di akhir
buah.insert(1, "strawberry") # Tambah di index 1
buah.extend(["kiwi", "manggis"])  # Tambah beberapa sekaligus

# Menghapus elemen
buah.remove("mangga")  # Hapus berdasarkan nilai
buah.pop()             # Hapus elemen terakhir
del buah[0]            # Hapus berdasarkan index

# Method berguna lainnya
print(len(buah))        # Jumlah elemen
print(buah.count("apel"))  # Hitung kemunculan
buah.sort()             # Urutkan (in-place)
buah.reverse()          # Balik urutan
buah.clear()            # Kosongkan list

# List Operations
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b       # Gabung: [1, 2, 3, 4, 5, 6]
d = a * 3       # Ulangi: [1, 2, 3, 1, 2, 3, 1, 2, 3]
print(3 in a)   # True (cek keanggotaan)

Tuple

Python β€” Tuple
# Tuple β€” tidak bisa diubah setelah dibuat
koordinat = (10.5, 20.3)
warna_rgb = (255, 128, 0)

# Mengakses elemen (sama seperti list)
print(koordinat[0])   # 10.5
print(koordinat[-1])  # 20.3

# Tuple unpacking
x, y = koordinat
print(f"X: {x}, Y: {y}")  # X: 10.5, Y: 20.3

# ❌ Tuple TIDAK BISA diubah
# koordinat[0] = 5.0  β†’ Error! TypeError

# Kapan pakai tuple?
# - Data yang tidak berubah (koordinat, RGB, konfigurasi)
# - Lebih cepat dari list
# - Bisa jadi key dictionary (list tidak bisa)

# Named tuple β€” tuple dengan nama field
from collections import namedtuple

Mahasiswa = namedtuple('Mahasiswa', ['nama', 'nim', 'ipk'])
mhs1 = Mahasiswa("Budi", "12345", 3.75)
print(mhs1.nama)  # Budi
print(mhs1.ipk)   # 3.75

8. Dictionary dan Set

Dictionary menyimpan data dalam pasangan key-value, mirip seperti kamus bahasa. Set adalah kumpulan elemen unik tanpa urutan.

Operasi Dictionary

Python β€” Dictionary
# Membuat dictionary
mahasiswa = {
    "nama": "Budi Santoso",
    "nim": "2024001",
    "jurusan": "Teknik Informatika",
    "ipk": 3.85,
    "aktif": True
}

# Mengakses nilai
print(mahasiswa["nama"])        # Budi Santoso
print(mahasiswa.get("ipk"))     # 3.85
print(mahasiswa.get("alamat", "Tidak ada"))  # Tidak ada (default)

# Mengubah dan menambah
mahasiswa["ipk"] = 3.90              # Ubah
mahasiswa["alamat"] = "Jakarta"      # Tambah baru
mahasiswa.update({"semester": 5, "sks": 120})  # Tambah beberapa

# Menghapus
del mahasiswa["aktif"]             # Hapus by key
nilai = mahasiswa.pop("ipk")      # Hapus dan kembalikan nilai
print(f"IPK dihapus: {nilai}")    # IPK dihapus: 3.9

# Iterasi dictionary
for key in mahasiswa:
    print(f"{key}: {mahasiswa[key]}")

# Iterasi dengan items()
for key, value in mahasiswa.items():
    print(f"{key} = {value}")

# Method berguna
print(mahasiswa.keys())    # Semua keys
print(mahasiswa.values())  # Semua values
print(len(mahasiswa))      # Jumlah item

# Dictionary comprehension
kuadrat = {x: x**2 for x in range(1, 6)}
print(kuadrat)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# Nested dictionary
sekolah = {
    "siswa1": {"nama": "Budi", "nilai": 85},
    "siswa2": {"nama": "Ani", "nilai": 92},
}
print(sekolah["siswa1"]["nama"])   # Budi
print(sekolah["siswa2"]["nilai"])  # 92

Set

Python β€” Set
# Set β€” kumpulan elemen unik, tanpa urutan
angka = {1, 2, 3, 4, 5, 5, 4, 3}
print(angka)  # {1, 2, 3, 4, 5} β€” duplikat dihapus otomatis

# Operasi set
angka.add(6)       # Tambah elemen
angka.discard(3)   # Hapus elemen (tidak error jika tidak ada)
angka.remove(1)    # Hapus elemen (error jika tidak ada)

# Operasi himpunan
set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}

print(set_a | set_b)   # Union: {1, 2, 3, 4, 5, 6, 7, 8}
print(set_a & set_b)   # Intersection: {4, 5}
print(set_a - set_b)   # Difference: {1, 2, 3}
print(set_a ^ set_b)   # Symmetric diff: {1, 2, 3, 6, 7, 8}

# Kegunaan: menghapus duplikat dari list
nama_list = ["Budi", "Ani", "Budi", "Dimas", "Ani"]
nama_unik = list(set(nama_list))
print(nama_unik)  # ['Budi', 'Ani', 'Dimas'] (urutan bisa berubah)

9. File I/O (Input/Output)

Python memudahkan pembacaan dan penulisan file teks maupun binary. Gunakan context manager (with) untuk memastikan file ditutup otomatis setelah selesai.

Membaca File

Python β€” Membaca File
# Membaca seluruh isi file
with open("data.txt", "r") as file:
    isi = file.read()
    print(isi)

# Membaca per baris (efisien untuk file besar)
with open("data.txt", "r") as file:
    for baris in file:
        print(baris.strip())  # strip() hapus newline di akhir

# Membaca sebagai list of lines
with open("data.txt", "r") as file:
    lines = file.readlines()
    for i, line in enumerate(lines, 1):
        print(f"Baris {i}: {line.strip()}")

# Membaca file JSON
import json

with open("config.json", "r") as file:
    data = json.load(file)
    print(data)

Menulis File

Python β€” Menulis File
# Menulis file baru (mengganti isi jika sudah ada)
with open("output.txt", "w") as file:
    file.write("Baris pertama\n")
    file.write("Baris kedua\n")
    file.write("Baris ketiga\n")

# Menambahkan ke file yang sudah ada (append)
with open("log.txt", "a") as file:
    file.write(f"Log entry: {__import__('datetime').datetime.now()}\n")

# Menulis beberapa baris sekaligus
baris = ["Nama: Budi\n", "Umur: 25\n", "Kota: Jakarta\n"]
with open("profil.txt", "w") as file:
    file.writelines(baris)

# Menulis file JSON
import json

data = {
    "pengguna": [
        {"nama": "Budi", "umur": 25},
        {"nama": "Ani", "umur": 22}
    ]
}

with open("data_output.json", "w") as file:
    json.dump(data, file, indent=2, ensure_ascii=False)

# Mode file:
# "r"  β€” read (baca, default)
# "w"  β€” write (tulis, hapus isi lama)
# "a"  β€” append (tambah di akhir)
# "r+" β€” read + write
# "rb" β€” read binary
# "wb" β€” write binary

Praktik: Program Catatan Harian

Python β€” Catatan Harian
import json
from datetime import datetime

FILE_NOTES = "catatan.json"

def load_notes():
    try:
        with open(FILE_NOTES, "r") as f:
            return json.load(f)
    except FileNotFoundError:
        return []

def save_notes(notes):
    with open(FILE_NOTES, "w") as f:
        json.dump(notes, f, indent=2, ensure_ascii=False)

def tambah_catatan(isi):
    notes = load_notes()
    notes.append({
        "tanggal": datetime.now().strftime("%Y-%m-%d %H:%M"),
        "isi": isi
    })
    save_notes(notes)
    print("βœ… Catatan berhasil ditambahkan!")

def tampilkan_catatan():
    notes = load_notes()
    if not notes:
        print("πŸ“­ Belum ada catatan.")
        return
    print(f"\nπŸ““ Daftar Catatan ({len(notes)} entri):\n")
    for i, note in enumerate(notes, 1):
        print(f"  {i}. [{note['tanggal']}] {note['isi']}")

# Contoh penggunaan
tambah_catatan("Hari pertama belajar Python!")
tambah_catatan("Sudah bisa membuat file I/O")
tampilkan_catatan()
πŸ’‘ Tips

Selalu gunakan with open() sebagai context manager. Cara ini memastikan file otomatis ditutup bahkan jika terjadi error. Hindari file = open() tanpa file.close() karena bisa menyebabkan resource leak.

10. Manipulasi String

String adalah salah satu tipe data yang paling sering digunakan. Python menyediakan banyak method built-in untuk memanipulasi string.

Python β€” String Methods
# String dasar
nama = "  BeebaneLabs  "

# Method string
print(nama.strip())       # "BeebaneLabs" (hapus spasi)
print(nama.lstrip())      # "BeebaneLabs  " (hapus kiri)
print(nama.lower())       # "  beebanelabs  "
print(nama.upper())       # "  BEEBANELABS  "
print(nama.title())       # "  Beebanelabs  "

# Pencarian dan penggantian
teks = "Python adalah bahasa pemrograman Python"
print(teks.count("Python"))       # 2
print(teks.find("bahasa"))        # 14 (index pertama)
print(teks.replace("Python", "Go"))  # "Go adalah bahasa pemrograman Go"

# Pemeriksaan
print("hello".isalpha())    # True (hanya huruf)
print("12345".isdigit())    # True (hanya angka)
print("hello123".isalnum()) # True (huruf + angka)
print("Hello".startswith("He"))  # True
print("Hello".endswith("lo"))    # True

# Split dan Join
kalimat = "apel,mangga,jeruk,pisang"
buah_list = kalimat.split(",")
print(buah_list)  # ['apel', 'mangga', 'jeruk', 'pisang']

gabungan = " | ".join(buah_list)
print(gabungan)   # apel | mangga | jeruk | pisang

# f-string (formatting modern β€” Python 3.6+)
nama = "Budi"
umur = 25
print(f"Nama: {nama}, Umur: {umur}")
print(f"Umur {nama} tahun depan: {umur + 1}")

# Format angka dalam f-string
harga = 1500000
print(f"Harga: Rp {harga:,.0f}")       # Rp 1,500,000
print(f"Harga: Rp {harga:,.2f}")       # Rp 1,500,000.00

# Multiline string
paragraf = """
Ini adalah string multi-baris.
Bisa ditulis di beberapa baris.
Sangat berguna untuk template teks.
"""
print(paragraf)

11. Error Handling

Error handling memungkinkan program menangani kesalahan secara elegan tanpa crash. Python menggunakan try-except untuk menangkap dan menangani error.

Python β€” Try-Except
# Try-Except dasar
try:
    angka = int(input("Masukkan angka: "))
    hasil = 100 / angka
    print(f"Hasil: {hasil}")
except ValueError:
    print("❌ Input harus berupa angka!")
except ZeroDivisionError:
    print("❌ Tidak bisa dibagi dengan nol!")
except Exception as e:
    print(f"❌ Error: {e}")
else:
    print("βœ… Berhasil tanpa error!")
finally:
    print("πŸ”„ Blok ini selalu dijalankan")

# Contoh error umum
try:
    # IndexError
    daftar = [1, 2, 3]
    print(daftar[10])

    # KeyError
    data = {"nama": "Budi"}
    print(data["umur"])

    # FileNotFoundError
    with open("file_tidak_ada.txt", "r") as f:
        f.read()

except IndexError:
    print("Index di luar batas!")
except KeyError as e:
    print(f"Key {e} tidak ditemukan!")
except FileNotFoundError:
    print("File tidak ditemukan!")

# Membuat custom exception
class SaldoTidakCukup(Exception):
    def __init__(self, saldo, jumlah):
        self.saldo = saldo
        self.jumlah = jumlah
        super().__init__(f"Saldo {saldo} kurang dari {jumlah}")

def tarik_tunai(saldo, jumlah):
    if jumlah > saldo:
        raise SaldoTidakCukup(saldo, jumlah)
    return saldo - jumlah

try:
    sisa = tarik_tunai(100000, 150000)
except SaldoTidakCukup as e:
    print(f"❌ {e}")  # ❌ Saldo 100000 kurang dari 150000

12. Quiz: Uji Pemahamanmu!

Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang Python:

Pertanyaan 1: Apa output dari kode berikut? print(type(3.14))

a) <class 'int'>
b) <class 'float'>
c) <class 'str'>
d) <class 'decimal'>

Pertanyaan 2: Apa perbedaan utama antara list dan tuple di Python?

a) List lebih cepat dari tuple
b) List bisa diubah (mutable), tuple tidak bisa diubah (immutable)
c) Tuple bisa menyimpan tipe data berbeda, list tidak
d) Tidak ada perbedaan

Pertanyaan 3: Apa fungsi dari with open() saat bekerja dengan file?

a) Mengenkripsi file agar aman
b) Mengompres file agar lebih kecil
c) Memastikan file otomatis ditutup setelah selesai digunakan
d) Membuat file baru secara otomatis

Pertanyaan 4: Apa output dari kode berikut? print("hello"[1:4])

a) "hell"
b) "ell"
c) "ello"
d) "hel"

Pertanyaan 5: Bagaimana cara menangani semua jenis error secara umum di Python?

a) catch (Exception e)
b) try...except Exception
c) try...catch All
d) try...finally
πŸ” Zoom
100%
🎨 Tema