13. Angka dan matematika — Solusi pekerjaan rumah

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

Soal 1 — Luas persegi panjang

Soal. Kalikan lebar dan tinggi; cetak hasilnya dengan label.

Cara berpikir. Perkalian adalah *. Simpan hasilnya di variable ketiga, atau gunakan langsung di dalam print dengan f-string.

Solusi yang dikerjakan.

width = 6
height = 4

area = width * height
print(f"Area: {area}")

Kesalahan umum.

  • Menulis width x height atau width times height. Keduanya bukan Python; operator perkalian adalah *.

Soal 2 — Floor dan ceil

Soal. Tampilkan 3.7, math.floor(3.7), dan math.ceil(3.7) di tiga baris, ditambah komentar yang menjelaskan perbedaannya.

Cara berpikir. floor membulatkan ke bawah; ceil membulatkan ke atas. Keduanya mengembalikan integer. Untuk angka positif, floor membuang desimalnya; ceil menambah satu kecuali angkanya sudah bulat.

Solusi yang dikerjakan.

import math

x = 3.7

print(x)              # 3.7
print(math.floor(x))  # 3
print(math.ceil(x))   # 4

# floor rounds DOWN to the next integer; ceil rounds UP. For 3.7
# they sit on either side: 3 and 4.

Kesalahan umum.

  • Mengharapkan math.floor mengubah x. Itu tidak terjadi. Seperti .upper(), ia mengembalikan nilai baru dan membiarkan yang asli tidak berubah.
  • Lupa import math. Python memunculkan NameError: name 'math' is not defined.

Soal 3 — Lempar dua dadu

Soal. Lempar dua dadu enam sisi secara independen. Cetak masing-masing ditambah totalnya.

Cara berpikir. random.randint(1, 6) menghasilkan angka dari 1 sampai 6. Panggil dua kali — sekali per dadu — lalu tambahkan dua variablenya.

Solusi yang dikerjakan.

import random

die1 = random.randint(1, 6)
die2 = random.randint(1, 6)
total = die1 + die2

print(f"Die 1: {die1}")
print(f"Die 2: {die2}")
print(f"Total: {total}")

Kesalahan umum.

  • Memanggil random.randint(1, 6) sekali dan menggunakan kembali angkanya untuk kedua dadu. Dua lemparan harus berupa pemanggilan terpisah.
  • Lupa import random di bagian atas file.

Tantangan — Hipotenusa

Soal. Diberikan dua sisi pendek segitiga siku-siku, hitung hipotenusa dengan math.sqrt, dan cetak ketiga nilai dengan hipotenusa dibulatkan ke dua desimal.

Cara berpikir. Matematikanya adalah c = sqrt(a*a + b*b). Baik a*a maupun a**2 bekerja. math.sqrt mengembalikan float. Untuk tampilan yang dibulatkan, gunakan f-string dengan :.2f.

Solusi yang dikerjakan.

import math

a = 3
b = 4

c = math.sqrt(a * a + b * b)

print(f"a = {a}")
print(f"b = {b}")
print(f"c = {c:.2f}")

Untuk a = 3, b = 4 outputnya adalah:

a = 3
b = 4
c = 5.00

Kesalahan umum.

  • Menulis math.sqrt(a**2 + b**2) dan melihat 5.0 bukan 5.00. Matematikanya benar; formatting yang mengontrol tempat desimal. :.2f selalu menampilkan dua.
  • Lupa import math. Python memunculkan NameError.

Selesai?

Dua bab lagi sebelum mini-project: Bekerja dengan teks memungkinkan kamu memotong, mencari, dan mengganti di dalam string, dan Mendapatkan input mengubah keyboard menjadi nilai. Lalu project character sheet menyatukan Bagian 3.