Pemrograman Python: Dari Nol sampai Proyek Mini

Belum masuk. Progresmu tidak tersimpan.

Masuk
  • Bab 11 dari 11
  • 35 menit
  • 1 latihan kode
  • 4 soal kuis

Proyek Mini Kalkulator Nilai, Praktik Terbaik, dan Latihan Soal

Di bab ini (7 bagian)
  1. Tujuan
  2. Proyek mini: kalkulator nilai siswa
  3. Praktik terbaik menulis kode
  4. Latihan soal
  5. Sumber belajar dan langkah berikutnya
  6. Kesalahan umum
  7. Rangkuman

Tujuan bab ini

  • Membangun proyek mini kalkulator nilai siswa yang menggabungkan fungsi, kondisi, dictionary, perulangan, dan f-string.
  • Menerapkan praktik terbaik: PEP 8, snake_case, nama yang jelas, fungsi kecil, dan kebiasaan membaca error.
  • Mengerjakan latihan soal mandiri dan tahu sumber belajar untuk langkah berikutnya.

Proyek mini: kalkulator nilai siswa

Saatnya merangkai semua yang sudah kamu pelajari jadi satu program utuh. Targetnya: program mencatat nama dan nilai beberapa siswa, menentukan grade, lalu menampilkan tabel rapi dan rata-rata kelas.

Kode dan output proyek kalkulator nilai siswa

Langkah 1: fungsi penentu grade

Mulai dari bagian paling kecil. Satu fungsi, satu tugas: menerima angka, mengembalikan huruf.

def grade(n):
    if n >= 85:
        return "A"
    elif n >= 70:
        return "B"
    elif n >= 55:
        return "C"
    return "D"

print(grade(88), grade(70), grade(54))

Output:

A B D

Urutan kondisi penting. Karena dicek dari yang terbesar, nilai 88 berhenti di "A" dan tidak ikut diperiksa di cabang berikutnya. return "D" di akhir menangkap semua sisanya.

Langkah 2: menyimpan data di dictionary

Nama siswa jadi kunci, nilainya jadi value. Versi di slide mengisi data dengan input() di dalam for i in range(3). Supaya mudah diuji, kita isi langsung dulu:

data = {"Ani": 88, "Budi": 72.5, "Citra": 54}

Versi interaktifnya seperti ini. Jalankan di komputermu sendiri:

data = {}
for i in range(3):
    nama = input("Nama siswa: ")
    data[nama] = float(input("Nilai: "))

Langkah 3: mencetak tabel dengan f-string

for nama, n in data.items():
    print(f"{nama:<8} {n:>5.1f}  {grade(n)}")
print(f"Rata-rata: {sum(data.values()) / len(data):.1f}")

Output:

Ani       88.0  A
Budi      72.5  B
Citra     54.0  D
Rata-rata: 71.5

Format di dalam kurung kurawal membuat tabel rapi:

FormatArti
:<8Rata kiri, lebar 8 karakter
:>5.1fRata kanan, lebar 5, satu angka di belakang koma
:.1fSatu angka di belakang koma

Langkah 4: membuat input lebih tahan banting

Kalau pengguna mengetik "delapan puluh", float() memunculkan ValueError dan program berhenti. Pakai try/except dari bab sebelumnya:

def minta_nilai():
    while True:
        teks = input("Nilai: ")
        try:
            return float(teks)
        except ValueError:
            print("Nilai harus angka, coba lagi.")

Ide pengembangan lain: simpan hasilnya ke file dengan with open("nilai.txt", "a", encoding="utf-8"), atau tolak nilai di luar 0 sampai 100 dengan raise ValueError.

Praktik terbaik menulis kode

Kode yang jalan belum tentu kode yang enak dibaca. Kamu sendiri tiga bulan lagi adalah "orang lain" yang harus memahaminya.

KebiasaanContoh
Ikuti PEP 8Indentasi 4 spasi, nama variabel dan fungsi snake_case
Nama yang jelastotal_harga lebih baik daripada th
Tulis komentarJelaskan alasan, bukan hal yang sudah jelas
Fungsi kecilSatu fungsi untuk satu tugas
Baca pesan errorTraceback menunjukkan baris penyebab
Latihan rutinSedikit tiap hari lebih efektif daripada maraton sebulan sekali

PEP 8 adalah panduan gaya penulisan kode Python resmi. Bandingkan dua potongan kode berikut:

# sulit dibaca
def Hitung(a,b):
  th=a*b
  return th

# sesuai PEP 8
def hitung_total(harga, jumlah):
    total_harga = harga * jumlah
    return total_harga

Keduanya menghasilkan angka yang sama, tapi versi kedua langsung bercerita apa yang dihitung. Nama class adalah pengecualian: PEP 8 memakai CamelCase, seperti Rekening atau Kucing.

Soal komentar, x = x + 1 # tambah 1 tidak membantu siapa pun. Komentar yang berguna menjawab "kenapa", misalnya # nilai di bawah 55 dianggap tidak lulus sesuai aturan sekolah.

Latihan soal

Kerjakan sendiri dulu, sekitar 10 sampai 15 menit per soal, baru intip kuncinya.

NoSoalLevelKunci
1Ganjil/genap: tampilkan apakah sebuah angka ganjil atau genapMudahangka % 2 == 0 berarti genap
2FizzBuzz: cetak 1 sampai 100, kelipatan 3 "Fizz", 5 "Buzz", keduanya "FizzBuzz"Mudahfor + if dengan range(1, 101)
3Konversi suhu: fungsi celcius_ke_fahrenheit(c)Sedang(c * 9/5) + 32
4Daftar belanja: barang dan harga di dictionary, hitung totalSedangDictionary dan perulangan
5Rekening bank: class Rekening dengan setor(), tarik(), cek_saldo()MenantangLihat bab OOP

Petunjuk FizzBuzz: periksa kelipatan 15 lebih dulu. Kalau % 3 dicek duluan, angka 15 hanya akan mencetak "Fizz".

def celcius_ke_fahrenheit(c):
    return (c * 9 / 5) + 32

print(celcius_ke_fahrenheit(0), celcius_ke_fahrenheit(100))

Output:

32.0 212.0

Sumber belajar dan langkah berikutnya

SumberKegunaan
docs.python.orgDokumentasi dan tutorial resmi, rujukan paling akurat
pypi.orgKatalog library Python yang bisa dipasang dengan pip
Google ColabCoding Python di browser tanpa instalasi
Stack OverflowTanya jawab masalah kode

Setelah kelas ini, pilih satu arah dan buat proyek kecil: analisis data dengan Pandas, web sederhana dengan Flask, atau bot otomatisasi tugas harian. Proyek nyata, sekecil apa pun, mengajarkan lebih banyak daripada membaca sepuluh tutorial.

Kesalahan umum

  • Langsung menulis program besar tanpa memecahnya jadi fungsi kecil, lalu bingung saat ada bug.
  • Mencampur gaya nama, misalnya totalHarga dan total_harga di file yang sama.
  • Menyalin jawaban dari internet tanpa memahami, sehingga tidak bisa memperbaikinya saat error.
  • Membagi dengan len(data) tanpa memeriksa apakah data kosong, sehingga muncul ZeroDivisionError.
  • Menyerah saat melihat traceback panjang, padahal baris terakhirnya biasanya sudah menjelaskan masalah.

Rangkuman

  • Proyek kalkulator nilai siswa menggabungkan fungsi, kondisi, dictionary, perulangan, input, dan f-string.
  • Bangun program dari bagian kecil: fungsi grade(), penyimpanan data, lalu tampilan.
  • PEP 8 adalah panduan gaya resmi: indentasi 4 spasi, snake_case untuk variabel dan fungsi, nama yang jelas.
  • Latihan rutin lewat soal ganjil/genap, FizzBuzz, konversi suhu, daftar belanja, dan rekening bank menguatkan dasar.
  • Lanjutkan belajar lewat docs.python.org, pypi.org, Google Colab, dan Stack Overflow, lalu buat proyek nyata.

Selesaikan bab ini

  1. 1. Baca materi
  2. 2. Latihan kode (1)
  3. 3. Kuis (4 soal)

Latihan kode: Kalkulator nilai siswa

Lengkapi dua fungsi untuk proyek kalkulator nilai.

  • grade(n) mengembalikan "A" jika n >= 85, "B" jika n >= 70, "C" jika n >= 55, selain itu "D".
  • rata_rata(data) menerima dictionary {nama: nilai} dan mengembalikan rata-rata nilainya. Jika dictionary kosong, kembalikan 0 supaya tidak terjadi ZeroDivisionError.

Cek pemahaman

  1. 1Nama variabel mana yang sesuai PEP 8?

  2. 2Apa yang dicetak kode berikut?

    for i in [3, 10, 15]:
        if i % 15 == 0:
            print("FizzBuzz", end=" ")
        elif i % 3 == 0:
            print("Fizz", end=" ")
        elif i % 5 == 0:
            print("Buzz", end=" ")
        else:
            print(i, end=" ")
  3. 3PEP 8 menganjurkan indentasi 4 spasi per level.

  4. 4Berapa hasil `celcius_ke_fahrenheit(100)` dengan rumus `(c * 9 / 5) + 32`?