stdsquare²
🎓 Kelas
stdsquare / materi / slides / pertemuan-04
Tema
Japan
Arcade
Dark Retro
Font
‹ Daftar slide Pertemuan 4: Konsep String: Indexing, Slicing, dan Method
Program Studi Bisnis Digital • FEB UNDIP

Algoritma dan Pemrograman

Pertemuan 4 — Konsep String: Indexing, Slicing, dan Method

Cara Python menyimpan dan mengolah teks: dari mengambil satu huruf sampai membersihkan data pelanggan yang berantakan.

RPS MINGGU 4 • 2X50 MENIT

Tujuan Pembelajaran Hari Ini

Setelah pertemuan ini, Anda mampu:

TUJUAN 1–2
  • Menjelaskan bahwa string adalah urutan karakter yang tiap karakternya punya posisi (indeks).
  • Mengambil karakter tertentu dari string memakai indexing positif maupun negatif.
TUJUAN 3–4
  • Memotong sebagian teks memakai slicing [start:stop:step].
  • Menerapkan method string (upper, strip, replace, split, dsb.) untuk membersihkan data teks nyata.
Konteks: seluruh contoh hari ini memakai data khas bisnis digital Indonesia — nama toko, kode voucher, dan input pelanggan dari marketplace seperti Tokopedia.

Mengapa String Penting di Bisnis Digital?

Coba lihat data pelanggan mentah dari formulir checkout sebuah toko online berikut ini.

CONTOH DATA MENTAH — FORM CHECKOUT
nama_input  = " Siti Aminah "
email_input = "SITI.AMINAH@GMAIL.COM"
kode_promo  = "diskon10-tokopedia"
Masalah: ada spasi berlebih, huruf besar-kecil tidak konsisten, dan kode promo perlu diuraikan jadi bagian-bagian. Semua ini butuh method string untuk dibereskan sebelum data disimpan ke database.

Apa itu String?

Dalam Python, string (disingkat str) adalah tipe data untuk menyimpan teks — kumpulan karakter yang diapit tanda kutip.

nama = "Tokopedia"
KUTIP TUNGGAL / GANDA
  • 'Bisnis Digital' — kutip tunggal
  • "Bisnis Digital" — kutip ganda
  • Keduanya setara di Python, boleh dipilih salah satu, asal konsisten.
CATATAN PENTING
  • String bersifat immutable (glos: tidak bisa diubah langsung per karakter setelah dibuat — harus buat string baru).
  • Bahkan angka dalam kutip, misal "22", dianggap teks, bukan angka.

String = Deret Karakter Berindeks

Setiap karakter dalam string punya posisi (indeks), dimulai dari 0, bukan 1.

Variabel: toko = "TOKPED"TOKPEDindeks 0indeks 1indeks 2indeks 3indeks 4indeks 5indeks -6indeks -5indeks -4indeks -3indeks -2indeks -1
Panjang string "TOKPED" = 6 karakter, tetapi indeks tertingginya adalah 5 (karena mulai dari 0). Ini yang paling sering membuat pemula salah hitung.

Sintaks Indexing di Python

Gunakan tanda kurung siku [ ] setelah nama variabel string untuk mengambil satu karakter.

CONTOH KODE
toko = "TOKPED"

print(toko[0])  # Output: T (karakter pertama)
print(toko[2])  # Output: K
print(toko[-1]) # Output: D (karakter terakhir)
print(toko[6])  # Error! IndexError, indeks maksimal cuma 5
Jebakan umum (glos IndexError): pesan galat yang muncul saat mengakses indeks yang tidak ada dalam string — indeks maksimal string sepanjang n karakter adalah n-1, bukan n.

Hitung dari Nol: Indexing "TOKOPEDIA"

Variabel platform = "TOKOPEDIA" (9 karakter). Ambil huruf ke-4 dari depan dan huruf ke-3 dari belakang.

LANGKAH PERHITUNGAN
LangkahPerhitunganNilai
Panjang stringhitung karakter T-O-K-O-P-E-D-I-A9 karakter
Rentang indeks positif0 sampai (9−1)0 – 8
Huruf ke-4 dari depan → indeksposisi ke-4, mulai hitung dari 0indeks 3
platform[3]T(0) O(1) K(2) O(3)"O"
Huruf ke-3 dari belakang → indeks−1, −2, −3indeks -3
platform[-3]A(-1) I(-2) D(-3)"D"
HASIL AKHIR
"O" & "D"
platform[3] dan platform[-3]
Selalu tulis dulu deretan karakter dengan nomor indeksnya di kertas coretan sebelum menebak — cara ini menghindarkan Anda dari salah hitung off-by-one.

Slicing: Memotong Sebagian Teks

Slicing mengambil rentang karakter, bukan hanya satu, dengan sintaks string[start:stop:step].

nama[start:stop:step]
START
Indeks awal (ikut terambil). Kosong = mulai dari awal string.
STOP
Indeks batas akhir (TIDAK ikut terambil). Kosong = sampai akhir string.
STEP
Lompatan antar-karakter. Kosong = 1 (ambil semua berurutan). Negatif = mundur/dibalik.
Aturan paling penting: indeks stop tidak pernah ikut terambil — nama[0:3] mengambil indeks 0, 1, 2 saja, TIDAK termasuk indeks 3.

Contoh Slicing dalam Kode

kode_produk = "BD-2026-0417"
kode_produk = "BD-2026-0417"

print(kode_produk[0:2])  # "BD" (indeks 0,1)
print(kode_produk[3:7])  # "2026" (indeks 3,4,5,6)
print(kode_produk[8:])    # "0417" (dari indeks 8 sampai akhir)
print(kode_produk[::-1]) # "7140-6202-DB" (dibalik seluruhnya)
Slicing sangat berguna untuk menguraikan kode berformat tetap, seperti kode produk UMKM "BD-2026-0417" yang punya struktur: 2 huruf kategori, tahun, dan nomor urut.
Bagian 2 dari 3
Operasi & Method String
Setelah bisa mengambil dan memotong teks, sekarang kita pelajari perkakas siap pakai Python untuk membersihkan, mengubah, dan mencari isi string.

Operasi Dasar String

Sebelum ke method, kenali dulu operator dasar yang bisa langsung dipakai pada string.

PENGGABUNGAN & PENGULANGAN
nama = "Toko" + " " + "Maju"
# "Toko Maju"

garis = "-" * 10
# "----------"
PANJANG & PENGECEKAN ISI
len("Tokopedia") # 9

"toko" in "tokopedia"
# True (glos: benar)
Operator + menyambung string (glos: concatenation), * mengulang string, len() menghitung jumlah karakter, dan in mengecek apakah suatu teks ada di dalam teks lain.

Method Mengubah Kapitalisasi

Empat method paling umum untuk menstandardisasi format huruf pada data teks.

MethodFungsiContoh
.upper()Semua huruf jadi KAPITAL"siti".upper() → "SITI"
.lower()Semua huruf jadi kecil"SITI".lower() → "siti"
.title()Huruf Awal Tiap Kata Kapital"toko maju".title() → "Toko Maju"
.capitalize()Hanya huruf pertama kalimat kapital"toko maju".capitalize() → "Toko maju"
Kasus nyata: sebelum menyimpan email pelanggan ke database, praktik umum adalah memakai .lower() supaya "SITI@GMAIL.COM" dan "siti@gmail.com" dikenali sebagai email yang sama.

Method Membersihkan Teks

Method untuk menghapus spasi berlebih dan mengganti sebagian teks — sangat sering dipakai saat membersihkan input pengguna.

.strip() — HAPUS SPASI TEPI
nama = " Siti Aminah "
nama.strip()
# "Siti Aminah"
# (spasi tengah tetap ada)
.replace(lama, baru) — GANTI TEKS
no_hp = "0812-3456-7890"
no_hp.replace("-", "")
# "081234567890"
Ingat sifat immutable: .strip() dan .replace() tidak mengubah variabel asli, melainkan mengembalikan string baru — harus ditampung ke variabel, misal nama = nama.strip().

Method Pencarian & Pemecahan Teks

.find() & .split()
email = "siti@gmail.com"
email.find("@")
# 4 (posisi tanda @)

kode = "BD-2026-0417"
kode.split("-")
#BD20260417
.join()
bagian =BD20260417
"-".join(bagian)
# "BD-2026-0417"

# kebalikan dari split()
Glos: list (hasil .split()) adalah kumpulan nilai berurutan dalam satu variabel, ditandai tanda kurung siku — akan dibahas mendalam Pertemuan 7.

Coba Sendiri: Indexing, Slicing, dan Rantai Method String

Ketik string sendiri, geser posisi index/slice (termasuk index negatif), dan tambahkan method berantai untuk melihat hasilnya tahap demi tahap.

Hitung dari Nol: Membersihkan Data Pelanggan

Input mentah: email_mentah = " SITI.AMINAH@GMAIL.COM ". Bersihkan menjadi format standar database.

LANGKAH PENGOLAHAN (WALKTHROUGH)
LangkahOperasiHasil Sementara
1. Data mentah"  SITI.AMINAH@GMAIL.COM  "
2. Hapus spasi tepi.strip()"SITI.AMINAH@GMAIL.COM"
3. Ubah ke huruf kecil.lower()"siti.aminah@gmail.com"
4. Cek posisi "@".find("@")indeks 11
5. Ambil bagian username[0:11] → slicing"siti.aminah"
EMAIL SIAP SIMPAN
siti.aminah@gmail.com
gabungan strip → lower → find → slicing
Ini adalah pola nyata yang dipakai sistem pendaftaran akun: rangkaian method dipanggil berurutan (method chaining) untuk membersihkan satu input mentah.
Bagian 3 dari 3
Studi Kasus & Latihan
Sekarang kita terapkan indexing, slicing, dan method sekaligus pada dua kasus khas bisnis digital: validasi input dan penguraian kode produk.

Studi Kasus: Validasi Nomor HP Pelanggan

Sistem toko online perlu memastikan nomor HP pelanggan diawali kode operator yang benar sebelum mengirim OTP (glos: One Time Password, kode sekali pakai untuk verifikasi).

LOGIKA PROGRAM (PSEUDOCODE + PYTHON)
no_hp = "0812-3456-7890"
no_hp_bersih = no_hp.replace("-", "")
# "081234567890"

tiga_digit_awal = no_hp_bersih[0:3]
# "081"

if tiga_digit_awal == "081" or tiga_digit_awal == "082":
    print("Nomor valid, kirim OTP")
else:
    print("Format nomor tidak dikenali")
Perhatikan: kita gabungkan method (.replace()) dengan slicing ([0:3]) dan struktur if/else dari Pertemuan 3 — ilmu tidak berdiri sendiri, semua saling terhubung.

Studi Kasus: Menguraikan Kode Produk UMKM

Sebuah UMKM menyimpan kode produk dengan format "KATEGORI-TAHUN-NOMOR", misalnya "MKN-2026-0089" (MKN = Makanan).

WALKTHROUGH PENGURAIAN
kode = "MKN-2026-0089"
bagian = kode.split("-")
# bagian =MKN20260089

kategori = bagian[0]  # "MKN"
tahun    = bagian[1]  # "2026"
nomor    = bagian[2]  # "0089"

print(f"Produk kategori {kategori}, tahun {tahun}")
# Output: Produk kategori MKN, tahun 2026
Alternatif tanpa split: kode[0:3] untuk kategori, kode[4:8] untuk tahun — tetapi .split() lebih aman kalau panjang tiap bagian bisa berubah-ubah.

Latihan Kelas: Coba Sendiri

Kerjakan berpasangan dengan teman sebangku selama 10 menit, lalu kita bahas bersama.

SOAL 1 — INDEXING & SLICING
Variabel toko = "WARUNGDIGITAL". Tentukan: (a) huruf pada toko[5], (b) hasil dari toko[-4:], (c) berapa panjang string ini menurut len().
SOAL 2 — METHOD
Variabel ulasan = " Barangnya BAGUS sekali!! ". Tulis kode Python untuk: (a) menghapus spasi tepi, (b) mengubah semua huruf jadi kecil, (c) mengganti "!!" dengan "!".
Petunjuk: kerjakan di kertas dulu dengan menomori tiap huruf sebelum mengetik ke komputer — kebiasaan ini mengurangi kesalahan off-by-one secara drastis.

Rangkuman & Persiapan Minggu Depan

CHEAT SHEET PERTEMUAN 4
KonsepSintaks
Indexingteks[i], negatif dari -1
Slicingteks[start:stop:step]
Kapitalisasi.upper() .lower() .title()
Pembersihan.strip() .replace()
Pencarian/Split.find() .split() .join()
MINGGU DEPAN — PERTEMUAN 5
Text Files & Exception
Membaca/menulis file .txt, try/except
Kita akan memakai kemampuan mengolah string hari ini untuk membaca data dari file teks sungguhan, sekaligus belajar menangani error dengan try/except supaya program tidak langsung crash.