เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การคำนวณครั้งเดียวนอกลูป

ได้โหลดลิสต์ของจำนวนเต็มที่แสดงเจเนอเรชันของ Pokémon แต่ละตัวเข้าสู่เซสชันของคุณแล้ว โดยเก็บไว้ในตัวแปรชื่อ generations เป้าหมายคือนับจำนวนของแต่ละเจเนอเรชัน แล้วคำนวณว่าแต่ละเจเนอเรชันคิดเป็นกี่เปอร์เซ็นต์ของจำนวนทั้งหมด

ลูปด้านล่างนี้เขียนขึ้นเพื่อทำงานดังกล่าว:

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

มาทำให้ลูปนี้มีประสิทธิภาพมากขึ้น ด้วยการย้ายการคำนวณที่ทำเพียงครั้งเดียวออกไปไว้นอกลูป

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียน Python Code ที่มีประสิทธิภาพ

ดูคอร์ส

คำแนะนำการฝึกหัด

  • Import Counter จากโมดูล collections
  • ใช้ Counter() นับจำนวนของแต่ละเจเนอเรชันจากลิสต์ generations แล้วบันทึกผลลัพธ์ไว้ในตัวแปร gen_counts
  • เขียน for loop ที่ปรับปรุงแล้ว โดยย้ายการคำนวณที่ทำเพียง ครั้งเดียว ออกไปไว้ด้านนอก (ด้านบน) ลูป ใช้ syntax เดิมทุกประการ (คัดลอกส่วนที่คำนวณครั้งเดียวมาวางไว้เหนือลูปได้เลย)

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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))
แก้ไขและรันโค้ด