Loop dengan perhitungan satu kali
Sebuah list bilangan bulat yang merepresentasikan generasi masing-masing Pokémon telah dimuat ke sesi Anda dengan nama generations. Anda ingin mengumpulkan jumlah tiap generasi dan menentukan persentase tiap generasi dari total jumlah bilangan bulat.
Loop berikut ditulis untuk menyelesaikan tugas ini:
for gen,count in gen_counts.items():
total_count = len(generations)
gen_percent = round(count / total_count * 100, 2)
print(
'generation {}: count = {:3} percentage = {}'
.format(gen, count, gen_percent)
)
Mari membuat loop ini lebih efisien dengan memindahkan perhitungan satu kali ke luar loop.
Latihan ini adalah bagian dari kursus
Menulis Kode Python yang Efisien
Petunjuk latihan
- Impor
Counterdari modulcollections. - Gunakan
Counter()untuk mengumpulkan jumlah tiap generasi dari listgenerations. Simpan sebagaigen_counts. - Tulis for loop yang lebih baik dengan menempatkan perhitungan satu kali di luar (di atas) loop. Gunakan sintaks yang persis sama seperti for loop asli (cukup salin dan tempel perhitungan satu kali tersebut di atas loop).
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Import Counter
____
# Collect the count of each generation
gen_counts = ____
# Improve for loop by moving one calculation above the loop
total_count = ____
for gen,count in gen_counts.items():
gen_percent = round(count / total_count * 100, 2)
print('generation {}: count = {:3} percentage = {}'
.format(gen, count, gen_percent))