1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Viết mã Python hiệu quả

Connected

Bài tập

Vòng lặp với phép tính một lần

Một danh sách số nguyên biểu diễn thế hệ của từng Pokémon đã được nạp vào phiên làm việc với tên generations. Bạn muốn đếm số lượng của mỗi thế hệ và xác định phần trăm mỗi thế hệ chiếm trên tổng số phần tử.

Vòng lặp dưới đây được viết để thực hiện nhiệm vụ này:

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

Hãy làm cho vòng lặp này hiệu quả hơn bằng cách đưa một phép tính chỉ cần làm một lần ra ngoài vòng lặp.

Hướng dẫn

100 XP
  • Import Counter từ module collections.
  • Dùng Counter() để thu thập số lượng của mỗi thế hệ từ danh sách generations. Lưu kết quả vào gen_counts.
  • Viết một vòng lặp for tốt hơn bằng cách đặt phép tính chỉ làm một lần ra ngoài (phía trên) vòng lặp. Dùng đúng cú pháp như vòng lặp ban đầu (chỉ cần sao chép và dán phép tính một lần đó lên trên vòng lặp).