String di Python — Python

String di Python String adalah tipe data untuk menyimpan teks. Di Python, string bisa menggunakan tanda kutip tunggal atau ganda. Membuat String nama = "Budi"…

String (tipe str) adalah teks: deretan karakter di antara tanda kutip. Bayangin papan menu Warung Kopi Pak Darto yang hurufnya ubin-ubin kecil berjajar, K, o, p, i, dan seterusnya, tiap ubin punya nomor. Kamu bisa membaca satu ubin, atau memotong beberapa ubin berurutan. Tapi ubinnya ditempel mati: mau tulisan lain, kamu bikin papan baru.

🧪 Tebakan cepat: menu = "Kopi susu", lalu baris menu.upper(), lalu print(menu). Yang tercetak KOPI SUSU atau Kopi susu? Tebak dulu, jawabannya ada di bagian "String gak bisa diubah".

Membuat string

menu = "Kopi susu"
toko = 'Warung Kopi Pak Darto'
struk = """Kopi susu x3
Teh manis x4"""

print(len(menu))   # 9

Indeks: nomor tiap karakter

Karakter K o p i spasi s u s u
Indeks 0 1 2 3 4 5 6 7 8
Indeks negatif -9 -8 -7 -6 -5 -4 -3 -2 -1

Slicing: memotong bagian

print(menu[0:4])    # Kopi
print(menu[5:])     # susu
print(menu[-4:])    # susu
print(menu[:4])     # Kopi
print(menu[::-1])   # usus ipoK

Method string

Method adalah fungsi yang menempel di sebuah nilai, dipanggil dengan titik: nilai.nama_method().

pesanan = "kopi susu, teh manis, roti bakar"

print(pesanan.upper())                   # KOPI SUSU, TEH MANIS, ROTI BAKAR
print(len(pesanan))                      # 32
print(pesanan.replace("teh", "es teh"))  # kopi susu, es teh manis, roti bakar
print(pesanan.split(", "))               # ['kopi susu', 'teh manis', 'roti bakar']

String gak bisa diubah

menu = "Kopi susu"
menu.upper()
print(menu)          # Kopi susu

menu = menu.upper()
print(menu)          # KOPI SUSU

String itu immutable: isinya gak bisa diubah. Method seperti .upper() gak mengubah menu, dia membuat string baru. Kalau string baru itu gak disimpan, dia langsung hilang, jadi print(menu) tetap Kopi susu. Itu jawaban tebakannya. Mau menyimpan hasilnya? Tempel lagi ke nama: menu = menu.upper().

Mengganti satu karakter langsung juga ditolak:

Traceback (most recent call last):
  File "/home/darto/warung.py", line 2, in <module>
    menu[0] = "k"
    ~~~~^^^
TypeError: 'str' object does not support item assignment

f-string dengan format spec

Di dalam {} sebuah f-string, kamu boleh menulis ekspresi, dan sesudah tanda : boleh ada format spec, aturan cara menulis nilainya:

total = 89000
per_orang = total / 3
nama = "budi"

print(f"Total: Rp{total:,}")                     # Total: Rp89,000
print(f"Total: Rp{total:,}".replace(",", "."))   # Total: Rp89.000
print(f"Per orang: Rp{per_orang:.2f}")           # Per orang: Rp29666.67
print(f"Halo, {nama.upper()}!")                  # Halo, BUDI!

📌 Format spec lain

print(f"{'Kopi':<10}|")   # Kopi      |
print(f"{'Kopi':>10}|")   #       Kopi|
print(f"{'Kopi':^10}|")   #    Kopi   |
print(f"{7:03}")          # 007
print(f"{0.8745:.1%}")    # 87.5%

<, >, ^ meratakan kiri, kanan, tengah dalam lebar 10 karakter, berguna untuk struk yang rapi. 03 mengisi depan angka dengan nol sampai 3 digit. .1% mengalikan 100 lalu menulis satu angka desimal dan tanda persen.

⚠️ Jebakan yang sering ketemu

TL;DR: String adalah teks di antara kutip, dan len() menghitung karakternya. Indeks mulai dari 0, indeks negatif dari belakang (menu[-1] karakter terakhir), dan indeks di luar batas jadi IndexError. Slicing menu[awal:akhir] berhenti sebelum akhir dan gak pernah error. Method dipanggil dengan titik: .upper(), .replace(lama, baru), .split(", ") (hasilnya list), dan " ".join(list) dipanggil di pemisahnya. String immutable: method membuat string baru, jadi simpan atau cetak hasilnya. Format spec di f-string: {total:,} untuk ribuan (89,000), {x:.2f} untuk 2 desimal.

Yang akan kamu pelajari