20. Pola loop
Hampir setiap loop adalah salah satu dari empat bentuk. Kenali namanya dan kamu berhenti menciptakan setiap loop dari awal — kamu langsung mengambil yang cocok. Keempat pola itu adalah akumulasi, penghitungan, pencarian, dan penanda, masing-masing melakukan satu pekerjaan kecil. Contoh-contoh menggunakan serangkaian angka, tapi bentuk-bentuk ini bekerja pada apa pun yang bisa kamu loop.
1. Akumulasi — bangun sebuah hasil
Simpan sebuah variable dan ubah setiap giliran. Total berjalan adalah kasus klasik:
sum = 0
for i in range(1, 11):
sum = sum + i
print(sum) # 55Bentuknya selalu: setel nilai awal sebelum loop, perbarui
di dalam, gunakan setelah. Ini juga membangun string
(mulai "", tempel setiap bagian) dan menemukan nilai
maksimum (mulai rendah, naikkan setiap kali kamu melihat sesuatu yang
lebih besar).
2. Penghitungan — berapa yang cocok?
Counter adalah akumulator yang naik satu, tapi hanya ketika sebuah pengujian lolos. "Berapa banyak angka dari 1 sampai 30 yang habis dibagi 3?"
hits = 0
for i in range(1, 31):
if i % 3 == 0:
hits = hits + 1
print(hits) # 10if di dalam loop adalah pengujian;
hits = hits + 1 adalah hitungannya.
3. Pencarian — temukan kecocokan pertama dan berhenti
Ketika kamu hanya membutuhkan nilai pertama yang cocok,
break keluar begitu kamu menemukannya — tidak ada gunanya
melanjutkan:
first = None
for i in range(1, 101):
if i * i > 50:
first = i
break
print(first) # 8 (because 8 × 8 = 64, the first square over 50)first dimulai sebagai None. Jika tidak ada
yang cocok, ia tetap None — jawaban "tidak ditemukan" yang
berguna yang bisa kamu uji dengan if.
4. Penanda — apakah ada giliran yang cocok?
Terkadang kamu ingin ya/tidak, bukan nilainya: "apakah ada angka dari
1 sampai 20 yang habis dibagi 7?" Simpan sebuah boolean yang dimulai
False dan berubah menjadi True begitu kamu
melihat kecocokan:
found = False
for i in range(1, 21):
if i % 7 == 0:
found = True
print(found) # True (7 and 14 are in range)Jika kamu hanya peduli apakah ada yang ada,
break ketika penanda berubah — itu mengubahnya menjadi
pencarian. Penanda dan pencarian adalah sepupu.
Buka exercises/20/01-patterns.py. Program ini
mengakumulasikan jumlah dari 1 sampai 20. Tambahkan pola penghitungan di
bawahnya untuk mencetak berapa banyak angka dalam rentang itu yang
genap.
Bonus Python: continue
Python memiliki pernyataan continue. Di mana
break keluar dari loop sepenuhnya, continue
melewati sisa iterasi saat ini dan langsung melompat ke iterasi
berikutnya:
for i in range(1, 11):
if i % 2 == 0:
continue # skip even numbers
print(i) # only odd numbers print: 1, 3, 5, 7, 9continue berguna ketika kamu ingin melewati nilai
tertentu tanpa menyarangkan if yang lebih dalam. Hasil yang
sama selalu bisa ditulis tanpanya, tapi continue bisa
membuat maksudnya lebih jelas.
Mencampur pola-pola
Program nyata menggabungkan ini. Satu kali jalan bisa mengakumulasikan total, menghitung berapa banyak yang memenuhi aturan, dan menandai apakah sesuatu yang spesial muncul, semuanya sekaligus:
total = 0
evens = 0
has_multiple_of_5 = False
for i in range(1, 11):
total = total + i # accumulate
if i % 2 == 0:
evens = evens + 1 # count
if i % 5 == 0:
has_multiple_of_5 = True # flag
print("total", total) # 55
print("evens", evens) # 5
print("multiple of 5?", has_multiple_of_5) # TrueSatu loop, tiga pola, tiga jawaban.
Pekerjaan Rumah
File pekerjaan rumah ada di exercises/20/homework/.
Soal 1 — Faktorial
Buka exercises/20/homework/01-product.py. Menggunakan
pola akumulasi, kalikan angka 1 sampai 5 bersama-sama dan cetak
hasilnya. (Petunjuk: produk dimulai dari 1, bukan
0 — apa pun dikali nol adalah nol.)
Soal 2 — Hitung kelipatan
Buka exercises/20/homework/02-count-multiples.py.
Menggunakan pola penghitungan, cetak berapa banyak angka dari 1 sampai
50 yang habis dibagi 7.
Soal 3 — Kuadrat besar pertama
Buka exercises/20/homework/03-first-big.py. Gunakan pola
pencarian untuk menemukan dan mencetak angka pertama yang kuadratnya
lebih dari 200, memeriksa dari 1 ke atas dan berhenti dengan
break.
Tantangan — Statistik rentang dalam satu kali jalan
Buka exercises/20/homework/04-stats.py. Dalam satu loop
dari 1 sampai 20, hitung dan cetak tiga hal: total (akumulasi), berapa
banyak yang genap (penghitungan), dan apakah ada angka yang habis dibagi
9 (penanda).
Buntu atau sudah selesai? Buka halaman solusi pekerjaan rumah.