Pendamping Bab 6: String Dasar: Mengolah Teks. Gunakan nomor contoh dan latihan yang sama dengan buku.

Tujuan Belajar

  • Mengakses karakter dan mengambil bagian string.
  • Menggunakan metode string tanpa mengubah string asli.
  • Menyusun pesan dengan f-string.

Persiapan

Kamu sudah memahami variabel dan tipe data. Contoh inti memakai nilai tetap; percabangan, perulangan, dan input dipelajari pada bab berikutnya.

Program dengan tombol Coba di IDE dapat dijalankan di browser. Untuk program lokal, unduh sumber, ekstrak ZIP, lalu ikuti README.txt.

Pembahasan

06-01 – Apa Itu String?

Kadang-kadang kamu ingin membuat string yang mengandung tanda kutip di dalamnya, seperti.

Coba di IDE Unduh Sumber
teks = "Mico berkata 'Halo, apa kabar?'"
print(teks)

Hasil yang diharapkan:

Mico berkata 'Halo, apa kabar?'

Coba ubah: Ganti isi teks dengan teks lain dan bandingkan hasilnya.

06-02 – Apa Itu String?

Kadang-kadang kamu ingin membuat string yang mengandung tanda kutip di dalamnya, seperti.

Coba di IDE Unduh Sumber
teks = 'Mico berkata "Halo, apa kabar?"'
print(teks)

Hasil yang diharapkan:

Mico berkata "Halo, apa kabar?"

Coba ubah: Ganti isi teks dengan teks lain dan bandingkan hasilnya.

06-03 – Menjalankan instruksi

Begitu juga ketika kamu ingin membuat baris baru, tab, atau menampilkan backslash (\) itu sendiri.

Coba di IDE Unduh Sumber
print("Saya suka Python.\nIni baris kedua.")
print('Dia berkata, "Python itu keren!"')
print("C:\\Users\\Andi\\Dokumen")

Hasil yang diharapkan:

Saya suka Python.
Ini baris kedua.
Dia berkata, "Python itu keren!"
C:\Users\Andi\Dokumen

Coba ubah: Ubah satu nilai pada contoh, lalu jelaskan pengaruhnya terhadap hasil.

06-04 – Indexing: Mengakses Karakter

Indeks di Python dimulai dari 0 untuk karakter pertama.

Coba di IDE Unduh Sumber
teks = "Python"
# P y t h o n
# 0 1 2 3 4 5  (Indeks dari kiri ke kanan)
# -6-5-4-3-2-1 (Indeks dari kanan ke kiri)

print(teks[0])  # Output: P (Karakter pertama)
print(teks[2])  # Output: t
print(teks[-1])  # Output: n (Karakter terakhir)
print(teks[-3])  # Output: h

Hasil yang diharapkan:

P
t
n
h

Coba ubah: Ganti isi teks dengan teks lain dan bandingkan hasilnya.

06-05 – Slicing: Memotong String

mengambil satu karakter, kamu juga bisa mengambil "potongan" atau "irisan" (slice) dari sebuah string. Bayangkan kamu memiliki sepotong roti panjang (string), dan slicing memungkinkanmu memotong beberapa bagian dari roti tersebut.

Coba di IDE Unduh Sumber
teks_slice = "Pemrograman Python"
# Indeks:   012345678901234567
# Karakter: P e m r o g r a m a n   P y t h o n

# Mengambil dari indeks 0 sampai sebelum 4
print(teks_slice[0:4])  # Output: Pemr
# Mengambil dari indeks 12 sampai sebelum 18
print(teks_slice[12:18])  # Output: Python
# Mengambil dari awal sampai sebelum 11
print(teks_slice[:11])  # Output: Pemrograman
# Mengambil dari indeks 12 sampai akhir
print(teks_slice[12:])  # Output: Python
# Mengambil seluruh string (membuat salinan)
print(teks_slice[:])  # Output: Pemrograman Python

Hasil yang diharapkan:

Pemr
Python
Pemrograman
Python
Pemrograman Python

Coba ubah: Ganti isi teks_slice dengan teks lain dan bandingkan hasilnya.

06-06 – Slicing: Memotong String

Instruksi dijalankan dari atas ke bawah; print menampilkan nilai saat instruksi itu dijalankan.

Coba di IDE Unduh Sumber
angka_str = "0123456789"
# Output: 02468 (ambil karakter dengan step 2)
print(angka_str[0:10:2])
# Output: 0369 (ambil setiap karakter ke-3 dari seluruh string)
print(angka_str[::3])
print(angka_str[::-1])  # Output: 9876543210 (membalik string!)

Hasil yang diharapkan:

02468
0369
9876543210

Coba ubah: Ganti isi angka_str dengan teks lain dan bandingkan hasilnya.

06-07 – String Bersifat Immutable (Tidak Dapat Diubah)

Jika kamu melakukan operasi yang terlihat seperti "mengubah" string, sebenarnya Python membuat string baru di memori.

Coba di IDE Unduh Sumber
# Nama variabel diubah
salam_lama = "Halo"
# Membuat string baru "Jalo"
salam_baru = "J" + salam_lama[1:]
# Output: Halo (string asli tidak berubah)
print(salam_lama)
# Output: Jalo (ini adalah string yang baru)
print(salam_baru)

Hasil yang diharapkan:

Halo
Jalo

Coba ubah: Ganti isi salam_lama dengan teks lain dan bandingkan hasilnya.

06-08 – String Bersifat Immutable (Tidak Dapat Diubah)

String lama ("Halo" yang dirujuk salam_lama sebelum salam_lama = salam_baru jika ada assignment ulang) akan dihapus dari memori oleh Python jika tidak ada variabel lain yang merujuk padanya (proses ini disebut *garbage collection*).

Coba di IDE Unduh Sumber
# Kurang efisien untuk banyak penggabungan
# Nama variabel diubah
hasil_loop = ""
# Nama variabel diubah
daftar_kata_loop = ["Ini", "adalah", "kalimat", "panjang"]
# Nama variabel diubah
for kata_loop in daftar_kata_loop:
    # Setiap kali membuat string baru
    hasil_loop += kata_loop + " "
print(f"Hasil cara lama: '{hasil_loop}'")

# Lebih efisien
hasil_efisien = " ".join(daftar_kata_loop)
print(f"Hasil cara join: '{hasil_efisien}'")

Hasil yang diharapkan:

Hasil cara lama: 'Ini adalah kalimat panjang '
Hasil cara join: 'Ini adalah kalimat panjang'

Coba ubah: Ganti isi hasil_loop dengan teks lain dan bandingkan hasilnya.

06-09 – Menghitung Panjang String

Gunakan fungsi len() untuk mengetahui berapa banyak karakter (termasuk spasi dan tanda baca) dalam sebuah string.

Coba di IDE Unduh Sumber
teks = "Belajar Python"
print(len(teks))  # Output: 14

Hasil yang diharapkan:

14

Coba ubah: Ganti isi teks dengan teks lain dan bandingkan hasilnya.

06-10 – Perbandingan String

String di Python bisa dibandingkan menggunakan operator perbandingan seperti == (sama dengan), != (tidak sama dengan), < (kurang dari), > (lebih dari), <= (kurang dari atau sama dengan), dan >= (lebih dari atau sama dengan). Perbandingan dilakukan berdasarkan urutan karakter (lexicographical order), yang umumnya mengikuti urutan alfabet.

Coba di IDE Unduh Sumber
print("apel" == "apel")  # Output: True
# 'a' datang sebelum 'b' dalam urutan alfabet
print("apel" < "banana")  # Output: True
# Perbandingan case-sensitive
print("apel" == "Apel")  # Output: False
# 'Z' memiliki nilai ASCII lebih kecil dari 'a'
print("Zebra" < "apel")  # Output: True

Hasil yang diharapkan:

True
True
False
True

Coba ubah: Ubah satu nilai pada contoh, lalu jelaskan pengaruhnya terhadap hasil.

06-11 – Perbandingan String

Jika ingin membandingkan isi teks tanpa memperhatikan besar kecil huruf, kamu bisa mengubah kedua string menjadi huruf kecil (atau besar) semua sebelum membandingkan.

Coba di IDE Unduh Sumber
kata1 = "Python"
kata2 = "python"

print(kata1 == kata2)  # Output: False
print(kata1.lower() == kata2.lower())  # Output: True
# kata2 sudah lowercase
print(kata1.lower() == kata2)  # Output: True

Hasil yang diharapkan:

False
True
True

Coba ubah: Ganti isi kata1 dengan teks lain dan bandingkan hasilnya.

06-12 – Menggabungkan String (Concatenation)

Kamu bisa "menjahit" atau menggabungkan dua atau lebih string menjadi satu menggunakan operator +. Bayangkan kamu memiliki beberapa utas benang (string) dan kamu menyambungnya menjadi satu utas yang lebih panjang.

Coba di IDE Unduh Sumber
kata1 = "Selamat"
kata2 = "Pagi"
spasi = " "
sapaan = kata1 + spasi + kata2
print(sapaan)  # Output: Selamat Pagi

Hasil yang diharapkan:

Selamat Pagi

Coba ubah: Ganti isi kata1 dengan teks lain dan bandingkan hasilnya.

06-13 – Menggabungkan String (Concatenation)

Penting: Kamu hanya bisa menggabungkan string dengan string. Jika ingin menggabungkan string dengan angka atau tipe data lain, kamu harus mengubahnya menjadi string terlebih dahulu menggunakan str().

Coba di IDE Unduh Sumber
nama_concat = "Budi"
umur_concat = 10
# Ini akan Error! TypeError karena umur_concat bukan string:
# print(nama_concat + " berusia " + umur_concat + " tahun.")

# Harus dikonversi ke string dulu:
print(nama_concat + " berusia " + str(umur_concat) + " tahun.")

Hasil yang diharapkan:

Budi berusia 10 tahun.

Coba ubah: Ganti isi nama_concat dengan teks lain dan bandingkan hasilnya.

06-14 – Mengulang String (Repetition)

Kamu bisa "memfotokopi" sebuah string berkali-kali menggunakan operator *.

Coba di IDE Unduh Sumber
garis = "-" * 20
print(garis)  # Output: --------------------
# Nama variabel diubah
kata_ulang = "Echo! " * 3
# Output: Echo! Echo! Echo!
print(kata_ulang)

Hasil yang diharapkan:

--------------------
Echo! Echo! Echo!

Coba ubah: Ubah satu nilai pada contoh, lalu jelaskan pengaruhnya terhadap hasil.

06-15 – Mengecek Keberadaan Substring (Membership)

Kamu bisa mengecek apakah sebuah karakter atau urutan karakter (substring) ada di dalam string lain menggunakan operator in (atau not in). Hasilnya adalah nilai Boolean (True atau False).

Coba di IDE Unduh Sumber
# Nama variabel diubah
kalimat_cek = "Python itu seru dan mudah."
print("seru" in kalimat_cek)  # Output: True
print("sulit" in kalimat_cek)  # Output: False
# Output: True
print("Java" not in kalimat_cek)

Hasil yang diharapkan:

True
False
True

Coba ubah: Ganti isi kalimat_cek dengan teks lain dan bandingkan hasilnya.

06-16 – Mengubah Kapitalisasi (Case Conversion)

Perhatikan pemakaian lower, upper, capitalize, title pada data contoh dan bandingkan hasilnya dengan nilai awal.

Coba di IDE Unduh Sumber
# Nama variabel diubah
teks_kapital = "belajar Python Itu Menyenangkan"
# Output: belajar python itu menyenangkan (semua huruf kecil)
print(teks_kapital.lower())
# Output: BELAJAR PYTHON ITU MENYENANGKAN (semua huruf besar)
print(teks_kapital.upper())
# Output: Belajar python itu menyenangkan (huruf pertama kapital)
print(teks_kapital.capitalize())
# Output: Belajar Python Itu Menyenangkan
# (huruf pertama setiap kata kapital)
print(teks_kapital.title())
print("hELLo".swapcase())  # Output: HellO (menukar besar/kecil)

Hasil yang diharapkan:

belajar python itu menyenangkan
BELAJAR PYTHON ITU MENYENANGKAN
Belajar python itu menyenangkan
Belajar Python Itu Menyenangkan
HellO

Coba ubah: Ganti isi teks_kapital dengan teks lain dan bandingkan hasilnya.

06-17 – Menghilangkan Spasi (Trimming)

Kadang kamu ingin menghapus spasi kosong di awal dan akhir string, terutama dari input pengguna atau teks hasil pembacaan file. Gunakan metode .strip(), .lstrip(), atau .rstrip().

Coba di IDE Unduh Sumber
teks_spasi = "   Halo dunia!   "

# Output: 'Halo dunia!' (hapus kiri & kanan)
print(f"'{teks_spasi.strip()}'")
# Output: 'Halo dunia!   ' (hapus kiri saja)
print(f"'{teks_spasi.lstrip()}'")
# Output: '   Halo dunia!' (hapus kanan saja)
print(f"'{teks_spasi.rstrip()}'")

Hasil yang diharapkan:

'Halo dunia!'
'Halo dunia!   '
'   Halo dunia!'

Coba ubah: Ganti isi teks_spasi dengan teks lain dan bandingkan hasilnya.

06-18 – Mencari dan Mengganti (Find & Replace)

Perhatikan pemakaian find pada data contoh dan bandingkan hasilnya dengan nilai awal.

Coba di IDE Unduh Sumber
kalimat_cari = "Saya suka programming, programming itu asyik!"
# Nama variabel diubah
posisi1 = kalimat_cari.find("programming")
# Output: 10
print(f"Kata 'programming' pertama ditemukan di indeks: {posisi1}")

posisi2 = kalimat_cari.find("Python")
# Output: -1 (karena tidak ada)
print(f"Kata 'Python' ditemukan di indeks: {posisi2}")

# Kamu juga bisa memberikan posisi awal untuk mencari:
# Cari setelah kemunculan pertama
posisi3 = kalimat_cari.find("programming", posisi1 + 1)
# Output: 23
pesan_posisi = "Kata 'programming' berikutnya "
pesan_posisi += f"ditemukan di indeks: {posisi3}"
print(pesan_posisi)

Hasil yang diharapkan:

Kata 'programming' pertama ditemukan di indeks: 10
Kata 'Python' ditemukan di indeks: -1
Kata 'programming' berikutnya ditemukan di indeks: 23

Coba ubah: Ganti isi kalimat_cari dengan teks lain dan bandingkan hasilnya.

06-19 – Mencari dan Mengganti (Find & Replace)

Perhatikan pemakaian replace pada data contoh dan bandingkan hasilnya dengan nilai awal.

Coba di IDE Unduh Sumber
pesan_replace = "Saya benci hari Senin."
# Nama variabel diubah
pesan_baru_replace = pesan_replace.replace("benci", "suka")
print(pesan_baru_replace)  # Output: Saya suka hari Senin.
# Output: Saya benci hari Senin. (string asli tidak berubah)
print(pesan_replace)

# Kamu bisa membatasi jumlah penggantian:
teks_berulang_replace = "apel apel apel apel"
# Output: jeruk jeruk apel apel
print(teks_berulang_replace.replace("apel", "jeruk", 2))

Hasil yang diharapkan:

Saya suka hari Senin.
Saya benci hari Senin.
jeruk jeruk apel apel

Coba ubah: Ganti isi pesan_replace dengan teks lain dan bandingkan hasilnya.

06-20 – Mencari dan Mengganti (Find & Replace)

ulan old dalam string dan menggantinya dengan new. Metode ini menghasilkan string baru (ingat, string immutable!).

Coba di IDE Unduh Sumber
# Nama variabel diubah
cerita_count = "Satu satu aku sayang ibu, dua dua juga sayang ayah."
# Case-sensitive
jumlah_satu = cerita_count.count("satu")
jumlah_sayang = cerita_count.count("sayang")
print(f"'satu' muncul {jumlah_satu} kali.")  # Output: 2
print(f"'sayang' muncul {jumlah_sayang} kali.")  # Output: 2

Hasil yang diharapkan:

'satu' muncul 1 kali.
'sayang' muncul 2 kali.

Coba ubah: Ganti isi cerita_count dengan teks lain dan bandingkan hasilnya.

06-21 – Memecah dan Menggabung String (Splitting & Joining)

Perhatikan pemakaian split pada data contoh dan bandingkan hasilnya dengan nilai awal.

Coba di IDE Unduh Sumber
kalimat_data_split = "apel,jeruk,mangga,pisang"
# Pemisah adalah koma
daftar_buah_split = kalimat_data_split.split(",")
# Output: ['apel', 'jeruk', 'mangga', 'pisang']
print(daftar_buah_split)

# Nama variabel diubah
kalimat_kata_split = "Ini adalah contoh kalimat"
# Pemisah default adalah spasi
daftar_kata_split = kalimat_kata_split.split()
# Output: ['Ini', 'adalah', 'contoh', 'kalimat']
print(daftar_kata_split)

# Kamu bisa membatasi jumlah pemecahan
info_split = "Nama:Budi:Usia:25:Kota:Jakarta"
# Pecah hanya pada ':' pertama
data_nama_split = info_split.split(":", 1)
print(data_nama_split)
# Output: ['Nama', 'Budi:Usia:25:Kota:Jakarta']

Hasil yang diharapkan:

['apel', 'jeruk', 'mangga', 'pisang']
['Ini', 'adalah', 'contoh', 'kalimat']
['Nama', 'Budi:Usia:25:Kota:Jakarta']

Coba ubah: Ganti isi kalimat_data_split dengan teks lain dan bandingkan hasilnya.

06-22 – Memecah dan Menggabung String (Splitting & Joining)

Perhatikan pemakaian join pada data contoh dan bandingkan hasilnya dengan nilai awal.

Coba di IDE Unduh Sumber
# Nama variabel diubah
kata_kunci_join = ["belajar", "python", "itu", "asyik"]
# Gabungkan dengan spasi sebagai separator
kalimat_hasil_join = " ".join(kata_kunci_join)
print(kalimat_hasil_join)  # Output: belajar python itu asyik

data_csv_join = ["ID001", "Produk A", "15000"]
# Gabungkan dengan titik koma
baris_csv_join = ";".join(data_csv_join)
print(baris_csv_join)  # Output: ID001;Produk A;15000

Hasil yang diharapkan:

belajar python itu asyik
ID001;Produk A;15000

Coba ubah: Ubah satu nilai pada kata_kunci_join dan periksa bagian hasil yang ikut berubah.

06-23 – Mengecek Kondisi String (Boolean Checks)

Perhatikan pemakaian startswith, endswith, isalnum, isdigit pada data contoh dan bandingkan hasilnya dengan nilai awal.

Coba di IDE Unduh Sumber
print("LaporanBulanan.pdf".startswith("Laporan"))  # True
print("gambar.jpg".endswith(".png"))  # False
print("Python3".isalnum())  # True
print("12345".isdigit())  # True
print("NamaSaya".isalpha())  # True
print("hanya spasi   ".isspace())  # False
print("   ".isspace())  # True
print("Judul Buku Ini".istitle())  # True

Hasil yang diharapkan:

True
False
True
True
True
False
True
True

Coba ubah: Ubah satu nilai pada contoh, lalu jelaskan pengaruhnya terhadap hasil.

06-24 – Format String (f-string): Cara Elegan Menyusun Teks

f-string diawali dengan huruf f atau F sebelum tanda kutip pembuka, dan kamu bisa menyisipkan ekspresi Python (variabel, perhitungan, pemanggilan fungsi) langsung di dalam string dengan mengapitnya dalam kurung kurawal {}.

Coba di IDE Unduh Sumber
nama_f = "Siti"
umur_f = 22
pekerjaan_f = "Analyst Data"

# Menggunakan f-string untuk membuat kalimat lengkap
info_pribadi_f = f"Nama saya {nama_f}, "
info_pribadi_f += f"saya berusia {umur_f} tahun"
info_pribadi_f += f" dan bekerja sebagai {pekerjaan_f}."
print(info_pribadi_f)
# Output: Nama saya Siti, saya berusia 22 tahun
# dan bekerja sebagai Analyst Data.

print(f"Tahun depan, {nama_f} akan berusia {umur_f + 1} tahun.")
# Output: Tahun depan, Siti akan berusia 23 tahun.

Hasil yang diharapkan:

Nama saya Siti, saya berusia 22 tahun dan bekerja sebagai Analyst Data.
Tahun depan, Siti akan berusia 23 tahun.

Coba ubah: Ganti isi nama_f dengan teks lain dan bandingkan hasilnya.

06-25 – Format Specifiers dalam f-string

Instruksi dijalankan dari atas ke bawah; print menampilkan nilai saat instruksi itu dijalankan.

Coba di IDE Unduh Sumber
harga_barang_f = 45000.758
diskon_f = 0.15  # 15%

print(f"Harga asli: Rp{harga_barang_f}")
# Output: Harga asli: Rp45000.758

print(f"Harga asli (2 desimal): Rp{harga_barang_f:.2f}")
# Output: Harga asli (2 desimal): Rp45000.76 (dibulatkan)

nilai_ujian_f = 85
# Output: Nilai: 085 (total 3 digit, isi nol)
print(f"Nilai: {nilai_ujian_f:03d}")

nama_produk_f = "Buku Python"
jumlah_f = 5
print(f"{nama_produk_f:<20} | Jumlah: {jumlah_f:>3}")
# Output: Buku Python          | Jumlah:   5
#          (rata kiri 20 char) (rata kanan 3 char)

Hasil yang diharapkan:

Harga asli: Rp45000.758
Harga asli (2 desimal): Rp45000.76
Nilai: 085
Buku Python          | Jumlah:   5

Coba ubah: Ubah harga_barang_f dari 45000.758 menjadi 45001.758, lalu prediksi hasilnya.

Studi Kasus

06-26 – Merapikan label barang

strip dan title menghasilkan nama baru yang rapi. len menghitung karakter termasuk spasi di antara kata.

Coba di IDE Unduh Sumber
nama_barang = "  buku tulis  "
harga = 7500
nama_rapi = nama_barang.strip().title()
print(f"{nama_rapi}: Rp {harga}")
print(f"Jumlah karakter nama: {len(nama_rapi)}")

Hasil yang diharapkan:

Buku Tulis: Rp 7500
Jumlah karakter nama: 10

Coba ubah: Ganti nama barang dan amati perubahan jumlah karakternya.

Rangkuman

String adalah urutan karakter yang immutable. Indeks dimulai dari nol; batas akhir slicing tidak disertakan. Metode seperti strip dan upper menghasilkan string baru. f-string menyisipkan nilai ke dalam pesan.

Cek Pemahaman

Lima pertanyaan ini sama dengan pertanyaan di buku. Periksa jawaban di kuis untuk melihat skor dan pembahasan.

  1. Apa hasil "Python"[0]?
  2. Apa hasil "Python"[1:4]?
  3. Apa arti string immutable?
  4. Metode untuk menghapus spasi di kedua ujung teks adalah …
  5. Jika nama = "Ayu", hasil f"Halo, {nama}" adalah …
Kerjakan Kuis

Latihan Mandiri

Latihan 06-L01 – Nama rapi

Dasar. Rapikan teks " ayu putri " menjadi "Ayu Putri".

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

Ayu Putri
Lihat Petunjuk

Gabungkan strip dan title.

Lihat Solusi
nama = "  ayu putri  "
print(nama.strip().title())

strip membersihkan ujung teks; title mengubah kapitalisasi tiap kata.

Coba Solusi di IDEUnduh Solusi

Latihan 06-L02 – Dua potongan

Penerapan. Dari teks "PYTHON", cetak tiga karakter pertama lalu tiga karakter terakhir.

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

PYT
HON
Lihat Petunjuk

Gunakan slicing dengan batas akhir dan indeks negatif.

Lihat Solusi
teks = "PYTHON"
print(teks[:3])
print(teks[-3:])

Kedua operasi menghasilkan string baru.

Coba Solusi di IDEUnduh Solusi

Latihan 06-L03 – Pesan belanja

Pengembangan. Gunakan f-string untuk menampilkan "3 buku: Rp 15000" dari jumlah 3 dan harga 5000.

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

3 buku: Rp 15000
Lihat Petunjuk

Ekspresi perkalian dapat ditulis di dalam kurung kurawal.

Lihat Solusi
jumlah = 3
harga = 5000
print(f"{jumlah} buku: Rp {jumlah * harga}")

f-string menggabungkan teks dan hasil perhitungan.

Coba Solusi di IDEUnduh Solusi

Pengembangan

Membandingkan dan Menyamakan Teks

Prasyarat: kerjakan setelah Bab 13.

Kegiatan pengembangan:

  1. Apakah 'semangka' > 'melon' akan menghasilkan True atau False? Jelaskan mengapa!
  2. Bagaimana cara memeriksa apakah input pengguna (misalnya, jawaban “YA”) sama dengan “ya”, “Ya”, atau “YA” tanpa menulis tiga kondisi or terpisah?

Menata Judul Buku

Prasyarat: kerjakan setelah Bab 13.

Kegiatan pengembangan: Penata Judul Input pengguna seringkali tidak konsisten kapitalisasinya. Buatlah program kecil yang meminta nama buku dari pengguna, lalu cetak nama buku tersebut dalam format title case.

Membersihkan Input Kota

Prasyarat: kerjakan setelah Bab 13.

Kegiatan pengembangan: Pembersih Input Seringkali input dari pengguna memiliki spasi ekstra di awal atau akhir. Mintalah pengguna memasukkan nama kota, lalu bersihkan spasi ekstra tersebut sebelum menampilkannya kembali.

Memecah dan Menggabungkan Data Teks

Prasyarat: kerjakan setelah Bab 13.

Kegiatan pengembangan: Pengolah Data CSV Sederhana

  1. Diberikan string CSV:

    data_csv_tantangan = ("Nama,Usia,Kota\n"
                          "Andi,25,Jakarta\n"
                          "Budi,30,Bandung")

    Pecah string ini menjadi baris-baris, lalu setiap baris menjadi kolom-kolom.

  2. Dari list berikut:

    daftar_kata_join_tantangan = ['Hello', 'World', 'from', 'Python']

    Buatlah string "Hello-World-from-Python".

Memvalidasi Nomor dan Nama File

Prasyarat: kerjakan setelah Bab 13.

Kegiatan pengembangan: Validator Sederhana

  1. Buat program yang meminta pengguna memasukkan nomor telepon. Cek apakah inputnya hanya berisi angka dan tidak kosong.
  2. Minta pengguna memasukkan nama file. Cek apakah nama file tersebut berakhiran .txt atau .csv.

Menyusun Struk Belanja

Prasyarat: kerjakan setelah Bab 13.

Kegiatan pengembangan: Struk Belanja Rapi Buat program yang menerima input nama barang, harga satuan, dan jumlah barang. Lalu cetak struk sederhana yang rapi menggunakan f-string, menampilkan total harga dengan format dua angka desimal dan nama barang rata kiri. Contoh Output:

Nama Barang      | Jumlah | Total Harga
-----------------|--------|-------------
Pensil           | 5      | Rp  7500.00
Buku Tulis       | 2      | Rp 10000.00

Referensi dan Materi Pendamping

Langkah Selanjutnya

Bab 7 membahas String Lanjutan: Format dan Unicode. Sebelum melanjutkan, pastikan kamu dapat menjelaskan tujuan belajar dan menyelesaikan tiga latihan inti bab ini.

Edisi September 2026. Nomor contoh, pertanyaan, dan latihan digunakan bersama pada buku dan halaman ini.

Bab 5 | Bab 7