28. Banyak object bersama — Solusi pekerjaan rumah
File solusi ada di exercises/28/homework/solutions/.
Keempat soal menggunakan class Hero kecil yang sama dari
bagian atas masing-masing file starter.
Soal 1 — Regu pahlawan
Soal. Buat list dari tiga pahlawan dan cetak masing-masing.
Solusi.
party = [
Hero("Ada", 100),
Hero("Ben", 80),
Hero("Cara", 120),
]
for h in party:
print(f"{h.name}: {h.hp} HP")Output:
Ada: 100 HP
Ben: 80 HP
Cara: 120 HP
Soal 2 — Total HP
Soal. Jumlahkan HP semua orang.
Solusi.
total = 0
for h in party:
total = total + h.hp
print(f"Team HP: {total}") # Team HP: 300Pola akumulasi dari Bab 20, membaca sebuah field alih-alih angka biasa.
Soal 3 — Siapa yang terluka?
Soal. Cetak setiap pahlawan yang hp-nya
di bawah max_hp.
Solusi.
for h in party:
if h.hp < h.max_hp:
print(f"{h.name} is hurt.")Hanya pahlawan yang sudah menerima kerusakan yang dicetak.
if membandingkan dua field dari object yang
sama.
Tantangan — Pahlawan terkuat
Soal. Temukan pahlawan dengan HP terbanyak.
Cara berpikir. Akumulasi maksimum: simpan variable
untuk pahlawan terbaik sejauh ini, gantikan setiap kali menemukan yang
lebih kuat. Mulai dari pahlawan pertama (atau None, diisi
pada giliran pertama).
Solusi.
strongest = party[0]
for h in party:
if h.hp > strongest.hp:
strongest = h
print(f"Strongest: {strongest.name}") # Strongest: CaraKesalahan umum.
- Memulai
strongestdenganNone, lalu menulish.hp > strongest.hppada giliran pertama akan memunculkanAttributeErrorkarenaNonetidak memiliki.hp. Mulai dengan pahlawan pertama, atau jaga giliran pertama.
Selesai?
Kamu kini bisa mengelola seluruh koleksi object dengan loop yang sudah kamu tahu. Selanjutnya, Inheritance mendalam memungkinkan satu class membangun dari class lain, sehingga perilaku yang sama ditulis sekali.