Kursus Python / Latihan validasi dan ringkasan nilai dengan kondisi serta loop
Ringkasan nilai menggabungkan validasi, klasifikasi, dan perhitungan agregat dalam satu alur. Nilai yang tidak sah dikeluarkan dari statistik, tetapi jumlahnya tetap dilaporkan agar penghilangan data terlihat.
Tentukan aturan data dan perhitungan
Latihan ini mengasumsikan list integer yang sudah tersedia. Nilai sah berada pada rentang 0 sampai 100, dan nilai minimal 60 dinyatakan lulus. Angka negatif serta di atas seratus dihitung sebagai data tidak sah. Membaca teks dari CSV atau masukan pengguna dan mengubahnya menjadi angka merupakan tahap persiapan terpisah.
| Kasus | Aturan |
|---|---|
60 |
Termasuk nilai lulus |
0 |
Termasuk nilai sah |
-1 atau 101 |
Menambah jumlah data tidak sah |
| Tidak ada nilai sah | Tidak menghitung rata-rata |
Aturan tersebut adalah kebijakan latihan, bukan penetapan standar kelulusan untuk semua sistem. Gunakan operator perbandingan dan percabangan if–elif–else untuk menelusuri cara batas diterapkan. Tutorial alur kendali Python menjelaskan instruksi dasarnya.
Jalankan ringkasan nilai lengkap
Simpan kode berikut sebagai scores.py dengan encoding UTF-8. Gunakan Python 3.12 atau lebih baru dan jalankan python scores.py pada terminal lingkungan proyek dari folder berkas. Tidak perlu paket tambahan atau berkas data karena daftar nilai ditulis langsung dalam kode.
scores = [80, 60, 0, 100, -1, 101]
valid = []
invalid = 0
passed = 0
for score in scores:
if not 0 <= score <= 100:
invalid += 1
continue
valid.append(score)
if score >= 60:
passed += 1
print("valid:", len(valid), "invalid:", invalid)
if valid:
print(f"average: {sum(valid) / len(valid):.1f}")
print("passed:", passed)
else:
print("no valid scores")
Keluaran yang diharapkan:
valid: 4 invalid: 2
average: 60.0
passed: 3
Empat nilai sah adalah 80, 60, 0, dan 100. Jumlahnya 240, sehingga rata-ratanya 60.0. Tiga di antaranya memenuhi batas lulus: 80, 60, dan 100. Dua nilai lainnya, -1 dan 101, menambah penghitung invalid tanpa ikut dihitung dalam rata-rata.
Teks keluaran tetap mengikuti kode: valid adalah jumlah nilai sah, invalid adalah jumlah nilai yang ditolak, average adalah rata-rata, dan passed adalah jumlah yang lulus.
Telusuri penghitung dan penyebut rata-rata
valid menyimpan nilai yang diterima. invalid menghitung nilai yang gagal rentang, sedangkan passed menghitung nilai lulus hanya setelah nilai itu dinyatakan sah. continue memastikan nilai yang ditolak tidak masuk list dan tidak mencapai pemeriksaan kelulusan.
Nol harus tetap menjadi nilai sah dan ikut penyebut rata-rata. Jangan mengganti pemeriksaan rentang dengan if score, karena nol dinilai salah dalam kondisi dan akan terbuang. Sebaliknya, if valid sesudah loop memeriksa apakah list memiliki unsur. List [0] tidak kosong, jadi rata-rata nol tetap dihitung dengan benar.
Rata-rata dihitung setelah semua nilai sah terkumpul. Jika list kosong, cabang else menampilkan no valid scores dan tidak membagi dengan nol. :.1f hanya menentukan tampilan satu angka di belakang titik; ia bukan perubahan kebijakan validasi atau pembulatan data sumber.
Periksa konsistensi len(valid) + invalid == len(scores). Hubungan ini memastikan setiap masukan masuk salah satu kelompok pada proses yang berhasil. Pemeriksaan jumlah tidak cukup untuk membuktikan semua aturan benar, sehingga batas kelulusan juga perlu diuji secara terpisah.
Uji batas dan nyatakan asumsi tipe
- Ganti
scoresdengan[]. Hasil harus melaporkan nol nilai sah, nol nilai tidak sah, danno valid scores, tanpa baris rata-rata. - Gunakan
[59, 60, 61]. Semua sah, rata-rata60.0, dan dua nilai lulus. Perbandingan>= 60menyertakan nilai enam puluh. - Gunakan
[-1, 101]. Kedua nilai ditolak dan rata-rata tidak ditampilkan. - Gunakan
[0]. Nilai sah berjumlah satu, rata-rata0.0, dan jumlah lulus nol. - Pulihkan daftar asli lalu cocokkan keluaran dan keseimbangan jumlah masukan.
Contoh memeriksa rentang dengan asumsi masukan integer; ia bukan validator tipe yang ketat. bool adalah turunan int, sehingga nilai boolean dapat lolos perbandingan numerik. Float dalam rentang juga dapat diterima oleh kode ini, sedangkan string seperti "80" tidak dapat langsung dibandingkan dengan integer dan akan gagal. Jika sumber data berubah, tentukan apakah boolean dan float ditolak, lalu perluas validasi sebelum agregasi.
Pisahkan aturan penerimaan data dari rumus statistik. Kebijakan data kosong, nilai nol, dan tipe masukan menentukan makna hasil; satu keluaran rata-rata yang terlihat wajar belum memastikan seluruh masukan diproses dengan benar.




