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)       # 55

Bentuknya 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)      # 10

if 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, 9

continue 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)  # True

Satu 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.