Anda di halaman 1dari 62

CHAPTER 5

Functions and String Manipulations


BAGIAN 1
Functions
Pemanggilan Function

• Dalam konteks pemrograman, sebuah function didefinisikan sebagai urutan


dari pernyataan-pernyataan bermakna yang dipakai untuk melakukan
komputasi.
• Saat Anda mendefinisikan suatu function, Anda menentukan nama dan urutan
pernyataan. Kemudian, Anda dapat "memanggil" fungsi dengan nama.
>>> type(32)
Recall the Following Function <class 'int'>

• Nama function tersebut adalah type.


• Ekspresi dalam () disebut argumen fungsi.
• Argumen adalah nilai atau variabel yang kita lewati ke dalam fungsi
sebagai input ke fungsi. Hasilnya, untuk fungsi type, adalah tipe
argumen.
• Adalah umum untuk mengatakan bahwa suatu fungsi "mengambil"
argumen dan "mengembalikan" hasilnya. Hasilnya disebut nilai balik.
Function Bawaan Python

• Python menyediakan sejumlah fungsi bawaan penting yang dapat kita


gunakan tanpa perlu memberikan definisi fungsi. Pembuat Python
menulis serangkaian fungsi untuk memecahkan masalah umum dan
memasukkannya ke dalam Python untuk kita gunakan.
• Fungsi max dan min masing-masing memberi kita nilai terbesar dan terkecil
dalam suatu list
• Fungsi len yang memberi tahu kita berapa banyak item dalam argumennya. Jika
argumen ke len adalah string, ia mengembalikan jumlah karakter dalam string.
• Fungsi-fungsi ini tidak terbatas pada string. Mereka dapat beroperasi
pada set nilai apa pun, seperti yang akan kita lihat di bab-bab
selanjutnya.
• Anda harus memperlakukan nama fungsi bawaan sebagai kata yang
dicadangkan (yaitu, hindari menggunakan "max" sebagai nama variabel).
>>> max('Hello world') and many more...
>>> len('Hello world')
'w'
11
>>> min('Hello world')
>>>
''
>>>
Fungsi Pengubah Tipe Data
• Python juga menyediakan fungsi bawaan yang >>> float(32)
mengubah nilai dari satu jenis ke jenis lainnya. 32.0
• Fungsi int mengambil nilai apa pun dan mengubahnya menjadi >>> float('3.14159')
bilangan bulat, jika bisa, atau mengeluh sebaliknya. 3.14159
• int dapat mengonversi nilai floating-point menjadi bilangan
bulat, tetapi tidak membulatkan; itu memotong bagian >>> str(32)
pecahan '32'
• float mengubah bilangan bulat dan string menjadi angka >>> str(3.14159)
floating-point '3.14159'
• str mengubah argumennya menjadi string.

>>> int('32') >>> int(3.99999)


32 3
>>> int('Hello') >>> int(-2.3)
ValueError: invalid literal for int() with base 10: 'Hello' -2
Math Functions
>>> import math

• Python memiliki modul math yang menyediakan sebagian


besar fungsi matematika yang sudah dikenal.
• Sebelum kita dapat menggunakan modul, kita harus >>> print(math)
mengimpornya. <module 'math' (built-in)>
• Pernyataan ini membuat module object bernama math.
• Jika Anda mencetak module object, Anda mendapatkan
beberapa informasi tentangnya.
• module berisi fungsi dan variabel yang didefinisikan dalam
module.
• Untuk mengakses salah satu fungsi, Anda harus
menentukan nama modul dan nama fungsi, dipisahkan
oleh titik (juga dikenal sebagai period). Format ini disebut
notasi titik.
>>> ratio = signal_power / noise_power
>>> derajat = 45
>>> decibels = 10 * math.log10(ratio)
>>> radian = derajat / 360,0 * 2 * math.pi
>>> math.sin(radian)
>>> radians = 0.7
0.7071067811865476
>>> height = math.sin(radians)

• Contoh pertama menghitung basis logaritma 10 dari rasio >>> math.sqrt(2) / 2.0
signal-to-noise. Modul matematika juga menyediakan 0.7071067811865476
fungsi yang disebut log yang menghitung basis logaritma e.
• Contoh kedua menemukan sinus radian. Nama variabel
adalah petunjuk bahwa sin dan fungsi trigonometri lainnya
(cos, tan, dll.) menggunakan argumen dalam radian. Untuk
mengkonversi dari derajat ke radian, bagi dengan 360 dan
kalikan dengan 2π.
• Ekspresi math.pi mendapatkan variabel pi dari modul
matematika. Nilai variabel ini adalah perkiraan , akurat
hingga sekitar 15 digit.
• Jika Anda mengetahui trigonometri Anda, Anda dapat
memeriksa hasil sebelumnya dengan membandingkannya
dengan akar kuadrat dari dua dibagi dua.
Bilangan Random

• Mengingat input yang sama, sebagian besar program komputer menghasilkan


output yang sama setiap waktu, sehingga dikatakan deterministik.
• Determinisme biasanya merupakan hal yang baik, karena kita mengharapkan
perhitungan yang sama menghasilkan hasil yang sama. Namun, untuk
beberapa aplikasi, kita ingin komputer tidak dapat diprediksi. Game adalah
contoh yang jelas, tetapi ada lebih banyak lagi.
• Membuat program benar-benar nondeterministik ternyata tidak mudah,
tetapi ada cara untuk membuatnya setidaknya tampak nondeterministik.
Salah satunya adalah dengan menggunakan algoritma yang menghasilkan
angka pseudorandom. Angka pseudorandom tidak benar-benar acak karena
dihasilkan oleh perhitungan deterministik, tetapi hanya dengan melihat
angka-angka itu tidak mungkin untuk membedakannya dari acak.
import random

Eksekusi random() for i in range(10):


x = random.random()
print(x)

• Fungsi random mengembalikan float acak antara


0,0 dan 1,0 (termasuk 0,0 tetapi tidak 1,0). Setiap 0.11132867921152356
kali Anda memaggil random, Anda mendapatkan 0.5950949227890241
bilangan berikutnya dalam rangkaian yang 0.04820265884996877
panjang. Untuk melihat sampel, jalankan loop ini: 0.841003109276478
0.997914947094958
• Program ini menghasilkan daftar 10 angka acak
0.04842330803368111
berikut antara 0,0 dan hingga tetapi tidak
0.7416295948208405
termasuk 1,0.
0.510535245390327
0.27447040171978143
0.028511805472785867
>>> random.randint(5, 10)
5
Contoh Fungsi Lainnya >>> random.randint(5, 10)
9

• Fungsi acak hanyalah salah satu dari banyak fungsi >>> t = [1, 2, 3]
yang menangani bilangan acak. Fungsi randint >>> random.choice(t)
mengambil parameter rendah dan tinggi, dan 2
mengembalikan bilangan bulat antara rendah dan >>> random.choice(t)
tinggi (termasuk keduanya). 3
• Untuk memilih elemen dari urutan secara acak, Anda
dapat menggunakan choice:
• Modul random juga menyediakan fungsi untuk
menghasilkan nilai acak dari distribusi kontinu
termasuk Gaussian, eksponensial, gamma, dan
beberapa lainnya.
Menambahkan Fungsi Baru

• Sejauh ini, kita hanya menggunakan function bawaan dengan


Python, tetapi sebenernya dimungkinkan bagi kita untuk
menambahkan function baru.
• Pendefinisian function menyebutkan nama fungsi barunya dan
urutan pernyataan yang dijalankan ketika fungsi dipanggil.
• Setelah kita mendefinisikan suatu fungsi, kita dapat menggunakan
kembali fungsi tersebut berulang kali di seluruh program kita.

def print_lyrics():
print("I'm a lumberjack, and I'm okay.")
print('I sleep all night and I work all day.')
Bagian-Bagian dari Sebuah Fungsi

• def adalah kata kunci yang menunjukkan bahwa ini adalah definisi fungsi. Nama
fungsinya adalah print_lyrics.
• Aturan untuk nama fungsi sama dengan nama variabel: huruf, angka, dan beberapa
tanda baca diperbolehkan, tetapi karakter pertama tidak boleh berupa angka.
• Anda tidak dapat menggunakan kata kunci sebagai nama fungsi, dan Anda harus
menghindari variabel dan fungsi dengan nama yang sama.
• Tanda kurung kosong setelah nama menunjukkan bahwa fungsi ini tidak mengambil
argumen apa pun. Nanti kita akan membangun fungsi yang mengambil argumen sebagai
inputnya.
• Baris pertama dari definisi fungsi disebut header; sisanya disebut tubuh. Header harus
diakhiri dengan titik dua dan body harus menjorok. Dengan konvensi, lekukan selalu
empat spasi. Tubuh dapat berisi sejumlah pernyataan.
Bagaimana Menuliskan Function pada Mode
Interaktif?
>>> def print_lyrics():
... print("I'm a lumberjack, and I'm okay.")
• Jika Anda mengetikkan definisi fungsi ... print('I sleep all night and I work all day.')
dalam mode interaktif, penerjemah ...
akan mencetak elips (...) untuk
memberi tahu Anda bahwa definisi
tersebut belum lengkap. >>> print(print_lyrics)
• Untuk mengakhiri fungsi, Anda harus <function print_lyrics at 0xb7e99e9c>
memasukkan baris kosong (ini tidak >>> print(type(print_lyrics))
diperlukan dalam skrip). <class 'function'>
• Mendefinisikan fungsi membuat
variabel dengan nama yang sama.
• Nilai print_lyrics adalah objek fungsi,
yang memiliki tipe “fungsi”.
Implementasi Fungsi pada Fungsi Lain
>>> print_lyrics()
• Sintaks untuk memanggil fungsi baru sama I'm a lumberjack, and I'm okay.
dengan fungsi bawaan. I sleep all night and I work all day.
• Setelah Anda mendefinisikan suatu fungsi, Anda def repeat_lyrics():
dapat menggunakannya di dalam fungsi lain. print_lyrics()
• Misalnya, untuk mengulang refrein sebelumnya, print_lyrics()
kita bisa menulis sebuah fungsi yang disebut
repeat_lyrics. >>> repeat_lyrics()
I'm a lumberjack, and I'm okay.
• Dan kemudian panggil repeat_lyrics, tapi itu
I sleep all night and I work all day.
tidak benar-benar bagaimana lagunya. I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.
Definisi dan Penggunaan Fungsi
• Menggabungkan bersama-sama fragmen
kode dari bagian sebelumnya, seluruh def print_lyrics():
program terlihat seperti ini. print("I'm a lumberjack, and I'm okay.")
• Program ini berisi dua definisi fungsi: print('I sleep all night and I work all day.')
print_lyrics dan repeat_lyrics. Definisi fungsi
dieksekusi seperti pernyataan lain, tetapi
efeknya adalah membuat objek fungsi. def repeat_lyrics():
• Pernyataan di dalam fungsi tidak dieksekusi print_lyrics()
sampai fungsi dipanggil, dan definisi fungsi print_lyrics()
tidak menghasilkan keluaran.
• Seperti yang Anda harapkan, Anda harus repeat_lyrics()
membuat fungsi sebelum dapat
menjalankannya. Dengan kata lain, definisi
fungsi harus dieksekusi sebelum pertama kali
dipanggil.
Flow Eksekusi Fungsi

• Untuk memastikan bahwa suatu fungsi didefinisikan sebelum digunakan pertama


kali, Anda harus mengetahui urutan eksekusi pernyataan, yang disebut alur eksekusi.
• Eksekusi selalu dimulai pada pernyataan pertama program. Pernyataan dieksekusi
satu per satu, dalam urutan dari atas ke bawah. Definisi fungsi tidak mengubah alur
eksekusi program, tetapi ingat bahwa pernyataan di dalam fungsi tidak dieksekusi
sampai fungsi dipanggil.
• Panggilan fungsi seperti jalan memutar dalam aliran eksekusi. Alih-alih pergi ke
pernyataan berikutnya, aliran melompat ke tubuh fungsi, mengeksekusi semua
pernyataan di sana, dan kemudian kembali untuk melanjutkan di mana ia tinggalkan.
Flow Eksekusi Fungsi (Lanjutan)

• Kedengarannya cukup sederhana, sampai Anda ingat bahwa satu fungsi dapat
memanggil yang lain.
• Saat berada di tengah satu fungsi, program mungkin harus mengeksekusi pernyataan
di fungsi lain. Tetapi saat menjalankan fungsi baru itu, program mungkin harus
menjalankan fungsi lain!
• Untungnya, Python pandai melacak di mana letaknya, jadi setiap kali suatu fungsi
selesai, program mengambil tempat yang ditinggalkannya dalam fungsi yang
memanggilnya. Ketika sampai ke akhir program, itu berakhir.
• Apa moral dari kisah mesum ini? Saat Anda membaca sebuah program, Anda tidak
selalu ingin membaca dari atas ke bawah. Terkadang lebih masuk akal jika Anda
mengikuti alur eksekusi.
Parameter dan Argumen
def print_twice(bruce):
• Beberapa fungsi bawaan yang telah kita lihat print(bruce)
memerlukan argumen. Misalnya, ketika Anda memanggil print(bruce)
math.sin Anda memberikan nomor sebagai argumen.
• Beberapa fungsi membutuhkan lebih dari satu argumen:
math.pow membutuhkan dua, basis dan eksponen. Di
dalam fungsi, argumen ditugaskan ke variabel yang
disebut parameter.
• Berikut adalah contoh fungsi yang ditentukan pengguna
yang mengambil argumen.Fungsi ini memberikan
argumen ke parameter bernama bruce. Ketika fungsi
dipanggil, ia mencetak nilai parameter (apa pun itu) dua
kali.
>>> print_twice('Spam')
Bagaimana Cara agar Fungsi yang Spam
Spam
Dibuat dapat Berjalan? >>> print_twice(17)
17
17
• Fungsi ini bekerja dengan nilai apa pun yang >>> import math
dapat dicetak. >>> print_twice(math.pi)
• Aturan komposisi yang sama yang berlaku 3.141592653589793
untuk fungsi bawaan juga berlaku untuk fungsi 3.141592653589793
yang ditentukan pengguna, jadi kita bisa
menggunakan ekspresi apa pun sebagai >>> print_twice('Spam '*4)
argumen untuk print_twice Spam Spam Spam Spam
• Argumen dievaluasi sebelum fungsi dipanggil, Spam Spam Spam Spam
jadi dalam contoh ekspresi 'Spam '*4 dan >>>
print_twice(math.cos(math.pi))
math.cos(math.pi) hanya dievaluasi satu kali.
-1.0
-1.0
Apalagi yang bisa Dijadikan Argumen?

• Anda juga dapat menggunakan variabel sebagai >>> michael = 'Eric, the half a bee.'
argumen: >>> print_twice(michael)
Eric, the half a bee.
• Nama variabel yang kita lewati sebagai argumen
Eric, the half a bee.
(michael) tidak ada hubungannya dengan nama
parameter (bruce).
• Tidak masalah apa nilainya dipanggil kembali ke
rumah (di pemanggil); di sini di print_twice, kita
panggil semuanya bruce.
Fungsi Bermanfaat dan Fungsi Void

• Beberapa fungsi yang kita gunakan, seperti fungsi x = math.cos(radians)


matematika, menghasilkan hasil; karena tidak ada golden = (math.sqrt(5) + 1) / 2
nama yang lebih baik, saya menyebutnya fungsi
yang bermanfaat.
• Fungsi lain, seperti print_twice, melakukan
tindakan tetapi tidak mengembalikan nilai. Mereka
disebut fungsi void.
• Saat Anda memanggil fungsi yang bermanfaat,
Anda hampir selalu ingin melakukan sesuatu
dengan hasilnya; misalnya, Anda dapat
menetapkannya ke variabel atau menggunakannya
sebagai bagian dari ekspresi.
Fungsi Bermanfaat dan Fungsi Void (Lanjutan)

• Saat Anda memanggil fungsi dalam mode >>> math.sqrt(5)


interaktif, Python menampilkan hasilnya. 2.23606797749979
• Tetapi dalam skrip, jika Anda memanggil fungsi
yang bermanfaat dan tidak menyimpan hasil math.sqrt(5)
dari fungsi tersebut dalam sebuah variabel, nilai
yang dikembalikan menghilang ke dalam kabut!
• Skrip ini menghitung akar kuadrat dari 5, tetapi
karena tidak menyimpan hasil dalam variabel
atau menampilkan hasilnya, skrip ini tidak
terlalu berguna.
Fungsi Void
>>> result = print_twice('Bing')
Bing
• Fungsi void mungkin menampilkan sesuatu di Bing
layar atau memiliki efek lain, tetapi tidak >>> print(result)
None
memiliki nilai balik.
• Jika Anda mencoba menetapkan hasilnya ke
variabel, Anda mendapatkan nilai khusus yang >>> print(type(None))
disebut None. <class 'NoneType'>
• Nilai None tidak sama dengan string “None”.
Ini adalah nilai khusus yang memiliki tipenya
sendiri.
• Untuk mengembalikan hasil dari suatu fungsi, kita def addtwo(a, b):
menggunakan pernyataan return dalam fungsi kita. added = a + b
Misalnya, kita bisa membuat fungsi yang sangat
sederhana yang disebut addtwo yang menambahkan return added
dua angka bersama-sama dan mengembalikan
hasilnya. x = addtwo(3, 5)
• Ketika skrip ini dijalankan, pernyataan print akan print(x)
mencetak “8” karena fungsi addtwo dipanggil dengan
3 dan 5 sebagai argumen. Dalam fungsi tersebut,
parameter a dan b masing-masing adalah 3 dan 5.
Fungsi menghitung jumlah dari dua angka dan
menempatkannya di variabel fungsi lokal bernama
tambah. Kemudian menggunakan pernyataan kembali
untuk mengirim nilai yang dihitung kembali ke kode
panggilan sebagai hasil fungsi, yang ditugaskan ke
variabel x dan dicetak.
Pentingnya Function

• Mungkin tidak jelas mengapa membagi program menjadi fungsi-fungsi itu sepadan.
Ada beberapa alasan:
• Membuat fungsi baru memberi Anda kesempatan untuk memberi nama sekelompok pernyataan,
yang membuat program Anda lebih mudah dibaca, dipahami, dan di-debug.
• Fungsi dapat membuat program lebih kecil dengan menghilangkan kode berulang. Nanti, jika
Anda membuat perubahan, Anda hanya perlu melakukannya di satu tempat.
• Membagi program yang panjang ke dalam fungsi memungkinkan Anda untuk men-debug bagian
satu per satu dan kemudian merakitnya menjadi satu kesatuan yang berfungsi.
• Fungsi yang dirancang dengan baik seringkali berguna untuk banyak program. Setelah Anda
menulis dan men-debug satu, Anda dapat menggunakannya kembali.
Pentingnya Function (Lanjutan)

• Sepanjang Anda mengikuti CS100, seringkali kita akan menggunakan


definisi fungsi untuk menjelaskan suatu konsep. Bagian dari
keterampilan membuat dan menggunakan fungsi adalah memiliki fungsi
yang menangkap ide dengan benar seperti "menemukan nilai terkecil
dalam daftar nilai".
• Nanti akan ditunjukkan kepada Anda kode yang menemukan nilai
terkecil dalam list nilai dan kita akan menyajikannya kepada Anda
sebagai fungsi bernama min yang mengambil list nilai sebagai
argumennya dan mengembalikan nilai terkecil dalam daftar.
Debugging

• Jika Anda menggunakan editor teks untuk menulis skrip, Anda mungkin
mengalami masalah dengan spasi dan tab. Cara terbaik untuk
menghindari masalah ini adalah dengan menggunakan spasi secara
eksklusif (tanpa tab).
• Sebagian besar editor teks yang tahu tentang Python melakukan ini
secara default, tetapi beberapa tidak. Tab dan spasi biasanya tidak
terlihat, sehingga sulit untuk di-debug, jadi cobalah mencari editor yang
mengelola indentasi untuk Anda.
• Juga, jangan lupa untuk menyimpan program Anda sebelum Anda
menjalankannya. Beberapa lingkungan pengembangan melakukan ini
secara otomatis, tetapi beberapa tidak. Dalam hal ini, program yang Anda
lihat di editor teks tidak sama dengan program yang Anda jalankan.
Ingat!

• Debugging bisa memakan waktu lama jika Anda terus menjalankan


program yang salah yang sama berulang-ulang! Pastikan bahwa kode
yang Anda lihat adalah kode yang Anda jalankan.
• Jika Anda tidak yakin, letakkan sesuatu seperti print("hello") di awal
program dan jalankan lagi. Jika Anda tidak melihat halo, Anda tidak
menjalankan program yang tepat!
Glossarium (Tidak Alfabetis)

• algoritma
Sebuah proses umum untuk memecahkan kategori masalah.
• argumen
Nilai yang diberikan ke fungsi saat fungsi dipanggil. Nilai ini ditetapkan ke
parameter yang sesuai dalam fungsi.
• body
Urutan pernyataan di dalam definisi fungsi.
• komposisi
Menggunakan ekspresi sebagai bagian dari ekspresi yang lebih besar, atau
pernyataan sebagai bagian dari pernyataan yang lebih besar.
Glossarium (Tidak Alfabetis – Lanjutan)

• deterministik
Berkaitan dengan program yang melakukan hal yang sama setiap kali dijalankan,
diberikan input yang sama.
• notasi titik
Sintaks untuk memanggil fungsi di modul lain dengan menentukan nama modul
diikuti dengan titik (titik) dan nama fungsi.
• alur eksekusi
Urutan di mana pernyataan dijalankan selama program dijalankan.
• fungsi bermanfaat
Fungsi yang mengembalikan nilai.
Glossarium (Tidak Alfabetis – Lanjutan)

• fungsi
Urutan pernyataan bernama yang melakukan beberapa operasi yang berguna.
Fungsi mungkin atau mungkin tidak mengambil argumen dan mungkin atau
mungkin tidak menghasilkan hasil.
• panggilan fungsi
Pernyataan yang menjalankan suatu fungsi. Ini terdiri dari nama fungsi diikuti
oleh daftar argumen.
• definisi fungsi
Pernyataan yang membuat fungsi baru, menentukan nama, parameter, dan
pernyataan yang dijalankannya.
• objek fungsi
Nilai yang dibuat oleh definisi fungsi. Nama fungsi adalah variabel yang mengacu
pada objek fungsi.
Glossarium (Tidak Alfabetis – Lanjutan)

• header
Baris pertama dari definisi fungsi.
• pernyataan import
Pernyataan yang membaca file modul dan membuat objek modul.
• objek modul (module object)
Nilai yang dibuat oleh pernyataan import yang menyediakan akses ke data dan kode
yang ditentukan dalam modul.
• parameter
Nama yang digunakan di dalam fungsi untuk merujuk ke nilai yang diteruskan
sebagai argumen.
Glossarium (Tidak Alfabetis – Lanjutan)

• pseudorandom
Berkaitan dengan urutan angka yang tampak acak, tetapi dihasilkan oleh
program deterministik.
• return value
Hasil dari sebuah fungsi. Jika panggilan fungsi digunakan sebagai ekspresi,
nilai yang dikembalikan adalah nilai ekspresi.
• fungsi void
Fungsi yang tidak mengembalikan nilai.
BAGIAN 2
String Manipulations
String adalah Sebuah Larik

• String merupakan larik (array) karakter-karakter.


Anda dapat mengakses karakter satu per satu
dengan operator bracket.
• Pernyataan kedua mengekstrak karakter pada posisi >>> fruit = 'banana'
indeks 1 dari variabel buah dan menetapkannya ke >>> letter = fruit[1]
variabel huruf.
• Ekspresi dalam kurung disebut indeks. Indeks
menunjukkan karakter mana dalam urutan yang
Anda inginkan (karena itu namanya).
• Tetapi Anda mungkin tidak mendapatkan apa yang >>> print(letter)
Anda harapkan: a
Ekstraksi String >>> letter = fruit[0]
>>> print(letter)
b

• Bagi kebanyakan orang, huruf pertama “banana" adalah "b",


bukan "a". Tetapi dalam Python, indeks adalah offset dari awal
string, dan offset huruf pertama adalah nol. Jadi "b" adalah
huruf ke-0 ("ke-nol") dari “banana", "a" adalah huruf ke-1 ("ke-
satu"), dan "n" adalah huruf ke-2 ("ke-dua") . b a n a n a
• Anda dapat menggunakan ekspresi apa pun, termasuk variabel [0] [1] [2] [3] [4] [5]
dan operator, sebagai indeks, tetapi nilai indeks harus berupa
bilangan bulat. Jika tidak, Anda mendapatkan:

>>> letter = fruit[1.5]


TypeError: string indices must be integers
Mendapatkan Panjang String Menggunakan
len()
• len adalah fungsi bawaan yang mengembalikan jumlah
karakter dalam string: >>> fruit = 'banana'
• Untuk mendapatkan huruf terakhir dari sebuah string, >>> len(fruit)
Anda mungkin tergoda untuk mencoba sesuatu seperti ini: 6
• Alasan IndexError adalah bahwa tidak ada huruf dalam
“banana" dengan indeks 6. Sejak kita mulai menghitung
dari nol, enam huruf diberi nomor 0 sampai 5. >>> length = len(fruit)
• Untuk mendapatkan karakter terakhir, Anda harus >>> last = fruit[length]
mengurangi 1 dari panjangnya: Atau, Anda dapat IndexError: string index out of range
menggunakan indeks negatif, yang menghitung mundur
dari akhir string.
• Ekspresi fruit[-1] menghasilkan huruf terakhir, fruit[-2] >>> last = fruit[length-1]
menghasilkan yang kedua hingga terakhir, dan seterusnya. >>> print(last)
a
Transversal melalui String dengan Loop
• Banyak komputasi melibatkan pemrosesan string satu karakter pada satu waktu. Seringkali mereka
mulai dari awal, memilih setiap karakter secara bergantian, melakukan sesuatu untuk itu, dan
melanjutkan sampai akhir.
• Pola pemrosesan ini disebut traversal. Salah satu cara untuk menulis traversal adalah dengan while
loop.
• Loop ini melintasi string dan menampilkan setiap huruf pada garis dengan sendirinya. Kondisi loop
adalah indeks < len(fruit), jadi ketika indeks sama dengan panjang string, kondisinya salah, dan body
loop tidak dieksekusi. Karakter terakhir yang diakses adalah karakter dengan indeks len(fruit)-1, yang
merupakan karakter terakhir dalam string.
• Cara lain untuk menulis traversal adalah dengan for loop. Setiap kali melalui loop, karakter berikutnya
dalam string ditugaskan ke variabel char. Loop berlanjut sampai tidak ada karakter yang tersisa.
index = 0 for char in fruit:
while index < len(fruit): print(char)
letter = fruit[index]
print(letter)
index = index + 1
Segmentasi String
>>> s = 'Monty Python'
>>> print(s[0:5])
Monty
• Segmen string disebut slice. Memilih irisan mirip dengan >>> print(s[6:12])
memilih karakter: Operator mengembalikan bagian string Python
dari karakter "n-th" ke karakter "m-th", termasuk yang
pertama tetapi tidak termasuk yang terakhir. >>> fruit = 'banana'
• Jika Anda menghilangkan indeks pertama (sebelum titik >>> fruit[:3]
dua), slice dimulai di awal string. Jika Anda menghilangkan 'ban'
indeks kedua, irisan menuju ke akhir string: >>> fruit[3:]
• Jika indeks pertama lebih besar dari atau sama dengan yang 'ana'
kedua, hasilnya adalah string kosong, diwakili oleh dua tanda
kutip: String kosong tidak berisi karakter dan memiliki >>> fruit = 'banana'
panjang 0, tetapi selain itu, string tersebut sama dengan
string lainnya. >>> fruit[3:3]
''
String Bersifat Immutable
• Sangat menggoda untuk menggunakan operator di sisi
kiri tugas, dengan maksud mengubah karakter dalam
string.
• Sebagai contoh: "Objek" dalam hal ini adalah string
dan "item" adalah karakter yang Anda coba tetapkan. >>> greeting = 'Hello, world!'
Untuk saat ini, sebuah objek adalah hal yang sama
dengan sebuah nilai, tetapi kita akan menyempurnakan >>> greeting[0] = 'J'
definisi itu nanti. TypeError: 'str' object does not support
• Item adalah salah satu nilai dalam urutan. Alasan item assignment
kesalahannya adalah karena string tidak dapat diubah,
yang berarti Anda tidak dapat mengubah string yang
ada.
• Yang terbaik yang dapat Anda lakukan adalah >>> greeting = 'Hello, world!'
membuat string baru yang merupakan variasi dari >>> new_greeting = 'J' + greeting[1:]
aslinya: Contoh ini menggabungkan huruf pertama
yang baru ke dalam sepotong greeting. Ini tidak >>> print(new_greeting)
berpengaruh pada string asli. Jello, world!
Looping, Menghitung, dan Operator in

• Program berikut menghitung berapa kali huruf


"a" muncul dalam sebuah string: word = 'banana'
• Program ini mendemonstrasikan pola count = 0
komputasi lain yang disebut counter. Jumlah for letter in word:
variabel diinisialisasi ke 0 dan kemudian if letter == 'a':
bertambah setiap kali "a" ditemukan. Saat loop count = count + 1
keluar, count berisi hasil: jumlah total a. print(count)
• Kata in adalah operator boolean yang
mengambil dua string dan mengembalikan >>> 'a' in 'banana'
True jika yang pertama muncul sebagai True
substring di yang kedua: >>> 'seed' in 'banana'
False
Perbandingan String if word == 'banana':
print('All right, bananas.')
• Operator perbandingan bekerja pada string. Untuk melihat apakah dua string sama:
• Operasi perbandingan lainnya berguna untuk menempatkan kata-kata dalam urutan abjad:
• Python tidak menangani huruf besar dan huruf kecil dengan cara yang sama seperti yang
dilakukan orang. Semua huruf besar datang sebelum semua huruf kecil, jadi:
• Cara umum untuk mengatasi masalah ini adalah mengonversi string ke format standar,
seperti semua huruf kecil, sebelum melakukan perbandingan. Ingatlah hal itu jika Anda
harus membela diri melawan seorang pria bersenjatakan Nanas.

if word < 'banana':


print('Your word,' + word + ', comes before banana.')
elif word > 'banana':
print('Your word,' + word + ', comes after banana.')
else:
print('All right, bananas.') Your word, Pineapple, comes before banana.
Metode-Metode dalam String

• String adalah contoh objek Python. Sebuah objek berisi data (string aktual itu sendiri) dan
metode, yang secara efektif merupakan fungsi yang dibangun ke dalam objek dan tersedia
untuk setiap instance objek.
• Python memiliki fungsi yang disebut dir yang mencantumkan metode yang tersedia untuk
suatu objek. Fungsi type menunjukkan jenis objek dan fungsi dir menunjukkan metode yang
tersedia.
• Sementara fungsi dir mencantumkan metode, dan Anda dapat menggunakan bantuan untuk
mendapatkan beberapa dokumentasi sederhana tentang suatu metode, sumber dokumentasi
yang lebih baik untuk metode string adalah
https://docs.python.org/library/stdtypes.html#string-methods .
• Memanggil method mirip dengan memanggil fungsi (dibutuhkan argumen dan
mengembalikan nilai) tetapi sintaksnya berbeda. Kita memanggil metode dengan
menambahkan nama metode ke nama variabel menggunakan titik sebagai pembatas.
>>> stuff = 'Hello world’
>>> type(stuff)
<class 'str’>
>>> dir(stuff)
['capitalize', 'casefold', 'center', 'count', 'encode’,
'endswith', 'expandtabs', 'find', 'format', 'format_map’,
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit’,
'isidentifier', 'islower', 'isnumeric', 'isprintable’,
'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower’,
'lstrip', 'maketrans', 'partition', 'replace', 'rfind’,
'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip’,
'split', 'splitlines', 'startswith', 'strip', 'swapcase’,
'title', 'translate', 'upper', 'zfill’]
>>> help(str.capitalize)
Help on method_descriptor:

capitalize(...)
S.capitalize() -> str

Return a capitalized version of S, i.e. make the first character


have upper case and the rest lower case.
>>>
Contoh Pemanggilan Method dengan
Notasi Dot
>>> word = 'banana'
>>> new_word = word.upper()
• Misalnya, method upper mengambil string dan >>> print(new_word)
mengembalikan string baru dengan semua huruf BANANA
besar:
• Alih-alih fungsi sintaks upper(word), ia
menggunakan method sintaks word.upper().
• Bentuk notasi titik ini menentukan nama
method, atas, dan nama string untuk
menerapkan method, kata. Tanda kurung kosong
menunjukkan bahwa method ini tidak
membutuhkan argumen.
• Pemanggilan metode disebut pemanggilan;
dalam hal ini, kita akan mengatakan bahwa kita
menggunakan kata atas.
Contoh Pemanggilan Method Lainnya

• Pemanggilan method disebut invokasi; dalam >>> word = 'banana'


hal ini, kita akan mengatakan bahwa kita >>> index = word.find('a')
menggunakan kata atas. >>> print(index)
• Misalnya, ada method string bernama find yang 1
mencari posisi satu string di dalam string lain:
Dalam contoh ini, kita memanggil find pada kata >>> word.find('na')
dan meneruskan huruf yang kita cari sebagai 2
parameter.
• Method find dapat menemukan substring serta
karakter.
Contoh Pemanggilan Method Lainnya
(Bagian 1)

• Method ini dapat mengambil sebagai argumen kedua indeks di mana ia


harus memulai.
• Salah satu tugas umum adalah menghapus spasi (spasi, tab, atau baris
baru) dari awal dan akhir string menggunakan method strip

>>> word.find('na', 3)
4

>>> line = ' Here we go '


>>> line.strip()
'Here we go'
Contoh Pemanggilan Method Lainnya
(Bagian 2)
• Beberapa method seperti startwith mengembalikan nilai >>> line = 'Have a nice day'
boolean. Anda akan mencatat bahwa startwith >>> line.startswith('Have')
membutuhkan huruf besar untuk dicocokkan, jadi True
terkadang kita mengambil garis dan memetakan >>> line.startswith('h')
semuanya ke huruf kecil sebelum kita melakukan False
pemeriksaan menggunakan method lower.
• Pada contoh terakhir, method lower dipanggil dan
kemudian kita menggunakan startwith untuk melihat >>> line = 'Have a nice day'
apakah string huruf kecil yang dihasilkan dimulai >>> line.startswith('h')
dengan huruf "h". False
• Selama kita berhati-hati dengan urutannya, kita bisa >>> line.lower()
membuat beberapa pemanggilan metode dalam satu 'have a nice day'
ekspresi. >>> line.lower().startswith('h')
True
Mengurai String

• Seringkali, kita ingin melihat ke dalam string dan menemukan


substring. Misalnya jika kita disajikan serangkaian garis yang
diformat sebagai berikut ...
From stephen.marquard@ uct.ac.za Sat Jan 5 09:14:16 2008
• … dan kita hanya ingin mengeluarkan bagian kedua dari alamat
(yaitu, uct.ac.za) dari setiap baris, kita dapat melakukannya
dengan menggunakan metode find dan pengirisan string.
Mengurai String (Lanjutan)

>>> data = 'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008'


>>> atpos = data.find('@')
>>> print(atpos)
21
>>> sppos = data.find(' ',atpos)
>>> print(sppos)
31
>>> host = data[atpos+1:sppos]
>>> print(host)
uct.ac.za
>>>
Mengurai String (Lanjutan)

• Pertama, kita akan menemukan posisi tanda-at dalam string. Kemudian kita
akan menemukan posisi ruang pertama setelah tanda-at.
• Dan kemudian kita akan menggunakan pengirisan string untuk mengekstrak
bagian dari string yang kita cari. Kita menggunakan versi metode find yang
memungkinkan kami untuk menentukan posisi dalam string di mana kami ingin
menemukan untuk mulai mencari.
• Saat kita slice, kita mengekstrak karakter dari "satu di luar tanda-at hingga
tetapi tidak termasuk karakter spasi".
• Dokumentasi untuk metode find tersedia di
https://docs.python.org/library/stdtypes.html#string-methods.
Operator Format

• Operator format, % memungkinkan kita untuk membuat string,


mengganti bagian dari string dengan data yang disimpan dalam
variabel.
• Ketika diterapkan pada bilangan bulat, % adalah operator
modulus. Tetapi ketika operan pertama adalah string, % adalah
operator format. Operand pertama adalah string format, yang
berisi satu atau lebih urutan format yang menentukan bagaimana
operan kedua diformat.
• Hasilnya adalah string. Misalnya, urutan format %d berarti
operan kedua harus diformat sebagai bilangan bulat (“d”
singkatan dari “desimal”). >>> camels = 42
• Hasilnya adalah string '42', yang tidak menjadi bingung dengan >>> '%d' % camels
nilai integer 42. '42'
Sekuens Format

• Urutan format dapat muncul di mana saja dalam >>> camels = 42


string, sehingga Anda dapat menyematkan nilai >>> '%d' % camels
dalam kalimat: '42'>>> camels = 42
• Jika ada lebih dari satu urutan format dalam >>> 'I have spotted %d camels.' % camels
string, argumen kedua harus berupa tuple. Setiap 'I have spotted 42 camels.'
urutan format dicocokkan dengan elemen tuple,
secara berurutan.
• Contoh berikut menggunakan %d untuk
memformat bilangan bulat, %g untuk memformat
angka floating-point (jangan tanya mengapa), dan
%s untuk memformat string:

>>> 'In %d years I have spotted %g %s.' % (3, 0.1, 'camels')


'In 3 years I have spotted 0.1 camels.'
Sekuens Format (Lanjutan)

• Jumlah elemen dalam tuple harus sesuai dengan jumlah


urutan format dalam string.
• Jenis elemen juga harus sesuai dengan urutan format: Pada
contoh pertama, tidak ada cukup elemen; di kedua,
elemennya adalah tipe yang salah.
• Operator format sangat kuat, tetapi bisa jadi sulit digunakan.
Anda dapat membaca lebih lanjut tentang itu di
https://docs.python.org/library/stdtypes.html#printf-style-
string-formatting.
>>> '%d %d %d' % (1, 2)
TypeError: not enough arguments for format string
>>> '%d' % 'dollars'
TypeError: %d format: a number is required, not str
Debugging

• Keterampilan yang harus Anda while True:


kembangkan saat Anda memprogram line = input('> ')
selalu bertanya pada diri sendiri, “Apa yang if line[0] == '#':
bisa salah di sini?” atau sebagai alternatif, continue
"Hal gila apa yang mungkin dilakukan if line == 'done':
pengguna kita untuk merusak program kita break
(yang tampaknya) sempurna?" print(line)
print('Done!')
• Misalnya, lihat program yang kita gunakan
untuk mendemonstrasikan perulangan
while dalam bab tentang iterasi:
> hello there
hello there
Debugging (Lanjutan) > # don't print this
> print this!
print this!
>
• Lihat apa yang terjadi ketika pengguna
memasukkan baris input kosong: Kode berfungsi Traceback (most recent call last):
dengan baik sampai disajikan baris kosong. Maka File "copytildone.py", line 3, in <module>
tidak ada karakter ke-nol, jadi kita mendapatkan if line[0] == '#':
traceback. IndexError: string index out of range
• Ada dua solusi untuk ini untuk membuat jalur tiga
"aman" bahkan jika jalur itu kosong.
• Salah satu kemungkinannya adalah dengan
menggunakan metode startwith yang if line.startswith('#'):
mengembalikan False jika string kosong.
• Cara lain adalah menulis pernyataan if dengan
aman menggunakan pola wali dan memastikan
ekspresi logis kedua dievaluasi hanya jika ada if len(line) > 0 and line[0] == '#':
setidaknya satu karakter dalam string.
Glossarium (Tidak Alfabetis) * Tuple adalah urutan nilai yang
dipisahkan koma di dalam sepasang
tanda kurung

• counter
Variabel yang digunakan untuk menghitung sesuatu, biasanya diinisialisasi ke nol dan kemudian
bertambah.
• string kosong
String tanpa karakter dan panjang 0, diwakili oleh dua tanda kutip.
• operator format
Operator, %, yang mengambil format string dan tuple* dan menghasilkan string yang menyertakan
elemen dari tuple* yang diformat seperti yang ditentukan oleh format string.
• urutan format
Urutan karakter dalam string format, seperti %d, yang menentukan bagaimana nilai harus
diformat.
• format string
String, digunakan dengan operator format, yang berisi urutan format.
Glossarium (Tidak Alfabetis – Lanjutan)

• flag
Variabel boolean yang digunakan untuk menunjukkan apakah suatu kondisi benar atau salah.
• invokasi
Pernyataan yang memanggil metode.
• immutable
Properti dari urutan yang itemnya tidak dapat ditetapkan.
• indeks
Nilai integer yang digunakan untuk memilih item dalam urutan, seperti karakter dalam string.
• item
Salah satu nilai dalam urutan.
• metode
Sebuah fungsi yang diasosiasikan dengan sebuah objek dan dipanggil menggunakan notasi titik.
Glossarium (Tidak Alfabetis – Lanjutan)

• objek
Sesuatu yang dapat dirujuk oleh variabel. Untuk saat ini, Anda dapat menggunakan "objek" dan
"nilai" secara bergantian.
• search
Pola traversal yang berhenti ketika menemukan apa yang dicarinya.
• sequence
Satu set yang dipesan; yaitu, satu set nilai di mana setiap nilai diidentifikasi oleh indeks bilangan
bulat.
• slice
Bagian dari string yang ditentukan oleh rentang indeks.
• transverse
Untuk beralih melalui item dalam urutan, melakukan operasi serupa pada masing-masing.
TERIMA KASIH
Video dan soal masih disusun. Harap bersabar, bisa coba-coba dulu dari
contoh yang diberikan

Anda mungkin juga menyukai