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
fsebelum tanda kutip pembuka. Tanpanya,{name}dicetak secara harfiah sebagai teks{name}, bukan nilai variablenya. - Menggunakan
+untuk menggabungkan string dan integer. Python memunculkanTypeError. 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
\\nalih-alih\n. Backslash ganda berarti backslash harfiah diikutin, 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) + 4menambahkan integer4ke sebuah string, yang menghasilkanTypeError. Tulis"-" * (len(title) + 4).
Selesai?
Selanjutnya adalah Angka dan matematika, lalu Mendapatkan input, lalu mini-project Bagian 3.