12. Strings — Solusi pekerjaan rumah

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

Soal 1 — Keras dan pelan

Soal. Cetak sebuah nama tiga kali: asli, huruf besar, huruf kecil.

Cara berpikir. Kamu butuh dua string method: .upper() dan .lower(). Tidak ada yang mengubah variable asli, jadi ketiga print merujuk ke name yang sama.

Solusi yang dikerjakan.

name = "Keiko"

print(name)
print(name.upper())
print(name.lower())

Kesalahan umum.

  • Menulis name = name.upper() di antara print. Itu menimpa nilai asli, sehingga print berikutnya menggunakan teks yang sudah diubah alih-alih "Keiko". Biarkan yang asli tidak berubah dan transformasi hanya di dalam setiap pemanggilan print.

Soal 2 — Baris statistik

Soal. Gunakan f-string untuk menghasilkan Keiko Lv 7 HP 95.

Cara berpikir. Tiga nilai, tiga slot {} dalam f-string: satu untuk nama, satu untuk level, satu untuk HP. Label (Lv, HP) dan spasi di antara field berada di dalam f-string itu sendiri.

Solusi yang dikerjakan.

name = "Keiko"
level = 7
hp = 95

print(f"{name}  Lv {level}   HP {hp}")

Spasi ganda setelah {name} dan spasi tiga setelah level sesuai dengan output yang diminta. Sesuaikan spasi sesuai selera.

Kesalahan umum.

  • Lupa awalan f sebelum tanda kutip pembuka. Tanpanya, {name} dicetak secara harfiah sebagai teks {name}, bukan nilai variablenya.
  • Menggunakan + untuk menggabungkan string dan integer. Python memunculkan TypeError. F-string menangani konversi secara otomatis.

Soal 3 — Puisi tiga baris dalam satu baris

Soal. Satu pemanggilan print, tiga baris output, dipisahkan oleh \n.

Cara berpikir. Di dalam string biasa, \n adalah karakter baris baru, jadi satu string dengan dua \n tercetak sebagai tiga baris. Komentar harus menjelaskan mengapa: print menulis apapun yang diberikan padanya, dan string ini sudah mengandung karakter baris baru.

Solusi yang dikerjakan.

print("Code is poetry,\nbugs are typos,\nfix them and ship.")
# One print call still produced three lines because the string itself
# contained two \n characters, each of which Python replaces with a
# newline before sending to the terminal.

Kesalahan umum.

  • Menulis \\n alih-alih \n. Backslash ganda berarti backslash harfiah diikuti n, yang Python tidak perlakukan sebagai baris baru.

Tantangan — Blok judul

Soal. Cetak judul dengan border tanda hubung di atas dan bawah. Panjang border dihitung dari panjang judul, bukan diketik.

Cara berpikir. Border harus sepanjang len(title) + 4 karakter (dua tanda hubung di setiap sisi " TITLE "). Bangun baris tanda hubung sepanjang itu dengan "-" * n, dan bangun baris tengah dengan f-string.

Solusi yang dikerjakan.

title = "INVENTORY"

border = "-" * (len(title) + 4)
middle = f"-- {title} --"

print(border)
print(middle)
print("Inside text goes here")
print(middle)
print(border)

Output untuk title = "INVENTORY":

-------------
-- INVENTORY --
Inside text goes here
-- INVENTORY --
-------------

Ubah title menjadi "SHOP" dan bordernya menyusut. Itulah mengapa kamu menggunakan len(title) alih-alih menghitung tanda hubung manual.

Kesalahan umum.

  • Hardcode jumlah tanda hubung. Tantangannya adalah menghitung panjang dari len(title).
  • Lupa tanda kurung: "-" * len(title) + 4 menambahkan integer 4 ke sebuah string, yang menghasilkan TypeError. Tulis "-" * (len(title) + 4).

Selesai?

Selanjutnya adalah Angka dan matematika, lalu Mendapatkan input, lalu mini-project Bagian 3.