Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)
input() (selalu menghasilkan string), print() dengan sep/end, f-string, konversi int()/float() sebelum hitung, dan program interaktif pertamamu.Coba sep="" untuk menempelkan output, dan rangkai input() dua kali dalam satu baris kalimat f-string untuk membuat "kartu perkenalan" otomatis.
input() untuk menerima data dari pengguna, lengkap dengan prompt yang jelas.input() selalu menghasilkan string — walau isinya angka.print() untuk menampilkan output, termasuk mengatur sep dan end.f"Halo {nama}") alih-alih menyambung teks manual.int atau float sebelum dipakai berhitung.ValueError sebagai alarm "yang masuk bukan angka", bukan tanda program rusak.Hari ini siswa menempuh barisan ke-5 dari 17 — 29% perjalanan:
| Waktu | Blok | Aktivitas |
|---|---|---|
| 10' | Pembuka | Cover sesi, baca tujuan bersama, rekap Sesi 04 (variabel & tipe data — tanya: "inget bedanya int dan str?") |
| 15' | Demo | Program sapaan interaktif: komputer tanya nama lalu menyapa — siswa melihat "program yang menjawab" untuk pertama kalinya |
| 25' | Materi 1 | Paparan input() + aturan "input selalu string"; praktik program sapaan versi siswa |
| 25' | Materi 2 | Paparan print() (sep/end) + f-string; konversi int()/float() sebelum berhitung |
| 15' | Praktik | Program luas persegi panjang: input panjang & lebar, hitung, cetak dengan f-string |
| 10' | Penutup | Rangkuman 5 poin, preview Sesi 06 (Operators & Expressions), Q&A singkat |
input() = lembar formulir. Saat kamu daftar ekstrakurikuler, panitia tidak menebak namamu — mereka kasih kolom kosong dan menunggu kamu mengisi. input("Nama: ") persis begitu: program berhenti sejenak, menampilkan pertanyaan, lalu menunggu kamu mengetik dan menekan Enter. Apa yang kamu ketik itu "kotak yang dikembalikan ke program" — dan di sinilah jebakannya: apa pun yang diketik, panitia selalu menyimpannya sebagai tulisan (string), walau isinya "16".
Ketik 16 di input(), yang tersimpan adalah "16" (teks), bukan 16 (angka). Coba bayangkan konsekuensinya: "16" + "16" bukan 32 melainkan "1616" — kayak nyambungin dua kata, bukan menjumlahkan dua angka. Karena itu aturannya satu kalimat: mau dihitung? bungkus dulu dengan int() atau float(). Ini persis Catatan Pengajar di kurikulum resmi, jadi jangan dilewati — siswa yang keberatan "kok error" biasanya lupa konversi.
int(input("Umur: ")) lalu ketik huruf — biarkan siswa melihat ValueError sendiri, baca pesannya bersama, lalu perbaiki. Error ditanggung di depan lebih aman daripada ditanggung sendiri di rumah.
print() bukan sekadar "cetak". Ada dua tombol kecil yang jarang disorot: sep (pemisah antar nilai, default spasi) dan end (penutup, default pindah baris). Trik paling berguna: end=" " membuat dua print() berikutnya nempel di baris yang sama — cocok untuk efek "mengetik bertahap". Dan untuk menyusun kalimat, pakai f-string (f"Halo {nama}") daripada pakai koma atau tanda + — lebih rapi, variabel langsung masuk ke kalimat.
Sejauh ini program siswa "bicara satu arah" — mencetak lalu selesai. Hari ini pertama kalinya program menunggu dan merespons. Framing untuk kelas: "program kalian dari hari ini bukan lagi pengumuman, tapi percakapan." Semua game, kalkulator, dan chatbot di pertemuan berikutnya dibangun di atas kebiasaan sederhana ini: tanya → simpan jawaban → proses → jawab balik.
Minta siswa menulis dan menjalankan:
print("CSSE", "Input", "Output", sep=" | ")
print("Belajar", end=" -> ")
print("berhasil")
Diskusikan kenapa dua baris terakhir jadi satu baris output (end=" -> " meniadakan pindah baris). Tantang siswa: ubah sep-nya jadi sep="..." dan prediksi hasilnya sebelum Run.
Tulis bersama-sama, baris demi baris:
nama = input("Siapa namamu? ")
print(f"Halo, {nama}! Selamat belajar Python.")
Jalankan, ketik nama, tunjukkan programnya "berhenti menunggu". Lalu uji aturan emas:
umur = input("Umur: ")
print(umur + 1) # BOOM! TypeError: hanya bisa str + str
Sengaja bikin error ini. Tanya: "pesan errornya bilang apa?" Bimbing siswa membaca TypeError — bukan dibaca sendiri oleh guru.
Perbaiki kode Langkah 2:
umur = int(input("Umur: "))
print(f"Tahun depan kamu {umur + 1} tahun")
Cek dengan type() bila perlu: print(type(umur)) sebelum dan sesudah konversi. Lalu bedakan int() vs float() dengan input tinggi badan (meter, pakai titik: 1.65).
Praktik utama sesi — program hitung luas dari input panjang & lebar:
panjang = float(input("Panjang (m): "))
lebar = float(input("Lebar (m): "))
luas = panjang * lebar
print(f"Luas {panjang} x {lebar} = {luas} meter persegi")
Uji dengan dua kasus: 10 dan 5 (hasil 50.0), lalu 2.5 dan 4 (hasil 10.0). Kenapa muncul .0? Karena float. Ini diskusi singkat yang bagus.
Program yang membaca nama, umur, kota lalu mencetak perkenalan utuh dengan f-string, contoh jalannya:
Nama: Budi
Umur: 16
Kota: Bekasi
Halo, namaku Budi, umur 16 tahun, dari Bekasi.
Senang bertemu! Sisaku paling suka pelajaran matematika.
Bebaskan kreatifitas baris penutup. Yang cepat selesai: tambahkan baris keempat input (hobi) dan masukkan ke kalimat.
Bedah solusi challenge 1-2 siswa di depan kelas (proyektor/berbagi layar), sorot pemakaian f-string. Tutup dengan rangkuman 5 poin: input() selalu string, konversi sebelum hitung, f-string untuk kalimat, sep/end untuk atur output, program interaktif = percakapan. Lalu preview Sesi 06.
Solusi utuh mandiri — bisa langsung Run dan hasilnya seperti komentar output di bawah:
# Sesi 05 - Input & Output
# Program interaktif: membaca nama, umur, kota - lalu menghitung luas
# --- Bagian 1: print() dengan sep dan end ---
print("CSSE", "Input", "Output", sep=" | ") # CSSE | Input | Output
print("Belajar", end=" -> ") # tetap di baris yang sama
print("berhasil") # -> Belajar -> berhasil
# --- Bagian 2: input() + f-string ---
nama = input("Siapa namamu? ") # contoh: Budi
umur = int(input("Umur: ")) # contoh: 16
kota = input("Kota asal: ") # contoh: Bekasi
print(f"Halo, namaku {nama}, umur {umur} tahun, dari {kota}.")
print(f"Satu tahun lagi kamu berumur {umur + 1} tahun.")
# --- Bagian 3: studi kasus kumulatif - luas persegi panjang ---
panjang = float(input("Panjang (m): ")) # contoh: 2.5
lebar = float(input("Lebar (m): ")) # contoh: 4
luas = panjang * lebar
print(f"Luas {panjang} x {lebar} = {luas} meter persegi")
# Output lengkap kalau diisi seperti contoh:
# CSSE | Input | Output
# Belajar -> berhasil
# Siapa namamu? Budi
# Umur: 16
# Kota asal: Bekasi
# Halo, namaku Budi, umur 16 tahun, dari Bekasi.
# Satu tahun lagi kamu berumur 17 tahun.
# Panjang (m): 2.5
# Lebar (m): 4
# Luas 2.5 x 4.0 = 10.0 meter persegi
Tiga hal yang layak disorot saat membahas: (1) int() untuk umur karena tidak ada setengah tahun, float() untuk panjang karena boleh desimal; (2) {umur + 1} — f-string bisa menampung ekspresi, bukan cuma variabel; (3) luas dihitung sekali di variabel terpisah, bukan dijitip di dalam print() — kebiasaan yang membuat kode mudah dibaca.
| Masalah | Penyebab | Tindakan Perbaikan |
|---|---|---|
TypeError saat menjumlah umur |
input() menghasilkan string; "16" + 1 tidak bisa dihitung. |
Bungkus dengan int()/float(). Kembalikan ke analogi formulir: "yang masuk itu tulisan, mau dihitung harus diubah jadi angka." |
ValueError: invalid literal for int() |
User mengetik huruf atau spasi saat program minta angka. | Normalisasi: ini alarm "isi formulirnya salah", bukan program rusak. Coba lagi dengan angka murni. (Validasi input dibahas lebih dalam nanti.) |
| Program tampak "menggantung" tanpa output | Kursor diam di terminal — itu input() yang sedang menunggu, bukan macet. |
Arahkan siswa klik dulu di jendela terminal, ketik jawaban, Enter. Tanyakan: "prompt-nya muncul nggak?" Kalau tidak, cek argumen input(). |
Hasil 10.0 padahal diharapkan 10 |
float() dipakai padahal input bilangan bulat, atau salah satu operan float. |
Jelaskan float vs int. Untuk luas, .0 wajar dan tidak salah — diskusikan kapan butuh desimal. |
NameError: name 'nama' is not defined |
Variabel dipakai di f-string sebelum diisi, atau salah eja (NAMA vs nama). |
Cek urutan baris: input dulu, baru cetak. Python peka huruf besar-kecil — samakan ejaannya. |
Dua print() muncul di baris terpisah padahal mau nyambung |
Default end="\n" pindah baris tiap cetak. |
Ubah end: print("Belajar", end=" -> "). Tanya balik siswa: "tombol penutupnya diganti apa?" |
input() selalu menghasilkan string, dengan kalimat sendiri.int()/float() sebelum operasi matematika — tanpa diingatkan.ValueError, siswa membaca pesan errornya dulu sebelum memanggil guru.sep dan end pada output print().Hari ini programmu sudah bisa bertanya dan menjawab. Tapi ada satu kekurangan: semua yang boleh dilakukan program baru menjumlah umur atau menghitung luas. Minggu depan kita beri dia kemampuan berhitung yang utuh — tambah, bagi, sisa bagi, pangkat — plus cara menggabungkan kondisi. Dan seperti yang kamu lihat hari ini: hasil perbandingan nanti bakal bertanya "benar atau salah".
a = 10
b = 3
print(a / b) # 3.3333...
print(a % b) # sisa pembagian: 1
print(a > b) # True - ini jadi bahan Sesi 06
Operator ini bekal langsung untuk Sesi 07 (percabangan if/elif/else) — hasil perbandingan hari ini yang menentukan jalannya cabang di sana.