🐍 Python Learning Hub

Bahan Ajar Python untuk Siswa SMA

Modul pembelajaran Python yang dirancang untuk siswa SMA kelas X, XI, dan XII. Setiap modul dilengkapi dengan latihan soal dan kunci jawaban.

Modul 1: Pengenalan Python

🎯 Tujuan Pembelajaran

  • Memahami apa itu Python dan kegunaannya
  • Dapat menginstal Python di komputer
  • Dapat menjalankan perintah sederhana di Python shell

Apa itu Python?

Python adalah bahasa pemrograman tingkat tinggi yang mudah dipelajari dan digunakan. Python banyak digunakan untuk:

  • Pengembangan website
  • Analisis data
  • Kecerdasan buatan (AI)
  • Automasi tugas

Python menggunakan sintaks yang mudah dibaca, mirip dengan bahasa Inggris sehari-hari.

Menjalankan Python

Buka terminal/command prompt, ketik python atau python3, lalu tekan Enter. Anda akan masuk ke Python shell.

>>> print("Hello, World!")
Hello, World!
>>> 2 + 3
5
>>> nama = "Budi"
>>> print("Halo, " + nama)
Halo, Budi

📝 Latihan 1.1

Kerjakan latihan berikut di Python shell:

  1. Tampilkan teks: "Selamat belajar Python!"
  2. Hitung hasil dari: 15 * 3 + 10 / 2
  3. Buat variabel sekolah dengan nilai nama sekolah Anda, lalu tampilkan dengan perintah print()

🔑 Kunci Jawaban 1.1

>>> print("Selamat belajar Python!")
Selamat belajar Python!

>>> 15 * 3 + 10 / 2
50.0

>>> sekolah = "SMA Negeri 1 Jakarta"
>>> print(sekolah)
SMA Negeri 1 Jakarta

Modul 2: Variabel dan Tipe Data

🎯 Tujuan Pembelajaran

  • Memahami konsep variabel dalam Python
  • Mengenal tipe data dasar: int, float, str, bool
  • Dapat menggunakan fungsi type() untuk mengecek tipe data

Variabel

Variabel adalah tempat menyimpan data. Aturan penamaan variabel di Python:

  • Gunakan huruf, angka, dan underscore (_)
  • Tidak boleh diawali dengan angka
  • Tidak boleh menggunakan kata kunci Python (if, else, for, dll)
nama = "Ani"          # String (teks)
umur = 17              # Integer (bilangan bulat)
tinggi = 165.5         # Float (bilangan desimal)
sudah_lulus = False    # Boolean (True/False)

print(nama, umur, tinggi)
print(type(nama))      # <class 'str'>
print(type(umur))      # <class 'int'>

Tipe Data Dasar

Tipe Keterangan Contoh
int Bilangan bulat umur = 17
float Bilangan desimal nilai = 87.5
str Teks (string) nama = "Budi"
bool True atau False lulus = True

📝 Latihan 2.1

Buat program Python dengan ketentuan:

  1. Buat variabel nama_siswa (tipe str), nilai_matematika (tipe int), dan nilai_rata2 (tipe float).
  2. Tampilkan ketiga variabel tersebut beserta tipe datanya menggunakan fungsi type().
  3. Hitung nilai rata-rata dari matematika (85) dan bahasa Indonesia (90), simpan di variabel nilai_rata2.

🔑 Kunci Jawaban 2.1

nama_siswa = "Ani Suryani"
nilai_matematika = 85
nilai_rata2 = (85 + 90) / 2

print("Nama Siswa:", nama_siswa)
print("Nilai Matematika:", nilai_matematika)
print("Nilai Rata-rata:", nilai_rata2)

print("Tipe nama_siswa:", type(nama_siswa))
print("Tipe nilai_matematika:", type(nilai_matematika))
print("Tipe nilai_rata2:", type(nilai_rata2))

Modul 3: Kontrol Alur (Percabangan)

🎯 Tujuan Pembelajaran

  • Memahami konsep percabangan (if, elif, else)
  • Dapat membuat program yang mengambil keputusan berdasarkan kondisi
  • Mengerti operator perbandingan dan logika

If-Else Sederhana

Percabangan digunakan untuk mengeksekusi kode tertentu berdasarkan kondisi.

nilai = 85

if nilai >= 75:
    print("Selamat, Anda lulus!")
else:
    print("Maaf, Anda belum lulus.")

# Output: Selamat, Anda lulus!

If-Elif-Else (Multiple Conditions)

Gunakan elif untuk memeriksa beberapa kondisi.

nilai = 85

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

print(f"Anda mendapatkan grade {grade}")
# Output: Anda mendapatkan grade B

Operator Perbandingan

  • == : Sama dengan
  • != : Tidak sama dengan
  • > : Lebih besar
  • < : Lebih kecil
  • >= : Lebih besar atau sama dengan
  • <= : Lebih kecil atau sama dengan

📝 Latihan 3.1

Buat program untuk menentukan kategori usia:

  • Usia 0-12: Anak-anak
  • Usia 13-17: Remaja
  • Usia 18-59: Dewasa
  • Usia 60 ke atas: Lansia

Minta input usia dari user, lalu tampilkan kategori usianya.

🔑 Kunci Jawaban 3.1

usia = int(input("Masukkan usia Anda: "))

if usia >= 0 and usia <= 12:
    kategori = "Anak-anak"
elif usia >= 13 and usia <= 17:
    kategori = "Remaja"
elif usia >= 18 and usia <= 59:
    kategori = "Dewasa"
else:
    kategori = "Lansia"

print(f"Kategori usia: {kategori}")

Modul 4: Perulangan (Looping)

🎯 Tujuan Pembelajaran

  • Memahami konsep perulangan dengan for dan while
  • Dapat menggunakan range() dalam perulangan
  • Mengerti perbedaan for dan while loop

For Loop

For loop digunakan untuk mengulang kode sebanyak jumlah tertentu atau iterasi pada suatu sekuens.

# Mencetak angka 1 sampai 5
for i in range(1, 6):
    print(i)

# Iterasi pada list
buah = ["Apel", "Jeruk", "Mangga"]
for item in buah:
    print(item)

While Loop

While loop digunakan untuk mengulang kode selama kondisi bernilai True.

# Mencetak angka 1 sampai 5 dengan while
i = 1
while i <= 5:
    print(i)
    i = i + 1  # Jangan lupa increment!

# Input password sampai benar
password = ""
while password != "12345":
    password = input("Masukkan password: ")
print("Login berhasil!")

📝 Latihan 4.1

  1. Buat program untuk mencetak tabel perkalian 1 sampai 10 menggunakan for loop.
  2. Buat program yang meminta input angka dari user, lalu cetak semua bilangan genap dari 2 sampai angka tersebut menggunakan while loop.
  3. Buat program untuk menjumlahkan semua angka dari 1 sampai 100 menggunakan for loop.

🔑 Kunci Jawaban 4.1

# 1. Tabel perkalian
for i in range(1, 11):
    for j in range(1, 11):
        print(f"{i} x {j} = {i*j}", end="\t")
    print()  # Baris baru

# 2. Bilangan genap
angka = int(input("Masukkan angka: "))
i = 2
while i <= angka:
    print(i)
    i = i + 2

# 3. Jumlah 1 sampai 100
total = 0
for i in range(1, 101):
    total = total + i
print(f"Jumlah 1 sampai 100 adalah {total}")

Modul 5: List dan Tuple

🎯 Tujuan Pembelajaran

  • Memahami perbedaan List dan Tuple
  • Dapat melakukan operasi dasar pada List (tambah, hapus, akses)
  • Dapat menggunakan Tuple untuk data yang tidak berubah

List (Daftar)

List adalah kumpulan data yang terurut dan bisa diubah (mutable).

siswa = ["Ani", "Budi", "Cici"]

# Mengakses data (index mulai dari 0)
print(siswa[0])  # Ani

# Menambah data
siswa.append("Dedi")
print(siswa)  # ['Ani', 'Budi', 'Cici', 'Dedi']

# Mengubah data
siswa[1] = "Budi Santoso"

# Menghapus data
siswa.remove("Cici")
print(len(siswa))  # 3 (jumlah data)

Tuple (Tupel)

Tuple mirip dengan List, tapi tidak bisa diubah (immutable).

hari = ("Senin", "Selasa", "Rabu", "Kamis", "Jumat")

print(hari[0])  # Senin
print(len(hari))  # 5

# hari[0] = "Senin Baru"  # ERROR! Tuple tidak bisa diubah

# Tuple cocok untuk data konstan
bulan = ("Januari", "Februari", "Maret")

📝 Latihan 5.1

  1. Buat list nilai berisi 5 nilai ujian siswa. Tampilkan nilai tertinggi menggunakan fungsi max() dan nilai terendah dengan min().
  2. Buat tuple profesi berisi ("Guru", "Dokter", "Insinyur"). Coba ubah salah satu elemennya, apa yang terjadi?
  3. Buat program yang meminta input 3 nama siswa dari user, masukkan ke dalam list, lalu cetak semua nama tersebut.

🔑 Kunci Jawaban 5.1

# 1. Nilai ujian
nilai = [85, 90, 78, 92, 88]
print(f"Nilai tertinggi: {max(nilai)}")
print(f"Nilai terendah: {min(nilai)}")

# 2. Tuple profesi
profesi = ("Guru", "Dokter", "Insinyur")
# profesi[0] = "Programmer"  # Error: 'tuple' object does not support item assignment

# 3. Input siswa
daftar_siswa = []
for i in range(3):
    nama = input(f"Masukkan nama siswa ke-{i+1}: ")
    daftar_siswa.append(nama)

print("Daftar Siswa:")
for siswa in daftar_siswa:
    print(siswa)

Modul 6: Dictionary

🎯 Tujuan Pembelajaran

  • Memahami konsep Dictionary (key-value pairs)
  • Dapat membuat, mengakses, dan mengubah data Dictionary
  • Dapat melakukan iterasi pada Dictionary

Dictionary Dasar

Dictionary menyimpan data dalam pasangan key-value. Key harus unik.

# Membuat dictionary
siswa = {
    "nama": "Ani Suryani",
    "nis": "12345",
    "kelas": "XII IPA 1",
    "nilai": 92
}

# Mengakses data
print(siswa["nama"])  # Ani Suryani
print(siswa.get("kelas"))  # XII IPA 1

# Menambah/Mengubah data
siswa["alamat"] = "Jakarta"
siswa["nilai"] = 95

# Menghapus data
del siswa["alamat"]

Iterasi Dictionary

nilai_siswa = {"Ani": 90, "Budi": 85, "Cici": 92}

# Iterasi key saja
for nama in nilai_siswa:
    print(nama)

# Iterasi key dan value
for nama, nilai in nilai_siswa.items():
    print(f"{nama}: {nilai}")

# Iterasi hanya value
for nilai in nilai_siswa.values():
    print(nilai)

📝 Latihan 6.1

  1. Buat dictionary profil dengan key: nama, umur, sekolah, hobi (list). Tampilkan semua informasi menggunakan perulangan.
  2. Buat program yang meminta input nama dan nilai 3 mata pelajaran dari user, simpan dalam dictionary, lalu hitung rata-rata nilainya.
  3. Buat dictionary data_siswa dengan NIS sebagai key dan nilai sebagai value (minimal 5 siswa). Cari siswa dengan nilai tertinggi.

🔑 Kunci Jawaban 6.1

# 1. Profil
profil = {
    "nama": "Budi Santoso",
    "umur": 17,
    "sekolah": "SMA Negeri 1",
    "hobi": ["Membaca", "Coding", "Olahraga"]
}

for key, value in profil.items():
    print(f"{key}: {value}")

# 2. Input nilai
nama = input("Nama: ")
nilai = {}
total = 0

for i in range(3):
    mapel = input(f"Mata pelajaran ke-{i+1}: ")
    n = float(input("Nilai: "))
    nilai[mapel] = n
    total += n

print(f"Rata-rata nilai {nama}: {total/3}")

# 3. Nilai tertinggi
data_siswa = {
    "001": 85,
    "002": 90,
    "003": 78,
    "004": 92,
    "005": 88
}

nilai_tertinggi = max(data_siswa.values())
for nis, nilai in data_siswa.items():
    if nilai == nilai_tertinggi:
        print(f"Siswa dengan nilai tertinggi: NIS {nis} ({nilai})")

Modul 7: Fungsi (Function)

🎯 Tujuan Pembelajaran

  • Memahami konsep fungsi dalam Python
  • Dapat membuat fungsi dengan parameter dan return value
  • Mengerti manfaat modularitas kode dengan fungsi

Fungsi Dasar

Fungsi adalah blok kode yang hanya berjalan saat dipanggil. Fungsi membantu menghindari pengulangan kode.

# Fungsi tanpa parameter
def sapa():
    print("Halo! Selamat belajar Python!")

sapa()  # Memanggil fungsi

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

sapa_nama("Ani")

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

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

Fungsi dengan Multiple Parameters

def hitung_rata_rata(nilai1, nilai2, nilai3):
    total = nilai1 + nilai2 + nilai3
    rata2 = total / 3
    return rata2

nilai_rata = hitung_rata_rata(85, 90, 88)
print(f"Nilai rata-rata: {nilai_rata}")

# Fungsi cek kelulusan
def cek_kelulusan(nilai):
    if nilai >= 75:
        return "Lulus"
    else:
        return "Tidak Lulus"

print(cek_kelulusan(80))  # Lulus
print(cek_kelulusan(70))  # Tidak Lulus

📝 Latihan 7.1

  1. Buat fungsi hitung_grade(nilai) yang mengembalikan grade A/B/C/D berdasarkan nilai (A: >=90, B: >=80, C: >=70, D: lainnya).
  2. Buat fungsi luas_persegi_panjang(panjang, lebar) yang mengembalikan luas persegi panjang.
  3. Buat fungsi cetak_daftar_siswa(daftar) yang menerima parameter list nama siswa dan mencetak semua nama dengan nomor urut.

🔑 Kunci Jawaban 7.1

# 1. Fungsi grade
def hitung_grade(nilai):
    if nilai >= 90:
        return "A"
    elif nilai >= 80:
        return "B"
    elif nilai >= 70:
        return "C"
    else:
        return "D"

print(hitung_grade(85))  # B

# 2. Luas persegi panjang
def luas_persegi_panjang(panjang, lebar):
    return panjang * lebar

print(f"Luas: {luas_persegi_panjang(10, 5)} cm2")

# 3. Cetak daftar siswa
def cetak_daftar_siswa(daftar):
    for i, nama in enumerate(daftar, 1):
        print(f"{i}. {nama}")

siswa = ["Ani", "Budi", "Cici"]
cetak_daftar_siswa(siswa)

Evaluasi Akhir

📋 Petunjuk Pengerjaan

  • Kerjakan soal-soal berikut dalam satu file Python (.py)
  • Gunakan konsep yang telah dipelajari di modul 1-7
  • Berikan komentar pada kode untuk menjelaskan logika Anda

📝 Soal Evaluasi

  1. Sistem Penilaian: Buat program yang meminta input 5 nilai ujian siswa, simpan dalam list, lalu hitung nilai rata-rata, tertinggi, dan terendah. Tampilkan grade berdasarkan rata-rata menggunakan fungsi hitung_grade().
  2. Data Siswa: Buat dictionary berisi data 3 siswa (NIS, Nama, Kelas, List Nilai). Hitung rata-rata nilai masing-masing siswa dan tampilkan siswa dengan rata-rata tertinggi.
  3. Menu Perulangan: Buat program dengan menu:
    • Tambah Siswa (input nama dan nilai)
    • Lihat Semua Siswa
    • Cari Siswa (berdasarkan nama)
    • Keluar
    Gunakan perulangan while untuk menampilkan menu hingga user memilih keluar.

🔑 Kunci Jawaban Evaluasi

# Soal 1: Sistem Penilaian
def hitung_grade(nilai):
    if nilai >= 90:
        return "A"
    elif nilai >= 80:
        return "B"
    elif nilai >= 70:
        return "C"
    else:
        return "D"

nilai_list = []
for i in range(5):
    n = float(input(f"Masukkan nilai ke-{i+1}: "))
    nilai_list.append(n)

rata2 = sum(nilai_list) / len(nilai_list)
tertinggi = max(nilai_list)
terendah = min(nilai_list)

print(f"Nilai rata-rata: {rata2}")
print(f"Grade: {hitung_grade(rata2)}")
print(f"Tertinggi: {tertinggi}")
print(f"Terendah: {terendah}")

# Soal 2: Data Siswa
data_siswa = {
    "001": {"nama": "Ani", "kelas": "XII IPA 1", "nilai": [85, 90, 88]},
    "002": {"nama": "Budi", "kelas": "XII IPA 1", "nilai": [78, 85, 80]},
    "003": {"nama": "Cici", "kelas": "XII IPA 2", "nilai": [92, 95, 90]}
}

rata_tertinggi = 0
siswa_terbaik = ""

for nis, info in data_siswa.items():
    rata = sum(info["nilai"]) / len(info["nilai"])
    print(f"{info['nama']}: {rata}")
    if rata > rata_tertinggi:
        rata_tertinggi = rata
        siswa_terbaik = info['nama']

print(f"Siswa dengan rata-rata tertinggi: {siswa_terbaik} ({rata_tertinggi})")

# Soal 3: Menu Perulangan
daftar_siswa = []

while True:
    print("\n=== MENU ===")
    print("1. Tambah Siswa")
    print("2. Lihat Semua Siswa")
    print("3. Cari Siswa")
    print("4. Keluar")
    
    pilihan = input("Pilih: ")
    
    if pilihan == "1":
        nama = input("Nama: ")
        nilai = float(input("Nilai: "))
        daftar_siswa.append({"nama": nama, "nilai": nilai})
    elif pilihan == "2":
        for i, s in enumerate(daftar_siswa, 1):
            print(f"{i}. {s['nama']} - Nilai: {s['nilai']}")
    elif pilihan == "3":
        cari = input("Cari nama: ")
        found = False
        for s in daftar_siswa:
            if s['nama'].lower() == cari.lower():
                print(f"Ditemukan: {s['nama']} - Nilai: {s['nilai']}")
                found = True
        if not found:
            print("Siswa tidak ditemukan")
    elif pilihan == "4":
        print("Terima kasih!")
        break
    else:
        print("Pilihan tidak valid!")