Setiap teks yang kamu ketik — nama, caption, pesan — adalah data yang bisa dipotong, dibersihkan, dan dicari. Hari ini teks patuh padamu.
upper · lower · strip · replace · split · joinin / find / countteks[0], slicing teks[1:4]upper · lower · strip · replace · split · join + len()in, find(), count()* immutable = tidak bisa diubah langsung — method string selalu mengembalikan string BARU. Ini bintang utama hari ini, kita bedah khusus.
Input user selalu kotor:
spasi diam-diam, huruf kacau.
String tools = pembersihnya.
String = rangkaian gerbong kereta — tiap huruf satu gerbong, tiap gerbong bernomor.
Ambil gerbong ke-3, potong rangkaiannya, ganti isi gerbong — semua bisa.
def — membungkus instruksi jadi fungsi bernamareturn — fungsi menerima bahan, mengembalikan hasilreturn vs print() — satu memberi nilai, satu hanya menampilkanKabar baik: method string hari ini persis fungsi — cuma nempel di teks: teks.upper() = fungsi yang bekerja pada teks.
" budi " diketik user dengan spasi diam-diam — bagaimana membuatnya bersih?len(" budi ") = 8, bukan 4. Ada "gunting khusus" untuk itu, dan kamu akan memakainya sepanjang karier.Posisimu: 13 dari 17 — 76% perjalanan. Dua proyek menanti!
teks = "BINUS"
print(teks[0]) # B — gerbong pertama
print(teks[4]) # S — gerbong keempat
print(teks[-1]) # S — hitung dari belakang!
print(len(teks)) # 5 — jumlah gerbong
teks[0] — gerbong pertama, bukan "nomor 1" (Python mulai dari 0)teks[-1] — hitung mundur dari belakang: -1 terakhir, -2 sebelumnyalen(teks) — hitung isi rangkaian, spasi juga dihitung!Output dari 4 baris print() di kiri — urut: [0], [4], [-1], len.
Sama dengan list di Sesi 11 — string juga deretan bernomor. Kamu sudah tahu polanya!
teks = "BINUS International"
print(teks[0:5]) # BINUS
print(teks[6:10]) # Inte
print(teks[6:]) # International
print(teks[-3:]) # ion — 3 terakhir
[0:5] = ambil indeks 0,1,2,3,4 — gerbong ke-5 tidak ikut.
Kiri termasuk, kanan eksklusif — hafal ini, 90% salah slicing selesai.
Bolong satu sisi? Boleh! teks[6:] = dari indeks 6 sampai habis. teks[:5] = dari awal sampai sebelum 5.
Tebak dulu: "Python"[1:4] hasilnya apa? Jangan run dulu — tulis tebakanmu, baru buktikan di praktik.
kata = "budi"
# kata[0] = "B" # TypeError! string immutable
# bedakan dengan list (Sesi 11) — list BISA:
nilai = [70, 80]
nilai[0] = 95 # sah — nilai jadi [95, 80]
# cara yang benar untuk string: bikin BARU
kata = "B" + kata[1:]
print(kata) # Budi
Analogi: fotokopi dulu, coret di salinannya — aslinya tetap. Method string juga begitu (slide berikutnya).
upper · lower · stripnama = " budi Santoso "
print(nama.strip()) # budi Santoso
print(nama.upper()) # BUDI SANTOSO
print(nama.lower()) # budi santoso
print(nama) # aslinya MASIH kotor!
upper() mengembalikan versi kapital — tapi nama tidak berubah. Hasilnya dilempar kalau tidak disimpan!
Ritual wajib input text mulai hari ini: input().strip() — biarkan spasi tak terlihat tidak ikut kacau.
replace & title — ganti & rapikanjudul = "aku suka kopi"
print(judul.replace("kopi", "teh"))
# aku suka teh
nama = "budi santoso"
print(nama.title())
# Budi Santoso — tiap kata diawali kapital
print(judul) # asli: "aku suka kopi"
replace(lama, baru) — dua bahan dalam kurung. title() — kurung kosong, dia tahu tugasnya.
Baris ketiga: judul masih "aku suka kopi" — replace mengembalikan string baru, aslinya aman. Immutable lagi!
Urutan penting: bersihkan dulu, baru rapikan — hasil kiri jadi bahan kanan.
"jangan lupa PR" jadi huruf kapital semua (satu method!). Simpan hasilnya ke variabel sebelum cetak.kalimat, potong ambil kata pertama dan 3 huruf terakhir pakai slicing, cetak keduanya.Baris 3 = kata pertama [0:6] · baris 4 = 3 huruf terakhir [-3:].
Waktu: 10 menit. Selesai duluan? Coba cetak len(kalimat) — lalu jawab: apa bedanya len(" a b") dengan 3?
split & join — gunting & lemkalimat = "belajar python itu seru"
kata = kalimat.split()
print(kata)
# ['belajar', 'python', 'itu', 'seru']
print(kata[0]) # belajar
print("-".join(kata))
# belajar-python-itu-seru
print(len(kata)) # 4 kata
Sudah jalan di list Sesi 11 — split() tanpa argumen otomatis rapikan spasi ganda.
Ini jembatan dua dunia: teks ↔ list. Kalau butuh hitung kata — gunting dulu, hitung len()-nya.
nama = "Kevin"
umur = 16
print(f"Halo {nama}, umur {umur}")
# Halo Kevin, umur 16
print(f"Tahun depan: {umur + 1}")
# Tahun depan: 17 — bisa hitung di dalam!
# cara lama yang error:
# print("Umur: " + umur) # TypeError!
# teks + angka tidak bisa di +
Tanpa huruf f, {nama} tercetak apa adanya — bukan isinya. Satu huruf kecil, efek besar.
in · find · count — detektif teksteks = "Halo Kevin, umur 16"
print("Kevin" in teks) # True
print(teks.find("umur")) # 12
print(teks.find("keluar")) # -1 (tidak ada!)
print(teks.count("a")) # 2
Perhatikan -1: bukan nol, bukan error — itu kode rahasia Python untuk "tidak ketemu". Hafalkan.
in dan find itu pencarian persis — beda huruf besar/kecil dianggap teks berbeda. Rendahkan dulu dengan lower() kalau mau pencarian longgar.
berita = "eksul coding st john buka pendaftaran": pecah dengan split(), cetak jumlah katanya, lalu gabung lagi dengan "-"."coding" ada atau tidak (in), di posisi berapa (find), dan huruf "a" muncul berapa kali (count)."coding" in berita · berita.find("coding") · berita.count("a") — cocokkan tebakanmu!
Waktu: 10 menit. Ini persis kerja pembersih data nyata: pecah → cek → olah. Challenge berikutnya pakai semuanya.
input() — user bebas ngetik acak: spasi berlebih, kapital kacaustrip().title() — simpan ke nama_rapilen() panjangnya, versi lower(), dan cek awalan "b"strip() & title() dari slide 07-08 · len() dari slide 04 · lower() slide 07 · indexing [0] slide 04. Semua sudah dipelajari hari ini — ini digabung, bukan dipelajari baru.
Spasi diinput tidak terlihat — tapi hasilnya rapi. Itu bukti programmu bekerja.
Waktu: 20 menit. Mentok? Slide pembahasan menunggu — coba dulu minimal 10 menit!
nama_kotor = input("Masukkan nama: ")
nama_rapi = nama_kotor.strip().title()
print("Nama rapi :", nama_rapi)
print("Panjang :", len(nama_rapi))
print("Huruf kecil:", nama_rapi.lower())
print("Awalan 'b'?", nama_rapi[0].lower() == "b")
strip().title() — urutan penting: bersihkan dulu, baru kapitalisasi. Dibalik, hasilnya tetap kotor.nama_rapi — kunci immutable: tanpa =, hasilnya hilang.nama_rapi[0].lower() == "b" — ambil huruf pertama, samakan bentuk, bandingkan.Awalan juga bisa dicek: nama_rapi.startswith("b") atau nama_rapi.startswith("B") — hasil sama. Bonus untuk yang cepat: proses tiga nama dalam list pakai loop (ada di kode.py bagian kumulatif).
Yang sampai sini dengan usaha sendiri — kamu sudah nulis program pembersih data pertamamu. Kerja developer sungguhan itu!
nama = "budi"
nama.upper() # hasil dibuang!
print(nama) # "budi" — tetap kecil
Gejala: "kok nggak berubah?" — method string mengembalikan string baru, tidak menyentuh aslinya. Simpan: nama = nama.upper(). Bandingkan list: nilai.append(95) memang mengubah aslinya.
nama = input("Nama: ")
# user ngetik: " budi "
print(len(nama)) # 7, bukan 4!
Gejala: perbandingan selalu gagal — " budi" == "budi" itu False, spasi dihitung. Ritual wajib: input().strip() — tiap kali, tanpa kecuali.
teks = "halo"
print(teks.find("x")) # -1
if teks.find("x"): # -1 dianggap True!
print("ada") # salah!
Gejala: cek "ada/tidak" pakai find() di if — -1 bukan False di Python! Untuk cek ada/tidak pakai in yang mengembalikan True/False murni. find() hanya untuk mencari posisi.
Senjata debug: cetak sebelum-sesudah — print(nama) sebelum method, sesudahnya lagi. Kalau keduanya sama, berarti hasil method-nya tidak disimpan.
teks[0], teks[-1], slicing teks[1:4] (kanan eksklusif), len()upper lower strip title replace — bisa dirangkai: input().strip().title()split gunting (str→list) · join lem (list→str) · f-string f"Halo {nama}" = rangkai apa saja tanpa TypeErrorin ada/tidak · find() posisi atau -1 · count() jumlah kemunculanSemua bahan sudah kamu pegang —
minggu depan dirangkai jadi aplikasi utuh.
List sebagai data + fungsi sebagai fitur + while True sebagai mesin menu: lihat · tambah · hapus · keluar — plus fitur Cari dari lower() yang hari ini kamu kuasai.
bersih.py: strip + title nama kotor → hitung len & cek insplit(",") pada "apel,jeruk,mangga" lalu " - ".join(...)strip().title().upper() di kertas + tebak output-nya