15. Mendapatkan input — Solusi pekerjaan rumah

File solusi .py ada di exercises/15/homework/solutions/.

Soal 1 — Sapa dengan nama

Soal. Minta dengan input(), baca nama, sapa dengan tanda seru.

Cara berpikir. Dua baris: baca namanya (prompt dilewatkan langsung ke input()), lalu cetak sapaannya. Tanda seru ada di dalam string, setelah variablenya.

Solusi yang dikerjakan.

name = input("First name: ")
print(f"Hello, {name}!")

Kesalahan umum.

  • Lupa spasi di akhir prompt. "First name:" merapatkan kursor ke titik dua; "First name: " memberi ruang.

Soal 2 — Jumlah dua angka

Soal. Baca dua angka; cetak a + b = c.

Cara berpikir. Dua prompt, dua pembacaan, masing-masing dibungkus dengan int(). Bangun outputnya dengan f-string.

Solusi yang dikerjakan.

a = int(input("First number:  "))
b = int(input("Second number: "))

c = a + b
print(f"{a} + {b} = {c}")

Kesalahan umum.

  • Melewatkan int(). Nilainya tetap string, sehingga a + b menghasilkan concatenation string alih-alih penjumlahan: "3" + "4" adalah "34", bukan 7.
  • Membungkus int() di sekitar string prompt alih-alih hasil dari input(). int("First number: ") langsung memunculkan ValueError.

Soal 3 — Tahun menuju pensiun

Soal. Hitung 65 - age dan cetak kalimat dengan label.

Cara berpikir. Minta, baca, konversi, kurangi, cetak. Perhatikan urutannya: 65 - age, bukan age - 65.

Solusi yang dikerjakan.

age = int(input("Your current age: "))

years_left = 65 - age
print(f"You have {years_left} years until retirement.")

Kesalahan umum.

  • Melakukan age - 65, yang mencetak negatif untuk semua orang di bawah 65. Pengurangan tidak komutatif — urutan penting.

Tantangan — BMI

Soal. Minta tinggi dan berat (desimal), hitung BMI, cetak ke satu tempat desimal.

Cara berpikir. Dua prompt, dua pembacaan, keduanya melalui float() karena nilainya punya titik desimal. weight / (height * height) menghasilkan float; :.1f dalam f-string menampilkan satu digit setelah desimal.

Solusi yang dikerjakan.

height = float(input("Height in metres (e.g. 1.78): "))
weight = float(input("Weight in kg (e.g. 72.5):     "))

bmi = weight / (height * height)

print(f"BMI: {bmi:.1f}")

Kesalahan umum.

  • Menggunakan int() alih-alih float(). Tinggi seperti 1.78 bukan integer; int("1.78") memunculkan ValueError.
  • Lupa tanda kurung dalam height * height. Tanpanya, weight / height * height berjalan dari kiri ke kanan: bagi dengan tinggi, lalu kalikan lagi — tinggi saling menghilangkan dan kamu mendapatkan berat kembali.
  • Memasukkan tinggi dalam sentimeter (seperti 178) alih-alih meter (1.78). BMI menggunakan meter, seperti yang dikatakan prompt starter.

Selesai?

Semua bab Bagian 3 sudah selesai. Mini-project — Character Sheet — menggunakan semua hal dari bab 11 sampai 15.