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 merupakan bagian dari kursus
Menulis Kode Python yang Efisien
Instruksi 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 langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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))