Pelajaran modul (1/4)
untuk loop dan rentang
Perulangan for dengan Python digunakan untuk mengulangi urutan item:
daftar, string, rentang, dict… apa pun yang "dapat diubah".
parole = ["ciao", "mondo", "!"]
for p in parole:
print(p)
# ciao
# mondo
# !Polanya selalu sama: for <variable> in <iterable>: diikuti oleh
blok indentasi yang akan dieksekusi satu kali untuk setiap item.
range(...): menghasilkan interval bilangan bulat
range menghasilkan barisan bilangan bulat yang malas. Tiga bentuk:
range(5) # 0, 1, 2, 3, 4
range(2, 6) # 2, 3, 4, 5
range(0, 10, 2) # 0, 2, 4, 6, 8 (step)
range(5, 0, -1) # 5, 4, 3, 2, 1 (negative step)range eksklusif di sisi kanan, seperti slice. Ini adalah objek malas:
ia tidak mengalokasikan memori untuk semua angka, ia menghasilkannya satu per satu.
totale = 0
for i in range(1, 11):
totale = totale + i
totale # 55 (1+2+...+10)Iterasi dengan indeks: enumerate
Saat Anda membutuhkan item dan indeksnya bersama, gunakan enumerate:
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
print(i, p)
# 0 ciao
# 1 mondo
# 2 !enumerate menghasilkan (index, value) pasangan yang kami tetapkan langsung ke dua
variabel melalui tuple unpacking (kita akan melihatnya di modul yang didedikasikan untuk
struktur data).
Mengulangi dua urutan secara paralel: zip
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
print(f"{n} ha {a} anni")zip berhenti pada urutan terpendek.
range() dan kemalasan Python
Dengan Python, fungsi range() tidak mengalokasikan daftar sebenarnya di memori: fungsi ini mengembalikan generator malas yang menghasilkan angka satu per satu sesuai permintaan (misalnya, dalam perulangan for). Hal ini memungkinkan iterasi jutaan bilangan bulat tanpa membuat RAM membengkak. Untuk memeriksa nilai rentang sebagai daftar, Anda dapat mentransmisikannya secara eksplisit dengan list(range(5)).
Cobalah sendiri
Hitung jumlah angka dari 1 hingga 100 (inklusif) menggunakan perulangan for pada rentang(...), tetapkan ke `total` dan evaluasi.
Tunjukkan petunjuk
range(1, 101) menghasilkan 1, 2, ..., 100 (eksklusif di sebelah kanan).
Solusi tersedia setelah 3 upaya
Tinjau latihan
Mengingat daftar `kata = ['uno', 'due', 'tre']`, buatlah daftar `pasangan` string seperti '0:uno', '1:due', '2:tre' menggunakan enumerate. Evaluasi `pasangan`.
Tunjukkan petunjuk
enumerate(words) mengembalikan (indeks, nilai) pada setiap iterasi.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
Calculate the sum of all even numbers from 2 to 20 inclusive using a `for` loop over a `range`. Store the final sum in `even_sum` and evaluate it.
Tunjukkan petunjuk
Gunakan range(2, 21, 2) untuk mengulangi hanya bilangan bulat genap dari 2 hingga 20.
Solusi tersedia setelah 3 upaya