18. Loop — Solusi Pekerjaan Rumah
File solusi .py ada di
exercises/18/homework/solutions/.
Soal 1 — Hitung sampai 20
Soal. Cetak 1 sampai 20 dengan loop
while.
Cara memikirkannya. Loop while
membutuhkan nilai awal, kondisi berhenti, dan pembaruan. Mulai dari 1,
berhenti setelah 20, tambahkan 1 setiap kali.
Solusi.
i = 1
while i <= 20:
print(i)
i = i + 1Kesalahan umum.
- Melupakan
i = i + 1. Kondisi tetap True selamanya, sehingga loop tidak pernah berakhir. - Menggunakan
i < 20, lalu melewatkan 20.<=menyertakan titik akhir.
Soal 2 — Tabel perkalian 7
Soal. Cetak 7 * i = hasil untuk
i dari 1 sampai 12.
Cara memikirkannya. Loop for dengan
range(1, 13). Setiap kali mencetak satu baris dari
i dan 7 * i.
Solusi.
for i in range(1, 13):
print(f"7 * {i} = {7 * i}")Kesalahan umum.
- Menulis
range(1, 12). Itu berhenti di 11 dan melewatkan baris terakhir.range(start, stop)mengecualikanstop, jadi gunakanrange(1, 13)untuk mencapai 12. - Mengacaukan
7 * i(yang dicetak) dengani(counter).
Soal 3 — Berhenti di ambang batas
Soal. Tambahkan 1, 2, 3, ... ke total. Berhenti setelah melebihi 100. Cetak counter dan total.
Cara memikirkannya. Dua variable: counter yang
bertambah 1 setiap kali, dan total yang bertambah sebesar counter.
Kondisi keluar, total > 100, cocok di dalam sebagai
if ... break, yang sesuai untuk
while True:.
Solusi.
i = 1
total = 0
while True:
total = total + i
if total > 100:
break
i = i + 1
print("Stopped at i =", i, "with total =", total)Untuk i = 1..14, jumlah 1+2+...+14 = 105
adalah total pertama yang melebihi 100:
Stopped at i = 14 with total = 105
Kesalahan umum.
- Menambahkan
i = i + 1sebelum menambahkan ketotal. Itu menambahkaniberikutnya, bukan yang saat ini. Urutkan dengan sengaja. - Menempatkan
breaksetelahi = i + 1. Makaiyang dicetak adalah satu lebih dari nilai yang mendorong total melewati 100. Keduanya berfungsi; lakukan dengan sengaja.
Tantangan — Jumlah 1..N
Soal. Baca n, jumlahkan 1..n dengan
loop for, bandingkan dengan bentuk tertutup
n * (n + 1) // 2.
Cara memikirkannya. Loop for dari
range(1, n + 1) menambahkan setiap counter ke total. Bentuk
tertutup untuk n integer positif pertama adalah
n * (n + 1) // 2, trik Gauss. Cetak keduanya, pastikan
sama.
Solusi.
n = int(input("Enter a positive whole number n: "))
total = 0
for i in range(1, n + 1):
total = total + i
print(f"Sum from 1 to {n} is {total}")
print("Formula gives", n * (n + 1) // 2)// adalah pembagian integer, sehingga kedua baris
menampilkan bilangan bulat. Seperti yang diharapkan.
Kesalahan umum.
- Menulis
range(1, n). Itu berhenti din - 1dan memberikan jawaban yang salah. Gunakanrange(1, n + 1)untuk menyertakann. - Melupakan menyetel
totalke0sebelum loop. - Menulis rumus sebagai
n * n + 1 // 2. Urutan operasi penting: tanda kurung di sekitar(n + 1)diperlukan.
Selesai?
Kamu sekarang bisa mengulangi pekerjaan dengan setiap jenis loop. Selanjutnya, Nested loop bersarang loop untuk membangun grid, dan Pola loop menamai pekerjaan yang paling sering dilakukan loop. Kemudian proyek mini Bagian 4 — Permainan Tebak Angka dan Rock-Paper-Scissors — menggabungkan keputusan dan pengulangan.