Bắt đầu ngayBắt đầu miễn phí

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.

Bài tập này là một phần của khóa học

Viết mã Python hiệu quả

Xem khóa học

Hướng dẫn bài tập

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

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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))
Chỉnh sửa và Chạy Mã