Soal 1Ketika word = "python", berapa nilai word[-2]?
Cara Menggunakan String Python (str)
Pelajari tipe string Python (str) dari dasar. Cakup deklarasi, indexing dan slicing, serta metode transformasi dan pemeriksaan utama.
Membuat string
String (str) adalah tipe yang merepresentasikan "urutan karakter". Di Python, nilai apa pun yang dibungkus tanda kutip adalah str.
Ada tiga cara untuk membungkus string, dan kamu memilih yang paling sesuai dengan situasinya.
Ketiganya menghasilkan tipe str yang sama.
Pilihannya tergantung pada "simbol apa yang muncul di dalam teks" dan "apakah kamu butuh baris baru."
Kalau kamu ingin menyertakan baris baru, gunakan escape sequence \n atau bungkus teks dengan kutip triple.
# Kutip tunggal/ganda untuk string satu baris
fruit1 = 'apple'
fruit2 = "banana"
# Kalau teks berisi ', pakai " lebih mudah
message = "it's a pen"
# Untuk menyertakan baris baru -> pakai \n atau kutip triple
text_a = "apple\nbanana\ngrape"
text_b = """apple
banana
grape"""
print(fruit1, fruit2) # apple banana
print(message) # it's a pen
print(text_a) # tampil dalam 3 baris
print(text_b) # hasil sama dengan text_a
Mengambil karakter berdasarkan posisi (indexing dan slicing)
Kamu juga bisa mengambil karakter dari string berdasarkan posisi (indeks).
Yang penting adalah indeks dimulai dari 0. Karakter pertama bukan "posisi 1" — melainkan posisi 0.
Mengambil satu karakter — [i]
Tulis string[posisi] untuk mengambil satu karakter di posisi tersebut.
Gunakan angka negatif untuk menghitung dari akhir. -1 adalah karakter paling terakhir.
fruit = "lemon" # l e m o n
print(fruit[0]) # l (pertama)
print(fruit[2]) # m (ke-3)
print(fruit[-1]) # n (terakhir)
print(fruit[-2]) # o (ke-2 dari akhir)
# Keluar dari rentang memicu error
# print(fruit[10]) # IndexError
Mengambil rentang — slicing dengan [a:b]
Tulis string[awal:akhir] untuk mengambil semuanya dari posisi awal sampai, tetapi tidak termasuk, posisi akhir. Ini disebut slice.
Poin pentingnya adalah rentang setengah terbuka — "sampai satu sebelum akhir." [0:3] memberimu posisi 0, 1, dan 2 (tiga karakter), dan tidak termasuk 3.
[a:b] termasuk a dan tidak termasuk b.
Hilangkan a untuk mulai dari awal; hilangkan b untuk sampai akhir.
Angka negatif juga bisa — [-3:] adalah 3 karakter terakhir.
msg = "0123456789"
print(msg[0:3]) # '012' (3 tidak termasuk)
print(msg[:4]) # '0123' (dari awal)
print(msg[4:]) # '456789'(sampai akhir)
print(msg[-3:]) # '789' (3 karakter terakhir)
print(msg[:-3]) # '0123456'(semua kecuali 3 terakhir)
Kamu juga bisa menambahkan angka ketiga — [awal:akhir:step] — untuk memilih setiap beberapa karakter. [::2] mengambil setiap karakter ke-2.
Namun, menjejalkan step dan rentang dalam satu baris jadi sulit dibaca, jadi untuk slice yang lebih panjang sebaiknya dipisah ke dua baris.
msg = "0123456789"
# [::step] melompat-lompat di string
print(msg[::2]) # '02468' (setiap ke-2)
print(msg[::3]) # '0369' (setiap ke-3)
# Memisahkan step ke baris sendiri lebih enak dibaca
head = msg[:6] # '012345'
skip = head[::2] # '024' (setiap ke-2)
print(skip)
Metode yang mentransformasi string
String punya fitur bawaan yang menghasilkan string baru berdasarkan yang asli, dan itu disebut metode.
Kamu memanggilnya dengan menulis variabel.nama_metode(). Poin pentingnya adalah string asli tidak pernah berubah — string baru yang dikembalikan.
Menyamakan huruf besar/kecil — upper / lower
upper() mengubah jadi huruf besar semua, dan lower() mengubah jadi huruf kecil semua.
Penggunaan paling umum adalah membandingkan string sambil mengabaikan perbedaan huruf besar/kecil. Nama dan alamat email yang diketik user sering datang dengan casing tidak konsisten, jadi kamu menormalkan keduanya ke casing yang sama sebelum membandingkan.
name = "Alice"
print(name.lower()) # alice
print(name.upper()) # ALICE
print(name) # Alice (asli tidak berubah)
# Cek apakah dua nama cocok, mengabaikan huruf besar/kecil
input_a = "ALICE"
input_b = "alice"
print(input_a.lower() == input_b.lower()) # True
Mengganti isi dan memangkas tepi — replace / strip
replace("sebelum", "sesudah") mengembalikan string baru di mana setiap "sebelum" diganti dengan "sesudah".
strip() adalah metode yang menghapus spasi di kedua ujung. Cocok sekali untuk membersihkan spasi nyasar yang tidak sengaja ter-paste user ke form.
greeting = "Hello World"
print(greeting.replace("World", "Python")) # Hello Python
print(greeting) # Hello World (asli tidak berubah)
# Pangkas spasi nyasar (hanya tepi — spasi di dalam tetap)
raw = " alice@example.com "
print(raw.strip()) # 'alice@example.com'
print(len(raw)) # 21 (termasuk spasi)
print(len(raw.strip())) # 17 (spasi hilang)
Metode yang memeriksa string
Berikutnya adalah metode yang tidak mengubah nilai — hanya memberitahumu sesuatu tentang string.
Metode ini menghitung kemunculan karakter, memeriksa bagian awal atau akhir, mencari posisi, dan memeriksa jenis karakter apa yang ada di dalamnya.
Memeriksa isinya — count / startswith / endswith / find
- count("teks") — mengembalikan berapa kali
teksmuncul, sebagai angka - startswith("teks") — mengembalikan apakah string dimulai dengan
teks(True / False) - endswith("teks") — mengembalikan apakah string diakhiri dengan
teks(True / False) - find("teks") — mengembalikan posisi kecocokan pertama. Kalau tidak ditemukan, mengembalikan
-1
msg = "abcCBAabc"
print(msg.count("a")) # 3 (ada 3 huruf a)
print(msg.count("abc")) # 1 ('abc' sebagai rangkaian hanya muncul sekali)
print(msg.startswith("abc")) # True
print(msg.endswith("abc")) # True
print(msg.find("CBA")) # 3 (mulai dari posisi 3)
print(msg.find("xyz")) # -1 (tidak ditemukan, jadi -1)
endswith adalah andalan untuk ekstensi file
Sesuatu seperti filename.endswith(".png") memberimu cara cepat untuk memeriksa apakah sebuah file adalah gambar. Metode ini membedakan huruf besar/kecil, jadi kalau casing-nya bisa campur aduk, pakai filename.lower().endswith(".png") supaya aman.
Memeriksa jenis karakter — isdigit / isalpha / islower / isupper
Keluarga metode is...() mengembalikan True / False berdasarkan apakah seluruh string memenuhi kondisinya. Perhatikan bahwa satu spasi atau simbol saja yang tercampur sudah cukup untuk membuatnya mengembalikan False.
| Metode | Mengembalikan True ketika |
|---|---|
| isdigit() | setiap karakter adalah digit (0–9) |
| isalpha() | setiap karakter adalah huruf, termasuk karakter CJK (False kalau ada spasi, digit, atau simbol yang tercampur) |
| isupper() | setiap huruf adalah huruf besar |
| islower() | setiap huruf adalah huruf kecil |
print("123".isdigit()) # True
print("12a".isdigit()) # False (ada 'a' yang tercampur)
print("Tokyo".isalpha()) # True
print("Tokyo 2024".isalpha())# False (berisi spasi dan digit)
print("HELLO".isupper()) # True
print("Hello".islower()) # False
Jangan pakai isdigit untuk mengecek "apakah ini bisa jadi angka"
isdigit() hanya mengembalikan True untuk string yang terlihat seperti bilangan bulat non-negatif. "-12" dan "3.14" keduanya mengembalikan False. Kalau kamu perlu menangani string dengan tanda minus atau titik desimal sebagai angka, lewati isdigit() dan sebagai gantinya teruskan string ke int() / float() lalu gunakan exception handling untuk memeriksa apakah berhasil.
Di artikel ini kamu sudah mempelajari tiga jenis kutip, cara mengambil karakter dengan indexing dan slicing, dan serangkaian metode transformasi dan pemeriksaan.
String adalah salah satu tipe yang paling sering kamu pakai dalam sebuah program. Metode-metode yang ditunjukkan di sini bisa langsung dipakai kembali ketika kamu mulai menangani input user di artikel-artikel berikutnya, jadi luangkan waktu sedikit untuk menjalankan contohnya agar terbiasa.
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Ketika s = "abcdefg", berapa nilai s[1:4]?
Soal 3Apa hasil dari " Hello World ".strip().lower()?