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:
- Tampilkan teks: "Selamat belajar Python!"
- Hitung hasil dari: 15 * 3 + 10 / 2
- Buat variabel
sekolahdengan nilai nama sekolah Anda, lalu tampilkan dengan perintahprint()
🔑 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:
- Buat variabel
nama_siswa(tipe str),nilai_matematika(tipe int), dannilai_rata2(tipe float). - Tampilkan ketiga variabel tersebut beserta tipe datanya menggunakan fungsi
type(). - 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
- Buat program untuk mencetak tabel perkalian 1 sampai 10 menggunakan for loop.
- Buat program yang meminta input angka dari user, lalu cetak semua bilangan genap dari 2 sampai angka tersebut menggunakan while loop.
- 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
- Buat list
nilaiberisi 5 nilai ujian siswa. Tampilkan nilai tertinggi menggunakan fungsimax()dan nilai terendah denganmin(). - Buat tuple
profesiberisi ("Guru", "Dokter", "Insinyur"). Coba ubah salah satu elemennya, apa yang terjadi? - 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
- Buat dictionary
profildengan key: nama, umur, sekolah, hobi (list). Tampilkan semua informasi menggunakan perulangan. - Buat program yang meminta input nama dan nilai 3 mata pelajaran dari user, simpan dalam dictionary, lalu hitung rata-rata nilainya.
- Buat dictionary
data_siswadengan 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
- Buat fungsi
hitung_grade(nilai)yang mengembalikan grade A/B/C/D berdasarkan nilai (A: >=90, B: >=80, C: >=70, D: lainnya). - Buat fungsi
luas_persegi_panjang(panjang, lebar)yang mengembalikan luas persegi panjang. - 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
- 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(). - 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.
- Menu Perulangan: Buat program dengan menu:
- Tambah Siswa (input nama dan nilai)
- Lihat Semua Siswa
- Cari Siswa (berdasarkan nama)
- 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!")