12. Strings

String adalah nilai yang paling sering kamu cetak. Python punya banyak alat untuk string yang sudah terpasang langsung pada objek string: menggabungkan, mengukur, mengubah huruf, mengulang, dan memformat angka ke dalamnya. Bab ini mencakup yang paling sering kamu pakai sehari-hari.

Menggabungkan string dengan + dan f-string

Kamu bisa menggabungkan dua string dengan + (operator concatenation). Hasilnya adalah satu string baru dengan yang kedua menempel di akhir yang pertama:

first = "Hello, "
second = "world!"
print(first + second)   # Hello, world!

Variable aslinya tidak berubah — + membangun string baru.

+ di Python tidak otomatis mengonversi angka menjadi string. Menambahkan angka ke string adalah error:

level = 7
# print("Level " + level)   # TypeError: can only concatenate str to str

Solusinya adalah membungkus angka dengan str(), atau menggunakan f-string, yang merupakan pendekatan Python yang lebih disukai:

level = 7
print("Level " + str(level) + " complete")   # Level 7 complete
print(f"Level {level} complete")              # Level 7 complete

Sebuah f-string dimulai dengan huruf f sebelum tanda kutip pembuka. Semua ekspresi di dalam {} dievaluasi dan disisipkan ke dalam string. F-string menangani angka, boolean, dan tipe lainnya secara otomatis.

Panjang string dengan len

Fungsi len() mengembalikan panjang string dalam karakter:

print(len("hello"))        # 5
print(len(""))             # 0
greeting = "Welcome"
print(len(greeting))       # 7

Pakai len() kapanpun kamu butuh panjang sebuah string — untuk memusatkan teks, memeriksa panjang input, atau membangun border.

Buka exercises/12/01-length.py. Tambahkan baris yang mencetak panjang namamu sendiri.

Mengubah huruf

Method string berada langsung pada objek string, dipanggil dengan titik. Dua yang sederhana adalah .upper() dan .lower(). Keduanya mengembalikan string baru dan membiarkan yang asli tidak berubah:

name = "Keiko"
print(name.upper())   # KEIKO
print(name.lower())   # keiko
print(name)            # Keiko  (still the original)

Mengulang sebuah string

Mengalikan string dengan integer menggunakan * mengulanginya sebanyak itu:

print("-" * 20)                        # --------------------
print("ab" * 3)                        # ababab
print("=" * 4 + " TITLE " + "=" * 4)  # ==== TITLE ====

Ini adalah alat yang tepat untuk menggambar border atau padding teks.

Formatting dengan f-string

Ketika kamu perlu menyisipkan angka atau teks ke tempat-tempat tertentu, f-string adalah pendekatan standar. Letakkan ekspresi apapun di dalam {}:

name = "Keiko"
level = 7
hp = 95
print(f"{name} (Lv {level}) HP {hp}")
# Keiko (Lv 7) HP 95

Untuk mengontrol tempat desimal dan formatting angka, tambahkan spesifikasi format setelah titik dua di dalam kurung kurawal:

Spesifikasi format Fungsinya Contoh output
{x} konversi default Keiko atau 7
{x:.2f} float dengan dua tempat desimal 3.14
{x:d} integer 7
{x:10} pad ke lebar 10 Keiko
price = 3.14159
print(f"Price: {price:.2f}")   # Price: 3.14

Buka exercises/12/02-format.py. Ubah f-string sehingga outputnya berbunyi Keiko has 95 HP at level 7.

Escape sequence

Beberapa karakter sulit dimasukkan dalam string karena bertabrakan dengan tanda baca Python. Solusinya adalah escape sequence — sebuah backslash \ diikuti huruf, yang Python ganti dengan karakter khusus itu:

Urutan Menjadi apa
\n baris baru (pindah ke baris berikutnya)
\t tab
\" tanda kutip ganda harfiah
\' tanda kutip tunggal harfiah
\\ backslash harfiah

Contoh:

print("Line 1\nLine 2\nLine 3")
# Line 1
# Line 2
# Line 3

print("Name\tLevel\tHP")
# Name    Level   HP

print("She said \"hi\" and waved.")
# She said "hi" and waved.

String multi-baris

Ketika sebuah string mencakup banyak baris dengan banyak tanda kutip, escape sequence jadi ramai. Python menawarkan string dengan tanda kutip tiga: """ untuk membuka dan """ untuk menutup (atau ''' dan '''). Apapun di antaranya adalah string, termasuk baris baru dan tanda kutip:

poem = """
Roses are red,
Violets are blue,
"Pick a number,"
said the program to you.
"""

print(poem)

Setelah dibuat, string dengan tanda kutip tiga adalah string biasa — hanya cara penulisan yang lebih nyaman.

Pekerjaan Rumah

Soal 1 — Keras dan pelan

Buka exercises/12/homework/01-loud-and-quiet.py. Variable starter menyimpan namamu. Cetak tiga kali: apa adanya, dalam huruf besar, lalu dalam huruf kecil.

Soal 2 — Baris statistik

Buka exercises/12/homework/02-stat-line.py. Tiga variable dideklarasikan di atas: sebuah string name, sebuah integer level, sebuah integer hp. Menggunakan f-string, cetak satu baris dalam bentuk persis ini:

Keiko  Lv 7   HP 95

Label (Lv, HP) dan spasi di antara field bisa berupa spasi harfiah di dalam f-string.

Soal 3 — Puisi tiga baris dalam satu baris

Buka exercises/12/homework/03-three-line-poem.py. Cetak puisi tiga baris menggunakan tepat satu pemanggilan print. Pemisah baris harus berasal dari \n di dalam string. Tambahkan komentar # setelah pemanggilan print yang menjelaskan mengapa satu print bisa menghasilkan tiga baris.

Tantangan — Blok judul

Buka exercises/12/homework/04-title-block.py. Sebuah variable menyimpan judul (string apapun yang kamu suka). Cetak blok seperti ini, di mana baris tanda hubung atas dan bawah sesuai dengan panjang judul ditambah dua tanda hubung di setiap sisi:

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

Gunakan "-" * n dan len() untuk mengukur border tanpa menghitung manual. Mengubah judul harus secara otomatis mengubah panjang border.

Buntu atau sudah selesai? Buka halaman solusi pekerjaan rumah.