0% menganggap dokumen ini bermanfaat (0 suara)
72 tayangan

Free Python Ebook

Buku elektronik ini memberikan panduan singkat tentang dasar-dasar pemrograman Python melalui penjelasan konsep-konsep dasar seperti instalasi, pemanggilan, perintah, program, tipe data, operator, dan komentar disertai contoh-contoh kode.

Diunggah oleh

Aldini Dziaul haq
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
72 tayangan

Free Python Ebook

Buku elektronik ini memberikan panduan singkat tentang dasar-dasar pemrograman Python melalui penjelasan konsep-konsep dasar seperti instalasi, pemanggilan, perintah, program, tipe data, operator, dan komentar disertai contoh-contoh kode.

Diunggah oleh

Aldini Dziaul haq
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 199

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/361459389

Dasar-Dasar Python: Panduan Cepat untuk Memahami Fondasi Pemrograman


Python

Book · June 2022

CITATIONS READS

0 4,698

1 author:

Abdul Kadir

57 PUBLICATIONS   1,499 CITATIONS   

SEE PROFILE

All content following this page was uploaded by Abdul Kadir on 22 June 2022.

The user has requested enhancement of the downloaded file.


Dasar-Dasar Python
Panduan Cepat untuk
Memahami Fondasi
Pemrograman Python

Free e-book
Hak Cipta @Abdul Kadir (2022)
Yogyakarta:Primasoft RG

11
PRAKATA
Buku elektronik ini ditujukan kepada siapa saja yang ingin
mempelajari pemrograman Python. Materi-materi yang diberikan
telah disusun sedemikian rupa sehingga mencakup hal yang luas,
tetapi dapat dipahami dengan mudah. Banyak contoh disertakan
dengan maksud agar materi dapat diserap dengan cepat.

Hal terpenting yang perlu menjadi penyemangat dalam mempelajari


pemrograman bahasa Python adalah “Kesulitan hanyalah di awal.
Sesudahnya terasa sangat mudah”. Tidak lupa, jangan bosan untuk
senantiasa melakukan prinsip ATM. Amati, Tiru, dan Modifikasi!

Akhirnya, semoga buku ini dapat menjadi inspirasi dan sekaligus


pencerahan. Selamat mengarungi dunia pemrograman Python dan
menemukan gelora tantangan-tantangan yang menarik!

Salam hangat. Jabat erat selalu.

Abdul Kadir

12
Bab
Dasar Python –
1 Bagian
Pertama

Pokok bahasan pada bab ini mencakup hal-hal berikut:


 instalasi Python;
 pemanggilan Python;
 perintah di Python;
 pembuatan program dan cara mengeksekusi;
 pengenalan kata-kunci, pengenal, variabel, tipe
data, literal, dan konstanta;
 cara membaca data dari papan ketik;
 ekspresi, operator, dan operan;
 nilai None;
 penyertaan komentar;
 penggunaan modul;
 fungsi dan metode.

13
1.1 Instalasi Python
Pertama-tama yang perlu dilakukan adalah menginstal Python.
Dalam hal ini, Python bisa diunduh di:

https://www.python.org/downloads/

Versi yang digunakan pada buku ini adalah Python versi Windows.
Saat buku ini disusun versi yang tersedia adalah Python 2.10.4. Nama
berkasnya python-2.10.4-amd64. Jika versi yang Anda gunakan
berbeda, silakan menyesuaikan.

Berikut langkah-langkah untuk menginstal Python.

1. Klik ganda pada python-2.10.4-amd64. Langkah ini


memunculkan tampilan seperti terlihat pada Gambar 1.1.

Gambar 1.1 Tampilan awal instalasi Python

2. Klik pada:

14
3. Klik Yes saat muncul konfirmasi “Do you want to allow this app
make changes to your device?”. Maka, akan muncul tampilan
seperti terlihat pada Gambar 1.1.

Gambar 1.2 Proses instalasi Python sedang berlangsung

4. Tunggu sampai muncul tampilan seperti terlihat pada Gambar


1.2.

Gambar 1.3 Pemberitahuan bahwa instalasi Python sudah berakhir

15
5. Klik pada tombol .

Dengan begitu, Python telah terpasang pada komputer Anda.

1.2 Pemanggilan Python


Perlu diperhatikan bahwa berdasarkan informasi pada Gambar 1.3,
Python dapat dipanggil dengan memanggil py. Oleh karena itu, untuk
mempraktikkan Python, mula-mula aktifkan Command Prompt (Gambar
1.4).

Gambar 1.4 Tampilan Command Prompt

Pemanggilan Python dilakukan dengan mengetikkan py diikuti


dengan menekan tombol Enter:

py

Maka, akan muncul tampilan seperti terlihat pada Gambar 1.5.

16
Gambar 1.5 Tampilan Python

Prompt >>> menandakan bahwa Python siap menerima perintah.

Cara lain untuk memanggil Python tidak melalui Command Prompt


terlebih dahulu. Caranya seperti berikut.

1. Mula-mula, klik pada tombol Start ( ).

2. Ketik:

Python

3. Klik pada . Maka, muncul


tampilan seperti terlihat pada Gambar 1.6.

17
Gambar 1.6 Tampilan Python

Untuk mengakhiri Python, perintah berikut bisa diberikan:

quit()

1.3 Perintah di Python


Python merupakan interpreter sehingga pemakai bisa mengetik
perintah dan kemudian menekan tombol Enter untuk mengeksekusi
perintah tersebut. Sebagai contoh, saat prompt >>> muncul, perintah
berikut bisa diberikan:

print("Halo, Bro!")

Maka, Python langsung menanggapi perintah tersebut dengan


mengeksekusinya. Hasilnya, muncul tulisan:

Halo, Bro!

Gambar 1.7 menggarisbawahi perintah dan hasil di atas.

18
Gambar 1.7 Perintah dan hasil eksekusi

Tulisan “Halo, Bro!” menyatakan suatu string yang berisi tulisan


Halo, Bro!. String berarti sederetan karakter. Suatu string dapat
mengandung nol karakter (dinamakan string kosong), satu karakter,
atau banyak karakter. Secara lebih khusus, “Halo, Bro!” adalah literal
string. Literal berarti sesuatu yang bersifat tetap. Hal ini digunakan
untuk membedakan dengan istilah variabel, yang berarti bisa berubah
selama program dieksekusi. Adapun yang dimaksud dengan sebuah
karakter dapat berupa sebuah huruf kecil atau huruf kapital, sebuah
angka (0..9), atau sebuah simbol (misalnya + ataupun *).

Di Python, perintah seperti print("Halo, Bro!")


dinamakan pernyataan. Sebuah pernyataan adalah satu instruksi yang
dapat diproses secara langsung oleh interpreter Python. Dengan cara
seperti ini, pengujian pernyataan tertentu dapat dilakukan tanpa perlu
menuliskan program. Bahkan, Python dapat dimanfaatkan sebagai
kalkulator. Sebagai contoh penulisan berikut akan membuat hasilnya
segera ditampilkan:

19
5 + 7

Contoh-contoh perhitungan dan hasil masing-masing dapat dilihat


berikut ini:

>>> 5 + 7
12
>>> 6 * 2 + 1
13
>>> 5 / 3 - 1
0.6666666666666667
>>>

Pada contoh di atas, + menyatakan operator penjumlahan, *


menyatakan operator perkalian, / menyatakan operator pembagian,
dan – menyatakan operator pengurangan.

Dua pernyataan atau lebih boleh ditulis dalam satu baris. Namun,
antara dua pernyataan harus dipisah oleh titik koma. Contoh:

>>> print("Kenari"); print("Kutilang")


Kenari
Kutilang
>>>

Tampak bahwa antara pernyataan print("Kenari") dan


print("Kutilang") terdapat titik koma.

Satu pernyataan boleh ditulis lebih dari satu baris. Pada keadaan
seperti ini, baris yang masih mengandung kelanjutan bagian pernyataan
biasa diakhiri dengan \ (Lihat Gambar 1.8). Contoh:

20
>>> x = 2\
... +3
>>>
>>> x
5
>>>

Gambar 1.8 Makna simbol \ di akhir baris

Akan tetapi, tidak semua pernyataan yang ditulis lebih dari satu
baris perlu menggunakan \ untuk menyatakan bahwa pernyataan belum
berakhir dan berkelanjutan pada baris berikutnya. Sebagai contoh,
perhatikan penulisan pernyataan berikut:

>>> print("Yogyakarta " +


... "berada di pulau Jawa"
Yogyakarta berada di pulau Jawa
>>>

21
Tampak bahwa baris yang berisi print("Yogyakarta ", tidak
diakhiri dengan \, tetapi tidak bermasalah. Python dengan sendirinya
telah mengetahui bahwa baris tersebut belum berakhir. Itulah
sebabnya, interpreter langsung memberikan tanda … yang menunggu
kelanjutan dari baris sebelumnya.

Hal itu akan berbeda kalau kode berikut diberikan:

>>> keterangan = "Yogyakarta " +


File "<stdin>", line 1
keterangan = "Yogyakarta" +
^
SyntaxError: invalid syntax
>>>

Ekspresi tersebut sebenarnya belum berakhir. Namun, karena tanda \


tidak diberikan, kelanjutannya tidak bisa diberikan.

Kesalahan tidak terjadi dengan penulisan seperti berikut:

>>> keterangan = "Yogyakarta " +\


... "berada di pulau Jawa"
>>>>>>

Lalu, apa yang membedakan contoh print() dengan penugasan


ke keterangan di depan karena yang pertama tidak memerlukan \
dan yang kedua mengharuskan penggunaan \? Jawabannya adalah
pasangan tanda ( dan ). Jika terdapat tanda ( yang belum ditutup
dengan ), interpreter Python menganggap pernyataan belum berakhir.
Maka, kelanjutan pernyataan akan ditunggu. Dengan dasar ini,
dimungkinkan untuk melakukan penugasan keterangan yang ditulis
dalam dua baris dengan cara menuliskan seperti berikut:

22
>>> keterangan = ("Yogyakarta " +\
... "berada di pulau Jawa")
>>>

Serupa dengan (), Python juga mendeteksi pasangan {} dan []


sehingga kalau pasangan { atau [ belum ditemukan, kelanjutannya
ditunggu pada baris berikutnya. Hal ini yang menjelaskan alasan
penulisan senarai (yang menggunakan []) ataupun kamus (yang
menggunakan {}) boleh ditulis lebih dari satu baris tanpa perlu
menambahkan \. Contoh:

>>> daftar_warna = ["Hijau", "Merah", "Biru",


... "Kuning", "Ungu",
... "Putih", "Hitam"]
>>>

Python menggunakan indentasi untuk kepentingan penulisan


pernyataan majemuk. Oleh karena itu, memberikan spasi di awal suatu
pernyataan tidak boleh dilakukan sebarangan. Contoh berikut
menunjukkan kesalahan karena penulisan print() diawali dengan
satu karakter spasi:

>>> print("Tes")
File "<stdin>", line 1
print("Tes")
IndentationError: unexpected indent
>>>

Berikut adalah contoh penulisan dengan indentasi:

23
>>> bil = 6
>>> if bil % 2 == 0:
... print(bil, "adalah bilangan genap")
... print("----------")
...
6 adalah bilangan genap
----------
>>>

Pada contoh di atas, dua pernyataan berikut ditulis menjorok ke


kanan terhadap if dikarenakan kedua pernyataan tersebut
dimaksudkan sebagai pernyataan majemuk yang bergantung kepada
if:

print(bil, "adalah bilangan genap")


print("----------")

Penulisan semacam itu akan sering dijumpai pada penulisan pernyataan


seleksi dan perulangan, yang akan dibahas pada Bab 2.

1.4 Pembuatan Program


Program menyatakan kumpulan perintah yang ditujukan untuk
melakukan suatu tujuan tertentu. Sebagai contoh, suatu program
meminta tanggal lahir dimasukkan. Lalu, usia dapat dihitung dan
ditampilkan. Secara lebih khusus, program yang dieksekusi
menggunakan interpreter (bukan oleh compiler) biasa disebut skrip.

Untuk membuat skrip Python, editor teks diperlukan. Editor yang


sebaiknya digunakan adalah yang mendukung kemunculan nomor baris
dan juga nomor kolom. Hal ini sangat diperlukan karena kesalahan yang
mungkin terjadi pada skrip ketika dieksekusi akan merujuk pada posisi
baris dan kolom.

24
Contoh editor teks yang bisa digunakan antara lain adalah
Notepad++. Contoh tampilannya dapat dilihat pada Gambar 1.9. Editor
ini dapat diunduh secara gratis melalui:

https://notepad-plus-plus.org/downloads/

Gambar 1.9 Editor Notepad++

Untuk kepentingan pembuatan skrip-skrip Python yang digunakan


sebagai latihan, folder bernama PyGUI perlu dibuat dahulu. Pada
contoh di buku ini, PyGUI diletakkan di drive C:.

Nah, sekarang akan diberikan contoh untuk membuat skrip Python


yang hanya berisi satu pernyataan print.

Berikut langkah-langkahnya.

1. Bukalah editor teks (dengan asumsi Notepad++ yang


digunakan).

2. Buatlah berkas baru dan tuliskan:

print("Halo, Bro!")

3. Pilih menu File.

25
4. Klik pada Save As…. Langkah ini memunculkan tampilan seperti
terlihat pada Gambar 1.10. Apabila folder terpilih belum berupa
C:\PyGUI, aturlah terlebih dahulu.

Gambar 1.10 Kotak dialog untuk menyimpan berkas

5. Ketikkan halobro pada kotak teks di kanan tulisan “File name:”.

6. Klik pada posisi berikut:

7. Klik pada posisi berikut:

Maka, isi pada Save as type: menjadi seperti berikut:

26
8. Klik pada tombol .

Dengan cara seperti itu, skrip Python disimpan di folder


C:\PyGUI dengan nama halobro.py. Ekstensi .py menyatakan
berkas skrip Python.

1.5 Cara Mengeksekusi Skrip Python


Skrip Python dapat dieksekusi melalui Command Prompt pada
Windows. Perintah yang diperlukan berbentuk:

py nama_skrip.py

Namun, perlu dipastikan bahwa folder kerja berupa C:\pyGUI.


Jika C:\pyGUI belum menjadi folder kerja, perlu diberikan perintah
seperti berikut:

C:\Users\ridak>CD C:\pyGUI

C:\pyGUI>

Tampak bahwa prompt sekarang berupa C:\pyGUI>.

Perlu diketahui, py adalah utilitas Python


Launcher yang berguna untuk menjalankan
skrip Python menggunakan Python terbaru
yang diinstal di komputer. Utilitas ini secara
otomatis tersedia ketika instalasi Python telah

27
dilaksanakan.

Contoh untuk mengeksekusi skrip halobro.py dapat


diperlihatkan berikut ini.

C:\pyGUI>py halobro.py
Halo, Bro!

C:\pyGUI>

Cara yang lebih sederhana untuk menjalankan suatu skrip adalah


dengan menyebutkan secara langsung nama skrip Python. Contoh:

C:\pyGUI>halobro.py
Halo, Bro!

C:\pyGUI>

Cara berikutnya menjelaskan eksekusi di dalam interpreter Python.


Namun, caranya dibahas, folder kerja di interpreter Python harus
berupa C:\pyGUI. Cara mengubah folder kerjanya seperti berikut:

>>> import os


>>> os.chdir("C:\\pyGUI")
>>> os.getcwd()
'C:\\pyGUI'
>>>

Sebenarnya, yang diperlukan hanya dua pernyataan pertama.


Pernyataan pertama digunakan untuk mengimpor modul bernama os.
Pernyataan kedua digunakan untuk menjadikan C:\pyGUI sebagai
folder kerja. Adapun pernyataan ketiga hanya digunakan untuk
menunjukkan folder kerja sekarang.

28
Lalu, cara mengeksekusi skrip Python adalah dengan menggunakan
perintah berbentuk seperti berikut:

exec(open("nama_skrip.py").read())

Contoh:

>>> exec(open("halobro.py").read())
Halo, Bro!
>>>

1.6 Pengenalan Kata-Kunci


Di Python terdapat kata-kata yang berlaku sebagai kata-kunci.
Kata-kata yang tergolong sebagai kata-kunci digunakan secara khusus
oleh Python dan tidak boleh digunakan misalnya untuk nama variabel
atau fungsi. Sebagai contoh, True menyatakan nilai benar dan False
menyatakan nilai salah. Tabel 1.1 mencantumkan kata-kunci yang
terdapat pada Python.

Tabel 1.1 Daftar kata-kunci pada Python

and if True
as import False
assert in
break is
class lambda
continue not
def None
del or
elif pass

29
else print
except raise
exec return
finally try
for while
from with
global yield

1.7 Pengenalan Pengenal


Pengenal (identifier) adalah nama yang digunakan untuk
variabel, fungsi, kelas, dan lain-lain. Pemberian nama pengenal harus
mengikuti aturan yang berlaku di Python. Berikut adalah aturannya.

 Pengenal dapat mengandung huruf (A-Z, a-z), angka (0-9), dan


garis-bawah (_).
 Pengenal tidak boleh berawalan angka.
 Huruf kecil dan huruf kapital dibedakan. Dengan demikian,
nama dan NAMA menyatakan pengenal yang berbeda.
 Pengenal tidak diperkenankan menggunakan kata-kunci,
misalnya for dan True.
Berdasarkan ketentuan tersebut, beberapa contoh pengenal yang
absah dan ilegal dapat dilihat pada Tabel 1.1.

Tabel 1.2 Contoh pengenal yang absah dan ilegal

Absah Ilegal
x 1bundel (Tidak boleh diawali angka)
nama as (Tidak boleh karena as adalah kata-kunci)
kode_barang kode barang (Tidak boleh ada spasi)
pembimbing2 pembimbing-2 (Tidak boleh ada simbol -)

30
Absah Ilegal
nomorTelepon harga$ (Tidak boleh ada simbol $)

1.8 Pengenalan Variabel


Variabel merupakan suatu nama yang digunakan untuk
menyatakan nilai dan nilai yang dinyatakannya bisa berubah sewaktu-
waktu, bak pepatah “pagi kedelai, sore tempe”. Disarankan, nama
variabel tidak menggunakan huruf kapital.

Di Python, konsep variabel dapat dibayangkan seperti penunjuk.


Jadi, sesungguhnya variabel tidak berisi suatu nilai, melainkan menunjuk
ke suatu nilai. Gambar 1.11 menunjukkan contoh variabel dan nilai yang
dinyatakannya. Adapun Gambar 1.12 memperlihatkan ketika nilai yang
dinyatakannya berubah.

Gambar 1.11 Variabel dan nilai yang dinyatakannya

31
Gambar 1.12 Perubahan nilai yang dinyatakan oleh variabel

Penugasan variabel menyatakan cara untuk membuat variabel


menyatakan suatu nilai. Bentuknya seperti berikut:

variabel = nilai

Contoh penugasan variabel:

jumlah_barang = 50

Penugasan inilah seperti yang diilustrasikan pada Gambar 1.11.

Sekarang, misalkan terjadi penjualan sebanyak 4, maka nilai yang


dinyatakan oleh jumlah_barang menjadi 46. Pada keadaan seperti
ini, jumlah_barang dapat dibayangkan tidak lagi menunjuk ke 50,
melainkan ke bilangan 46. Itulah yang diilustrasikan pada Gambar 1.11.

Python mempunyai mekanisme pengumpulan


sampah. Objek-objek yang sudah tidak
dipakai, misalnya 50 pada Gambar 1.12, akan
dibuang sendirinya oleh Python sehingga
memori komputer tetap dapat dioptimalkan.

32
Kadang kala, dijumpai penulisan seperti berikut:

pencacah = pencacah + 1

Pada penulisan seperti itu, pencacah akan menunjuk objek baru yang
berupa nilai yang dinyatakan oleh pencacah semula ditambah dengan
1. Di kaca mata pemakai, pencacah sekarang akan menyatakan nilai
pencacah yang lama plus 1. Dengan perkataan lain, pencacah =
pencacah + 1 adalah suatu pernyataan yang membuat nilai yang
dinyatakan pencacah naik sebesar 1 terhadap keadaan sebelumnya.

Berbeda dengan bahasa lain seperti C ataupun C++, variabel di


Python tidak perlu dideklarasikan. Deklarasi variabel itu bertujuan untuk
menentukan tipe data yang diwakili oleh suatu variabel sehingga
deklarasi variabel dapat dilakukan tanpa memberikan nilai ke variabel.
Di Python, variabel tidak perlu dideklarasikan terlebih dahulu karena
memang variabel itu tidak mempunyai tipe; yang mempunyai tipe data
adalah nilai yang dinyatakannya. Itulah sebabnya, satu variabel di
Python dapat menyatakan data bertipe bilangan pada suatu saat dan
menyatakan data bertipe string pada waktu yang lain. Jadi, penugasan
seperti berikut diperkenankan:

>>> x = 23
>>> x = "Huruf x"
>>>

Di Python, penugasan seperti berikut diperkenankan:

a, b, c = 1, 2, 3

Pernyataan tersebut identik tiga pernyataan berikut:

a = 8

33
b = 9

c = 10

Pada kebanyakan bahasa pemrograman, penukaran nilai yang


dinyatakan dengan variabel x dan y dilakukan dengan melibatkan satu
variabel, misalnya z. Maka, penukaran nilai yang dinyatakan oleh x dan
y dilaksanakan seperti berikut:

z = x

x = y

y = z

Gambar 1.13 memberikan pola penukaran nilai yang dinyatakan oleh x


dan y.

Gambar 1.13 Penukaran nilai yang dinyatakan oleh x dan y

Contoh penukaran nilai menggunakan konsep di atas:

34
>>> x = 23
>>> y = 75
>>> z = x
>>> x = y
>>> y = z
>>> x
75
>>> y
23
>>>

Tampak bahwa nilai yang dinyatakan oleh x dan y dipertukarkan.


Semula x menyatakan nilai 23 dan terakhir x menyatakan nilai 75.
Adapun y yang semula menyatakan nilai 75, kini menyatakan nilai 22.

Sesungguhnya, penukaran nilai yang dinyatakan oleh dua variabel


x dan y dapat ditulis dengan cara yang jauh lebih sederhana, seperti
berikut:

x, y = y, x

Perhatikan contoh berikut untuk membuktikan hasilnya.

>>> x = 23
>>> y = 75
>>> x, y = y, x
>>> x
75
>>> y
23
>>>

Penugasan variabel juga bisa berbentuk seperti berikut:

r = s = t = 30

35
Pada bentuk seperti itu, baik r, s, maupun t akan menyatakan nilai 30
dengan objek yang sama. Pernyataan tersebut identik dengan tiga
pernyataan berikut:

t = 30

s = t

r = s

Gambar 1.14 menunjukkan keadaan setelah pernyataan r = s =


t = 30 dieksekusi.

Gambar 1.14 Penugasan r = s = t = 30

Python menyediakan fungsi bernama id() untuk mengetahui


identitas objek. Perlu diketahui, setiap objek di Python mempunyai
identitas tersendiri. Namun, objek literal dengan nilai yang sama akan
diberi identitas yang sama untuk kepentingan optimasi memori. Dengan

36
demikian, melalui id(), dapat diketahui identitas objek yang
dinyatakan oleh dua variabel sama atau tidak. Contoh:

>>> id(30)
1830088803472
>>> x = 30
>>> y = 30
>>> z = 32
>>> id(x)
1830088803472
>>> id(y)
1830088803472
>>> id(z)
1830088803536
>>> x = 25
>>> id(x)
1830088803312
>>>
Hasil pemanggilan id(30) di atas menunjukkan bahwa literal 30
mempunyai identitas berupa 1830088803472, yang terus
dipertahankan. Lalu, hasil pemanggilan id(x) dan id(y) berupa
identitas objek literal 30 tadi, sedangkan z menyatakan objek lain lagi.
Namun, ketika x diberi penugasan baru (x = 25), terlihat bahwa
identitas objek yang dinyatakan x berbeda dengan objek yang
dinyatakan oleh y (walaupun sebelumnya sama).

Perlu diketahui, segala sesuatu di Python adalah objek, entah itu


literal ataupun kelas. Ketika suatu literal dibentuk dan literal tersebut
tidak ada sebelumnya, dengan sendirinya objek untuk literal tersebut
muncul dan diberi identitas.

1.9 Pengenalan Tipe Data


Tipe data pada Python dibagi menjadi dua kelompok besar: tipe
data yang tidak bisa diubah (immutable) dan tipe data yang bisa diubah

37
(mutable). Contoh tipe data yang immutable yaitu string dan bilangan.
Pada data seperti ini, Anda tidak bisa mengubah bagian dari isinya.
Adapun contoh tipe data yang mutable yaitu list (dibahas pada Subbab
Sub-subbab 2.8.1) dan dictionary (dibahas pada Sub-subbab 2.8.3). Pada
tipe data seperti ini, bagian isinya dapat diubah.

Untuk sementara, tipe data yang akan diperkenalkan terlebih


dahulu mencakup bilangan, string, dan nilai logika.

Python menyediakan fungsi bernama type(), yang bermanfaat


untuk mengetahui tipe suatu data. Contoh:

>>> x = 23
>>> type(x)
<class 'int'>
>>> nama = "Diana"
>>> type(nama) 
<class 'str'>
>>> type(True)
<class 'bool'>
>>>

Nama-nama tipe data yang muncul pada contoh tersebut berupa


int, str, dan bool.

1.9.1 Tipe Bilangan


Tipe bilangan menyatakan sesuatu yang bisa dikenai operasi
aritmetika, seperti penjumlahan, pengurangan, atau perkalian. Tipe
bilangan dapat dibedakan menjadi bilangan bulat, bilangan titik-
mengambang, dan bilangan kompleks. Bilangan bulat dapat ditulis
dalam notasi desimal (sistem bilangan berbasis 10, seperti yang kita
gunakan sehari-hari), sistem heksadesimal, sistem oktal, dan sistem

38
biner. Tabel 1.3 memberikan contoh berbagai tipe data dan aturan
penulisan masing-masing.

Tabel 1.3 Tipe bilangan

Jenis Contoh Keterangan


Bilangan bulat -740 Bilangan bulat tidak
(int) 23 mempunyai bagian pecahan.
Nilainya bisa berupa bilangan
positif ataupun negatif.
Bilangan bulat 0x67 Bilangan heksadesimal adalah
dinyatakan dalam 0xA bilangan berbasis 16. Simbol
bilangan 0xFF yang digunakan adalah 0 s/d 9
heksadesimal dan A s/d F (atau a s/d f).
Bilangan ini selalu ditulis
dengan awalan 0x atau 0X (nol
dan huruf x kecil atau X
kapital).
Bilangan bulat 0o26 Bilangan oktal adalah
dinyatakan 0o127 bilangan berbasis 8. Simbol
dalam bilangan yang digunakan adalah 0 s/d
oktal 7. Bilangan ini selalu ditulis
dengan awalan nol dan huruf
o kecil atau awalan nol dan
huruf O kapital.
Bilangan bulat 0B101 Bilangan biner adalah bilangan
dinyatakan dalam 0b1101101 berbasis 1. Simbol yang
bilangan biner digunakan adalah 0 dan 1.
Bilangan ini selalu ditulis
dengan awalan nol dan huruf b
kecil atau awalan nol dan huruf
B kapital.

39
Jenis Contoh Keterangan
Bilangan titik- 2.14 Bilangan titik-mengambang
mengambang -4567.89 menyatakan bilangan real.
(float) 2.5e+8 Tanda pecahan berupa titik.
2.5E-4 Notasi E atau e untuk
menyatakan notasi sains.
2.5e+8 berarti 2.5x108,
sedangkan 2.5e-4 berarti
2.5x10-4.
Bilangan 5 + 3J Bilangan kompleks adalah
kompleks 5 – 3j bilangan yang mengandung
(complex) bagian real dan imajiner. Notasi
untuk imajiner ditandai dengan
j atau J.

1.9.2 Tipe String


Tipe string menyatakan tipe yang berisi sederetan karakter;
misalnya untuk menyatakan alamat seseorang atau ukuran baju (XL, S,
M). Literal string ditulis dengan menggunakan awalan dan akhiran petik
tunggal atau petik ganda, tetapi tidak boleh dicampur. Contoh:

 'Burung kutilang'

 "Burung kutilang"

Adapun penulisan seperti 'Burung kutilang", yang menggunakan


awalan berupa petik tunggal dan akhiran petik ganda tidak
diperkenankan.

Bagaimana halnya kalau dikehendaki untuk menuliskan string yang


susunannya seperti berikut?

As'ad Jauhari

40
Perhatikan bahwa terdapat karakter petik tunggal pada nama tersebut.
Pada keadaan seperti itu, gunakan saja awalan dan akhiran petik ganda.
Jadi penulisan literalnya seperti berikut:

"As'ad Jauhari"

Mungkin timbul pertanyaan, “Bisakah string nama orang tersebut


ditulis dengan awalan dan akhiran petik tunggal?” Tentu saja, hal itu
dimungkinkan. Akan tetapi, tanda petik tunggal pada As’ad harus ditulis
dengan notasi khusus, yakni berupa \’. Jadi, penulisannya seperti
berikut:

'As\'ad Jauhari'

Suatu string juga bisa melibatkan karakter pelolosan (escape


character). Karakter pelolosan adalah sebuah karakter yang dinotasikan
dengan awalan berupa \. Berbagai karakter pelolosan pada Python
dapat dilihat pada Tabel 1.4.

Tabel 1.4 Daftar karakter escape

Karakter Escape Keterangan


\\ Backslash
\’ Petik tunggal
\” Petik ganda
\b Backspace
\e Escape
\0 Null
\n Linefeed
\v Tab vertikal
\t Tab horizontal
\r Carriage return
\f Form feed
\ooo Karakter dengan nilai oktalnya

41
Karakter Escape Keterangan
adalah ooo
\xhh Karakter dengan nilai
heksadesimalnya adalah hh

Contoh penggunaan beberapa karakter pelolosan dan efeknya


dapat dilihat berikut ini:

>>> print("mobil\ttruk\tbis")
mobil truk bis
>>> print("India\nJepang\nKorea Selatan")
India
Jepang
Korea Selatan
>>> print("\"Apa?\", dia bertanya.")
"Apa?", dia bertanya.
>>>

Contoh pertama menunjukkan penggunaan tab (\t). Contoh kedua


memperlihatkan efek karakter pindah baris (newline) yang berupa \n.
Contoh ketiga menunjukkan cara menampilkan dua karakter petik
ganda.

String bisa tidak mengadung karakter sama sekali. String seperti ini
dinamakan string kosong. Penulisannya seperti berikut:

 "" (Petik ganda diikuti dengan petik ganda)

 '' (Petik tunggal diikuti dengan petik tunggal)

Jumlah karakter yang tersusun pada suatu string dapat dihitung


menggunakan fungsi len(). Contoh:

42
>>> len("123456")
6
>>> len("")
0
>>>

1.9.3 Tipe Logika


Nilai logika berupa benar dan salah. Secara eksplisit Python
menggunakan False untuk menyatakan salah dan True menyatakan
benar. Tipe logika di Python bernama bool (yang berasal dari kata
Boolean).

1.10 Perbedaan Variabel, Literal, dan


Konstanta
Tiga istilah variabel, literal, dan konstanta akan digarisbawahi di
sini. Variabel, sebagaimana telah dijelaskan di depan, digunakan untuk
menyatakan nilai dan nilai yang dinyatakan oleh variabel bisa diganti
kapan saja. Nilai yang diberikan ke variabel seringkali berupa literal.
Literal berarti data mentah yang diberikan ke variabel (atau konstanta).
Sebagai contoh, pada penugasan berikut, x adalah variabel dan 23
adalah literal bilangan:

x = 23

Lalu, apa konstanta itu? Konstanta menyatakan jenis variabel yang


nilainya tidak dimaksudkan untuk diubah setelah ditetapkan. Umumnya,
konstanta ditulis menggunakan huruf kapital. Ini yang paling disarankan
untuk digunakan. Namun, ketentuan ini tidak mengikat, karena
beberapa konstanta bawaan di Python juga ditulis dengan huruf kecil;

43
misalnya math.pi. Perlu diketahui, True, False, dan None juga
contoh konstanta yang disediakan oleh Python.

Contoh pembuatan konstanta:

GRAVITASI = 9.8

Jika, dilihat dari contoh tersebut, konstanta tidak berbeda dengan


variabel seperti x, kecuali penulisannya yang menggunakan huruf
kapital.

Apakah penulisan dengan huruf kapital membuat nilai yang


dinyatakan oleh GRAVITASI tidak bisa diubah? Mungkin pertanyaan
seperti akan muncul. Jawabannya, tidak. Nilai yang dinyatakan oleh
GRAVITASI tetap bisa diubah. Namun, penulisan dengan huruf kapital
mengisyaratkan bahwa GRAVITASI berkedudukan sebagai konstanta.

1.11 Cara Membaca Data dari Papan Ketik


Sering kali diperlukan untuk membaca data dari papan ketik.
Keperluan ini dapat dipenuhi menggunakan fungsi input(). Bentuk
penggunaanya seperti berikut:

variabel = input()

variabel = input(“Penjelasan”)

Pada format tersebut, “penjelasan” berupa keterangan kepada


pemakai mengenai data yang harus dimasukkan dari papan ketik. Jika
tidak disertakan, penjelasan biasa dilakukan melalui print(). Contoh:

44
>>> nama = input("Masukkan nama Anda: ")
Masukkan nama Anda: Danang
>>> print(nama)
Danang
>>>

Pada contoh di atas, “Masukkan nama Anda” muncul karena disebutkan


pada argumen input(). Tampak bahwa sesudah Danang diketik dan
tombol Enter ditekan, nama berisi “Danang”.

Nilai balik input() selalu berupa string. Seandainya, yang


dikehendaki adalah data bertipe bilangan, maka fungsi float() atau
int() bisa digunakan. Contoh berikut menunjukkan cara
memperoleh bilangan bulat yang dihasilkan oleh input():

 Berkas: usia.py

usia = int(input("Berapa usia Anda? "))


print("Satu tahun lagi usia Anda",
usia + 1, "tahun")

Akhir berkas

Pada skrip ini, int(input("Berapa usia Anda? ")) mengubah


hasil input() ke tipe int. Oleh karena, usia menyatakan bilangan,
penggunaan usia + 1 pada print() dimungkinkan.

Berikut adalah hasil eksekusi skrip usia.py:

C:\pyGUI>usia.py
Berapa usia Anda? 20
Satu tahun lagi usia Anda 21 tahun

C:\pyGUI>

45
1.12 Ekspresi, Operator, dan Operan
Ekspresi dimaksudkan untuk menghasilkan suatu nilai. Umumnya,
ekspresi mengandung operator dan operan. Operator adalah simbol
yang mewakili suatu operasi. Sebagai contoh, + menyatakan operasi
penjumlahan dan * menyatakan operasi perkalian. Adapun operan
adalah bagian yang dikenai operasi oleh operator. Contoh ekspresi
ditunjukkan pada Gambar 1.15.

Gambar 1.15 Ekspresi yang menghasilkan nilai 23

1.11.1 Operator Aritmetika


Operator aritmetika digunakan untuk melaksanakan perhitungan
Matematika. Operator aritmetika yang tersedia dapat dilihat pada Tabel
1.5.

Tabel 1.5 Daftar operator aritmetika

46
Operator Keterangan Contoh
** Pangkat 3 ** 2  9
25 ** 0.5  5
- Negasi -5
* Perkalian 2*36
/ Pembagian pecahan 3 / 2  1.5
3 / 1.0  1.5
// Pembagian bulat 3 // 2  1
(Tipe hasil menyesuaikan tipe 3 // 1.0  1.0
operan)
% Sisa pembagian 3%21
8%32
+ Penjumlahan 1+34
- Pengurangan 8–26
Ketentuan yang berlaku pada operasi aritmetika adalah seperti
berikut.
 Jika terdapat operan yang berupa bilangan kompleks, yang lain
akan dikonversi ke bilangan kompleks.
 Kalau terdapat operan yang berupa bilangan titik-mengambang,
yang lain akan dikonversi ke bilangan titik-mengambang.
 Kalau semua operan berupa bilangan bulat, tidak ada konversi
tipe data.
Itulah sebabnya, ekspresi 1 + 1.0 akan menghasilkan 2.0. Akan
tetapi, 1 + 2 menghasilkan 2.
Contoh beberapa operasi aritmetika dapat dilihat pada skrip
berikut:

 Berkas: aritmetik.py

print("5 ** 2 = ", 5 ** 2)
print("25 ** 0.5 = ", 25 ** 0.5)

print("2 + 3 = ", 1 + 2)
print("2 - 3 = ", 1 - 2)

47
print("2 * 3 = ", 2 * 3)
print("20 / 3 = ", 20 / 3)
print("20 // 3 = ", 20 // 3)

print("20 % 3 = ", 20 % 3)

Akhir berkas
Hasilnya ditunjukkan berikut ini.

C:\pyGUI>aritmetik.py
5 ** 2 = 25
25 ** 0.5 = 5.0
2 + 3 = 3
2 - 3 = -1
2 * 3 = 6
20 / 3 = 6.666666666666667
20 // 3 = 6
20 % 3 = 2

C:\pyGUI>

Perhatikan bahwa operator ** dapat digunakan untuk menghitung


25 dengan menuliskan 25 ** 0.5.

1.11.2 Prioritas Operator


Tidak semua operator mempunyai prioritas yang sama. Hal itu
ditunjukkan pada Tabel 1.6.

Tabel 1.6 Daftar prioritas operator


Prioritas Operator
Tertinggi () (Tuple)
[] (List)
{} (Dictionary)
`objek` (konversi string)
objek[i] (Indeks)

48
Prioritas Operator
objek[i:j] (Irisan)
x.atribut (Referensi atribut)
fungsi() (Pemanggilan fungsi)
await x (Ekspresi await)
**( Pangkat)
+x (Positif)
-x (Negatif)
~x (Negasi bit)
*, /, //, %
+, - (sebagai penjumlahan dan pengurangan)
<<, >>
&
^
|
<, <=, >, >=, !=, <>, is, is not, in, not in
= %= /= //= -= += *= **=
not
and
or
Ekspresi berkondisi
Ekspresi lambda
Terendah := (operator walrus)

Apabila operator-operator mempunyai prioritas yang sama,


umumnya pengerjaan akan dilakukan dari kiri ke kanan, kecuali ** yang
akan dikerjakan dari kanan ke kiri. Perlu diketahui, istilah asosiativitas
sering disebutkan untuk melukiskan pengerjaan operator dari kiri ke
kanan atau dari kanan ke kiri pada saat suatu ekspresi mengandung
beberapa operator yang prioritasnya sama. Asosiativitas kiri berarti
pengerjaan dari kanan ke kiri, sedangkan asosiativitas kanan berarti

49
pengerjaan dari kanan ke kiri. Perlu juga diketahui, operator
pembandingan seperti < dan > merupakan operator non-asosiatif. Non-
asosiatif berarti bahwa pengerjaan operator belum ditentukan sehingga
keberadaannya jika lebih dari satu dalam suatu ekspresi bisa saja
menimbulkan kesalahan sintaksis atau mempunyai makna yang
berbeda.

Sebagai contoh, terdapat ekspresi seperti berikut:

10 % 3 * 2

Dalam hal ini, % dan * mempunyai prioritas sama. Maka, 10 % 3 akan


dikerjakan dahulu. Kemudian, hasilnya akan dikalikan dengan 1. Jadi, 10
% 3 * 2 = 1 * 2 = 1.

Untuk menunjukkan prioritas yang lebih tinggi, sering kali karakter


spasi ditiadakan pada operator dengan prioritas lebih tinggi. Contoh,
ekspresi di depan biasa ditulis menjadi:

10%3 * 2

Bagaimana pengerjaan pada ekspresi berikut?

5 ** 2 ** 3

Operator ** mempunyai asosiativitas kanan. Maka, 2 ** 3 akan


dikerjakan terlebih dahulu. Jadi, 5 ** 2 ** 3 = 5 ** 8 = 390625. Jadi,
ekspresi itu bisa ditulis menjadi:

5 ** 2**3

Sebagaimana telah disinggung di depan, terdapat operator non-


asosiatif, yakni operator pembanding seperti < dan >. Sebagai contoh:

7 < 4 > 2

50
Apakah ekspresi seperti ini valid? Ternyata valid karena ekspresi seperti
itu mempunyai makna khusus, yaitu identik dengan:

7 < 4 and 4 > 2

Tidak semua operator dapat digunakan dalam suatu ekspresi yang


mengandung operator lain. Sebagai contoh, ekspresi berikut akan
menimbulkan kesalahan sintaksis:

x = y += z

Kesalahan yang terjadi dapat dilihat pada contoh berikut:

>>> x, y, z = 5, 6, 7
>>> x = y += z
File "<stdin>", line 1
x = y += z
^^
SyntaxError: invalid syntax
>>>

Tampak bahwa operator += tidak dapat digunakan bersama-sama


dengan operator =.

Berdasarkan Tabel 1.6, prioritas * lebih tinggi daripada +


(penjumlahan). Oleh karena itu, ekspresi 3 + 7 * 2 (bisa ditulis menjadi 3
+ 7*2) akan menghasilkan 17. Gambar 1.16 menjelaskan hasil ini.

51
Gambar 1.16 Evaluasi ekspresi 3 + 4 * 5

Prioritas dalam mengevaluasi ekspresi dapat diatur melalui


penggunaan tanda kurung. Sebagai contoh, penulisan (3 + 4) * 5 akan
menghasilkan 35. Hal ini disebabkan penggunaan kurung pada (3 + 4)
membuat 3 + 4 dihitung terlebih dahulu (Gambar 1.17).

52
Gambar 1.17 Evaluasi ekspresi (3 + 4) * 5

1.11.3 Operator untuk String


Operator penggabungan string yang berupa + berguna untuk
menggabungkan dua string menjadi satu string. Contoh:

>>> "123" + "45"


'12345'
>>>

Tanda + pada bentuk di atas bisa ditiadakan sepanjang yang di kiri


dan di kanannya adalah literal string (bukan variabel). Contoh:

>>> "123" "45"


'12345'
>>>

53
Pada string, operator * juga bisa digunakan untuk menghasilkan
string. Bentuk pemakaiannya seperti berikut:

string * n

Dalam hal ini, hasilnya berupa pengulangan string sebanyak n kali.

Contoh berikut menghasilkan string yang merupakan pengulangan


“Abc-“ sebanyak lima kali:

>>> "Abc-" * 5
'Abc-Abc-Abc-Abc-Abc-'
>>>

1.11.4 Operator Pembanding


Operator pembanding berguna untuk membandingkan dua operan
dengan hasil berupa nilai bertipe bool (yakni True atau False).
Daftar operator pembanding ditunjukkan pada Tabel 1.7. Hal yang
menarik, operator pembanding dapat dikenakan pada berbagai tipe
data, termasuk pada struktur data seperti senarai (list) dan tupel (tuple).

Tabel 1.7 Daftar operator pembanding

Operator Keterangan Contoh


> Lebih dari 8 > 7  True
< Kurang dari 8 < 7  False
== Sama dengan 8 == 7  False
!= Tidak sama dengan 8 != 7  True
>= Lebih dari atau sama dengan 8 >= 7  True
<= Kurang dari atau sama dengan 8 <= 7  False

54
Contoh penggunaan > pada string ditunjukkan berikut ini:

>>> "pelangi" > "Pelangi"


True
>>> "P" > "p"
False
>>>

Pembandingan string didasarkan pada nilai ASCII karakter-karakter


yang menyusun string. Contoh nilai ASCII sejumlah karakter dapat
dilihat pada Tabel 1.8. Beberapa contoh pembandingan string dapat
dilihat pada Tabel 1.9.

Tabel 1.8 Nilai ASCII sejumlah karakter

Karakter Nilai ASCII Karakter Nilai ASCII


A 65 a 97
B 66 b 98
C 67 c 99
D 68 d 100
Z 90 z 122
0 48 @ 64
1 49 * 42
9 57 + 43

Tabel 1.9 Contoh penggunaan operator relasional pada karakter


Ekspresi Makna Hasil
‘a’ == ‘A’ String ‘a’ sama dengan False
string ‘A’?
‘A’ != ‘a’ String ‘A’ tidak sama True
dengan string ‘a’?

55
Ekspresi Makna Hasil
‘A’ > ‘a’ String ‘A’ lebih besar False. Nilai ASCII ‘A’ sama
daripada string ‘a’? dengan 65, sedangkan
nilai ASCII ‘a’ adalah 97
‘A’ < ‘a’ String ‘A’ lebih kecil True
daripada ‘a’?
‘M’ <= ‘Z’ String ‘M’ kurang dari atau True
sama dengan ‘Z’?
‘m’ <= ‘Z’ String ‘m’ kurang dari atau False
sama dengan ‘Z’?
‘C’ >= ‘A’ String ‘C’ lebih besar True
daripada atau sama dengan
‘A’?
‘AB’ < ‘Ab’ String AB’ kurang dari atau True. Pembandingan
sama dengan ‘Ab’? dilakukan pada huruf
kedua pada string
masing-masing
mengingat huruf
pertama sama

1.11.5 Operator Logika


Operator logika berguna untuk membentuk suatu keadaan logika
(benar atau salah) berdasarkan satu atau dua ekspresi Boolean (ekspresi
yang menghasilkan nilai True atau False). Tiga operator logika dapat
dilihat pada Tabel 1.10.

Tabel 1.10 Daftar operator logika

Operator Keterangan Bentuk Penggunaan

56
Operator Keterangan Bentuk Penggunaan
and Operasi “dan” ekspresi1 and ekspresi2
or Operasi “atau” ekspresi1 or eukspresi2
not Operasi negasi not ekspresi
(kebalikan)
Tabel kebenaran ketiga operator logika ditunjukkan pada Tabel
1.11.
Tabel 1.11 Tabel kebenaran operasi menggunakan operator logika

x Y not x x and y x or y
False False True False False
False True True False True
True False False False True
True True False True True

Pada operasi dengan not, hasil berupa True kalau operan bernilai
False. Sebaliknya, hasil berupa False kalau operan bernilai True.
Pada operasi dengan and, hasil berupa True hanya kalau kedua
operan bernilai True. Pada operasi dengan or, hasil berupa True
kalau terdapat operan bernilai True.

Sebagai contoh, penggunaan or adalah untuk menentukan suatu


pilihan berada dalam jangkauan 1 hingga 3 atau tidak. Penulisannya
seperti berikut:
pilihan == "1" or pilihan == "2" or pilihan == "3"

Ekspresi tersebut akan menghasilkan True atau False bergantung


pada nilai yang dinyatakan oleh variabel pilihan.

Pengujian dapat dilakukan melalui skrip berikut:

57
 Berkas: operor.py

pilihan = input("Masukkan pilihan (1, 2, atau 3): ")

hasil = pilihan == "1" or pilihan == "2" or \


pilihan == "3"

print("hasil = ", hasil)

Akhir berkas

Pada pernyataan berikut, tanda \ menyatakan bahwa bagian


pernyataan masih berlanjut ke baris berikutnya:
hasil = pilihan == "1" or pilihan == "2" or \
pilihan == "3"

Hasil pengujian skrip operor.py ditunjukkan berikut ini:

C:\pyGUI>operor.py
Masukkan pilihan (1, 2, atau 3): 1
hasil = True

C:\pyGUI>operor.py
Masukkan pilihan (1, 2, atau 3): 2
hasil = True

C:\pyGUI>operor.py
Masukkan pilihan (1, 2, atau 3): 3
hasil = True

C:\pyGUI>operor.py
Masukkan pilihan (1, 2, atau 3): 4
hasil = False

C:\pyGUI>

Tampak bahwa untuk masukan berupa 1, 2, atau 3, hasilnya True,


sedangkan masukan 4 menghasilkan False.

Perlu diketahui, pernyataan

58
hasil = pilihan == "1" or pilihan == "2" \
or pilihan == "3"

juga bisa ditulis menggunakan and seperti berikut:


hasil = pilihan >= "1" and pilihan <= "3"

Aplikasi and ditunjukkan pada skrip berikut:

 Berkas: operand.py

karakter = input("Masukkan sebuah karakter: ")

huruf_kapital = karakter >= "A" and karakter <= "Z"

print("Huruf kapital? = ", huruf_kapital)

Akhir berkas

Pernyataan berikut akan memberikan hasil True hanya kalau


karakter menyatakan huruf kapital:
huruf_kapital = karakter >= "A" and karakter <= "Z"

Sebagai contoh, jika karakter adalah “b”, maka karakter >= "A"
bernilai True, akan tetapi karakter <= "Z" bernilai False. Dengan
demikian, operasi dengan and menghasilkan False. Jika karakter
adalah “G”, maka karakter >= "A" bernilai True dan karakter <=
"Z" juga bernilai True. Dengan demikian, operasi dengan and
menghasilkan True.

Hasil pengujian skrip operand.py dapat dilihat berikut ini:

59
C:\pyGUI>operand.py
Masukkan sebuah karakter: G
Huruf kapital? = True

C:\pyGUI>operand.py
Masukkan sebuah karakter: b
Huruf kapital? = False

C:\pyGUI>

Perlu diketahui, ekspresi


karakter >= "A" and karakter <= "Z"

bisa ditulis menjadi:

"A" <= karakter <= "Z"

Contoh penggunaan operator not dapat dilihat pada skrip


berikut:

 Berkas: opernot.py

print("Operator not")
print("------------")

keadaan = False

print("Nilai semula: ", keadaan)

keadaan = not keadaan


print("Hasil melalui not keadaan: ", keadaan)

keadaan = not keadaan


print("Hasil melalui not keadaan: ", keadaan)

Akhir berkas

Hasil pemanggilan skrip opernot.py adalah seperti berikut:

60
C:\pyGUI>opernot.py
Operator not
------------
Nilai semula: False
Hasil melalui not keadaan: True
Hasil melalui not keadaan: False

C:\pyGUI>

1.11.6 Operator Berbasis Bit


Bit berasal dari “binary digit”. Satu bit menyatakan satu angka 0
atau 1. Sebagaimana diketahui, pada sistem biner, angka yang dikenal
hanya berupa 0 atau 1.

Untuk memahami operasi pada tataran bit, penomoran bit seperti


yang diperlihatkan pada Gambar 1.18 perlu diperhatikan. Bit terendah
mempunyai posisi 0. Angka 158 pada contoh tersebut berasal dari 0 x 20
+ 1 x 21 + 1 x 22 + 1 x 23 + 0 x 24 + 0 x 25 + 0 x 26 + 1 x 27.

Gambar 1.18 Bilangan biner dan posisi bit

61
Penulisan literal dalam sistem biner telah diperkenalkan pada Sub-
subbab 1.9.1. Sebagai contoh, 158 dalam sistem desimal dapat ditulis
menjadi 0b10011110. Lalu, bagaimana kalau ingin menampilkan suatu
bilangan desimal ke sistem biner? Fungsi bin() bisa digunakan untuk
keperluan ini. Contoh:

>>> bin(158)
'0b10011110'
>>> bin(255)
'0b11111111'
>>>

Python menyediakan enam operator yang berbasis bit.


Keseluruhan operator dapat dilihat pada Tabel 1.11.
Tabel 1.12 Daftar operator berbasis bit

Operator Keterangan Contoh


& Operator berbasis bit “dan” 157 & 1  1
mempunyai bentuk 158 & 1  0
penggunaan seperti berikut:
a&b 158 & 15  14
158 & 126  30
^ Operator berbasis bit “atau 158 ^ 126  224
eksklusif” mempunyai bentuk
penggunaan seperti berikut:
a^b
| Operator berbasis bit “atau” 158 | 126  254
mempunyai bentuk
penggunaan seperti berikut:
a|b
~ Operator komplemen ~81  -82
mempunyai bentuk ~-82  81
penggunaan seperti berikut:
~a

62
Operator Keterangan Contoh
>> Operator geser bit ke kanan 15 >> 1  7
mempunyai bentuk 15 >> 2  3
penggunaan seperti berikut:
x >> n
<< Operator geser bit ke kiri 15 << 1  30
mempunyai bentuk 15 << 2  60
penggunaan seperti berikut:
x << n
Seluruh kemungkinan operasi dengan &, |, dan ^ pada level bit
untuk posisi bit yang sama diperlihatkan pada Tabel 1.12.

Tabel 1.13 Operasi dengan operator &, |, dan ^

Hasil
Bit Operan 1 Bit Operan 2
& | ^
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Skrip berikut menunjukkan contoh penggunaan berbagai operator


berbasis bit:

 Berkas: bit.py

x = 77
print("Nilai ", x, " sekarang: ", x,
" (", bin(x), ")")

x |= 3
print("Nilai ", x, " setelah x |= 3 (",
bin(3), "): ", x, " (", bin(x), ")");

x &= 47

63
print("Nilai ", x, " setelah x &= 47 (",
bin(47), "): ", x, " (", bin(x), ")")

x ^= 131
print("Nilai ", x, " setelah x ^= 131 (",
bin(131), "): ", x, " (", bin(x), ")")

x >>= 1
print("Nilai ", x, " setelah x >>= 1: ", x)

x <<= 1
print("Nilai ", x, " setelah x <<= 1: ", x)

Akhir berkas

Hasilnya ditunjukkan berikut ini:

C:\pyGUI>bit.py
Nilai 77 sekarang: 77 ( 0b1001101 )
Nilai 79 setelah x |= 3 ( 0b11 ): 79 (
0b1001111 )
Nilai 15 setelah x &= 47 ( 0b101111 ): 15 (
0b1111 )
Nilai 140 setelah x ^= 131 ( 0b10000011 ):
140 ( 0b10001100 )
Nilai 70 setelah x >>= 1: 70
Nilai 140 setelah x <<= 1: 140

C:\pyGUI>

Penjelasan operasi dengan &, ^, dan | dapat dilihat pada Gambar


1.19.

64
Gambar 1.19 Penjelasan operasi atau, dan, atau eksklusif untuk tataran
bit

Gambar 1.20 menjelaskan operasi penggeseran bit ke kanan.

65
Gambar 1.20 Penjelasan operasi penggeseran 1 bit ke kanan

Pada bilangan bertanda (bisa negatif atau positif), hasil ~n berupa:

-(n) – 1

Dengan demikian, ~81 menghasilkan -82 (berasal dari –(81) -1). Adapun
hasil ~-82 akan berupa 81 (berasal dari –(-82) – 1).

1.11.7 Operator Identitas


Operator identitas adalah operator yang digunakan untuk
membandingkan dua objek. Umumnya, operator ini dipakai untuk
memeriksa tipe data. Namun, operator ini bisa juga digunakan untuk
menguji nilai None. Dua operator identitas berupa is dan is not.

 Operator is memberikan nilai True kalau operan yang ada di


kiri dan kanan merupakan objek yang sama.

 Operator is not memberikan nilai True kalau operan yang


ada di kiri dan kanan tidak merupakan objek yang sama.

Skrip berikut menunjukkan contoh penggunaan is dan is not:

 Berkas: isnot.py

print("Operator is dan is not")


print("----------------------")

bilangan = 30

print(type(bilangan) is int)
print(type(bilangan) == int)

print(type(bilangan) is not int)

Akhir berkas

66
Hasil pengujian isnot.py adalah seperti berikut:

C:\pyGUI>isnot.py
Operator is dan is not
----------------------
True
True
False

C:\pyGUI>

Tampak bahwa hasil is dan == sama. Namun, apakah is dan ==


itu sama? Jawabannya adalah ada perbedaan. Operator == lebih
menekankan pada “dua objek memiliki nilai sama”, sedangkan is
menyatakan “dua objek memiliki identitas yang sama”. Perbedaan tidak
terlihat untuk data yang bersifat immutable, misalnya bilangan.

Perbedaan akan terlihat pada data yang bersifat mutable, misalnya


pada senarai (list). Contoh:

>>> daftar_a = [1, 2, 3]


>>> daftar_b = daftar_a[:]
>>> daftar_a
[1, 2, 3]
>>> daftar_b
[1, 2, 3]
>>> daftar_a == daftar_b
True
>>> daftar_a is daftar_b
False
>>> id(daftar_a)
1830094208576
>>> id(daftar_b)
1830094484480
>>>

67
Pada contoh di atas, daftar_a = [1, 2, 3] membuat
daftar_a menyatakan senarai [1, 2, 3], Lalu, pernyataan daftar_b
= daftar_a[:] menyalin senarai yang dinyatakan oleh daftar_a.
sesudah penyalinan senarai dilakukan, tampak bahwa baik senarai yang
dinyatakan oleh daftar_a maupun daftar_b mempunyai nilai yang
sama. Akan tetapi, pembandingan menggunakan == dan is
memberikan hasil yang berbeda. Hal itu disebabkan, identitas kedua
senarai ternyata berbeda.

1.11.8 Operator Keanggotaan


Operator keanggotaan berguna untuk memeriksa suatu data
berada dalam suatu objek atau tidak. Operator keanggotaan dapat
berupa in atau not in. Operator ini biasa digunakan pada senarai.

 Operator in memberikan nilai True sekiranya data yang


dicari tersedia di objek.

 Operator not in memberikan nilai True sekiranya data yang


dicari tidak tersedia di objek.

Contoh:

>>> senarai = [1, 2, 3, 4, 5]


>>> 2 in senarai
True
>>> 7 in senarai
False
>>> 2 not in senarai
False
>>> 7 not in senarai
True
>>>

68
Mengingat 2 terdapat pada [1, 2, 3, 4, 5], maka 2 in senarai
menghasilkan True, sedangkan 7 in senarai menghasilkan
False karena 7 memang tidak terdapat pada senarai 7 not in
senarai justru memberikan hasil True.

Operator in dapat diterapkan pada string. Bentuk


penggunaannya:

str1 in str2

Hasil berupa True kalau string str1 terdapat pada string str1. Contoh:

>>> "ana" in "Diana"


True
>>> "Ana" in "Diana"
False
>>>

Pada contoh pertama, “ana” ditemukan pada “diana”. Itulah


sebabnya, hasilnya berupa True. Pada contoh kedua, “Ana” tidak
terdapat pada “Diana”. Oleh karena itu, hasilnya berupa False.

Operator not in juga dapat diterapkan pada string. Hasilnya


adalah kebalikan dari in. Contoh:

>>> "ana" not in "Diana"


False
>>> "Ana" in "Diana"
True
>>>

69
1.11.9 Operator Penugasan
Operator penugasan yang sudah biasa digunakan adalah =. Namun
sebenarnya terdapat pula sejumlah operator penugasan dengan
bentuk:

simbol=

Tabel 1.14 mencantumkan operator penugasan dengan bentuk


seperti tersebut.

Tabel 1.14 Daftar operator penugasan

Operator Penggunaan Keterangan


+= x += n Kependekan dari x = x + n
-= x -= n Kependekan dari x = x – n
*= x *= n Kependekan dari x = x * n
/= x /= n Kependekan dari x = x / n
%= x %= n Kependekan dari x = x % n
**= x **= n Kependekan dari x = x ** n
&= x &= n Kependekan dari x = x & n
^= x ^= n Kependekan dari x = x ^ n
|= x |= n Kependekan dari x = x | n
<<= x <<= n Kependekan dari x = x << n
>>= x >>= n Kependekan dari x = x >> n
Skrip berikut menunjukkan contoh penggunaan beberapa operator
penugasan:

 Berkas: penugasan.py

x = 5
print("Nilai x sekarang: ", x)

70
x += 2
print("Nilai x setelah x += 2: ", x)

x -= 3
print("Nilai x setelah x -= 3: ", x)

x *= 2
print("Nilai x setelah x *= 2:", x)

x /= 2
print("Nilai x setelah x /= 2: ", x)

x **= 2
print("Nilai x setelah x **= 2: ", x)

x %= 3
print("Nilai x setelah x %= 3: ", x)

Akhir berkas

Hasilnya seperti berikut:

C:\pyGUI>penugasan.py
Nilai x sekarang: 5
Nilai x setelah x += 2: 7
Nilai x setelah x -= 3: 4
Nilai x setelah x *= 2: 8
Nilai x setelah x /= 2: 4.0
Nilai x setelah x **= 2: 16.0
Nilai x setelah x %= 3: 1.0

C:\pyGUI>

1.13 Nilai None


Nilai None digunakan untuk menyatakan “ketiadaan data” atau
dalam bahasa pemrograman lain dinyatakan dengan null. Nilai ini
tidak sama dengan nilai 0, string kosong, atau False. Tipe untuk None
adalah NoneType. Contoh:

71
>>> x = None
>>> x is None
True
>>> x is not None
False
>>> type(x)
<class 'NoneType'>
>>>

1.14 Penyertaan Komentar


Dalam bahasa pemrograman, komentar digunakan sebagai
penjelas bagi orang yang membaca kode sumber. Komentar akan
diabaikan ketika skrip dieksekusi.

Komentar pendek (hanya satu baris atau sebagian baris) ditulis


dengan awalan #. Dengan sendirinya, dimulai dari simbol tersebut
hingga akhir baris akan dianggap sebagai komentar. Contoh:

 # print("Tes")

 print("Tes") # Contoh komentar

Pada contoh pertama, print("Tes") adalah bagian komentar. Pada


contoh kedua, print("Tes") berkedudukan sebagai pernyataan. Di
kanannya terdapat komentar.

Kalau mau membuat komentar yang panjang (terdiri lebih dari


satu baris), awalan dan akhiran tiga petik ganda bisa dipakai. Contoh:

""" Bagian berikut

digunakan untuk melakukan

perhitungan luas poligon """

72
1.15 Penggunaan Modul
Python menyediakan banyak modul yang berisi fungsi atau
konstanta. Beberapa modul belum dimuat di memori komputer. Oleh
karena itu modul seperti itu harus diimpor terlebih dahulu. Perintah
yang diperlukan adalah import dengan bentuk:

import nama_modul

Perlu diketahui, setiap skrip Python adalah modul.

Untuk mempraktikkan suatu skrip bisa menjadi modul, buatlah


skrip berikut terlebih dahulu:

 Berkas: konstanta.py

GRAVITASI = 9.8
PERUSAHAAN = "PT JAVA FLORA"

Akhir berkas

Nah, skrip tersebut dapat diimpor dan konstanta yang terdapat di


skrip tersebut dapat digunakan dengan cara seperti berikut:

>>> import konstanta


>>> print(konstanta.GRAVITASI)
9.8
>>> print(konstanta.PERUSAHAAN)
PT JAVA FLORA
>>>

Salah satu modul bawaan yang berguna untuk melakukan berbagai


operasi Matematika adalah math. Untuk memuat modul ini, perlu
diberikan perintah seperti berikut:

73
import math

Perlu diketahui, modul math menyediakan fungsi seperti cos()


untuk menghitung kosinus suatu sudut, log10() untuk menghitung
logaritma berbasis 10, sqrt() untuk menghitung akar suatu bilangan,
ceil() untuk melakukan pembulatan ke atas, dan factorial()
untuk memperoleh nilai faktorial. Untuk mengetahui fungsi-fungsi
selengkapnya, silakan mengunjungi:

https://docs.python.org/3/library/math.html

Berikut adalah contoh penggunaan fungsi-fungsi di modul math:

>>> import math


>>> math.log10(100)
1.0
>>> math.sqrt(25)
5.0
>>> math.ceil(7.6)
8
>>>

1.16 Fungsi dan Metode


Sejumlah fungsi sebenarnya telah digunakan; misalnya type()
dan print(). Fungsi adalah suatu nama yang mewakili sejumlah
kode dan jika nama tersebut dipanggil maka suatu tindakan yang
spesifik dilaksanakan dan kemudian umumnya akan memberikan nilai
balik. Sebagai contoh, len() adalah fungsi yang tersedia pada Python
untuk mendapatkan jumlah karakter dalam suatu string.

Pada pemanggilan fungsi, bagian yang terletak dalam tanda ()


dinamakan argumen. Argumen merupakan suatu mekanisme untuk
melewatkan nilai dari luar fungsi ke dalam fungsi. Argumen dapat

74
dianggap sebagai masukan bagi fungsi, sedangkan nilai balik adalah
keluaran yang diberikan ke pemanggil fungsi. Gambar 1.21 memberikan
gambaran tentang argumen dan nilai balik.

Gambar 1.21 Gambaran fungsi

Adapun fungsi yang melekat dalam sebuah objek disebut metode.


Bentuk pemanggilan metode:

 nama_objek.nama_metode()
 nama_objek.nama_metode(argumen, …)

Bentuk pertama menyatakan pemanggilan metode yang tidak


memiliki argumen, sedangkan yang kedua ditujukan untuk yang
memiliki argumen. Sebagai contoh, string memiliki banyak metode
untuk memanipulasi string. Salah satu metode yaitu bernama
upper(), yang berguna untuk mengonversi setiap huruf kecil menjadi
huruf kapital. Penggunaannya seperti berikut:

75
>>> teks = "Bahasa Pemrograman"
>>> teks.upper()
'BAHASA PEMROGRAMAN'
>>>

1.17 Tanya dan Jawab


1. Saya pernah melihat ekspresi berupa 10 ** -1. Apa maksudnya?

Jawab:

Pada Matematika, x-1 berarti 1/x. Secara lebih umum, x-y sama
dengan 1/xy. Jadi,10 ** -1 = 1/10.

2. Tanda koma pada print(), misalnya print("A", "B"),


apa memang menyebabkan “A” dan “B” dipisah oleh satu
karakter spasi ketika ditampilkan? Bisakah karakter spasi
tersebut dihilangkan?

Jawab:

Ya, secara bawaan akan ada pemisah berupa karakter spasi.


Kalau karakter spasi mau dibuang, tambahkan argumen berupa
sep = "". Contoh:

print("A", "B", sep = "")

3. Apakah print() bisa diatur agar tidak menambahkan


karakter pindah baris ketika menampilkan sesuatu?

Jawab:

Bisa. Tambahkan saja argumen berupa end = "". Contoh:

print("A", end = ""); print("B")

76
Dua pernyataan tersebut akan membuat A dan B tidak terpisah
baris.

4. Apa yang terjadi jika salah satu operan pada or dan and
bernilai None?

Jawab:

Pada and, jika terdapat operan bernilai None, hasilnya berupa


None.

Pada or, jika salah satu operan bernilai True dan yang satunya
berupa None, hasilnya berupa True. Jika kedua operan
bernilai None, hasil berupa None. Untuk keadaan lainnya
berupa False.

Perlu juga diketahui, not None menghasilkan True.

5. Saya menginginkan hasil bin() tidak menyertakan 0b.


Bagaimana caranya?

Jawab:

Lihat contoh berikut:

>>> bin(267)
'0b100001011'
>>> bin(267)[2:]
'100001011'
>>>

6. Apakah nilai False boleh ditulis menjadi false atau FALSE?

Jawab:

Tidak boleh.

77
1.18 Soal dan Latihan
1. Betul atau salah? Nama seperti pop! Tidak boleh digunakan
untuk menamai variabel.

2. Betul atau salah? Semua skrip Python pada dasarnya adalah


modul.

3. Betul atau salah? Dua pernyataan boleh ditulis dalam satu baris
asal antara kedua pernyataan terdapat koma.

4. Betul atau salah? 5 + 3 * 2 dan 5 + (3 * 2) memberikan hasil


sama.

5. Betul atau salah? Literal bilangan dalam sistem biner ditulis


dengan awalan 0b atau 0B.

6. Operator eksponen atau pangkat di Python berupa _________.

7. Identitas suatu objek dapat diperoleh dengan menggunakan


fungsi ________________.

8. Pernyataan Python yang digunakan untuk menyelesaikan


rumus y  a(1  r ) berupa ________________________.
x

9. Operator logika yang mempunyai sifat bahwa hasil operasi


berupa True kalau terdapat operan yang bernilai True yakni
_____________.

10. Penulisan x = x * 5 dapat disingkat menjadi _____________.

11. Buatlah skrip yang meminta sebuah bilangan bulat dimasukkan


dari papan ketik. Lalu, bentuk binernya ditampilkan.

78
12. Buatlah skrip yang meminta dua data berupa alas dan tinggi
suatu segitiga siku-siku dimasukkan dari papan ketik.
Kemudian, luas segitiga ditampilkan.

Bantuan: Luas segitiga = ½ x alas x tinggi

79
Bab
Dasar Python –
2 Bagian Kedua

Pokok bahasan pada bab ini mencakup hal-hal berikut:


 indentasi pernyataan;
 pernyataan seleksi;
 pernyataan perulangan;
 pernyataan for bersarang;
 pernyataan break, continue, dan exit();
 pernyataan pass;
 pembuatan fungsi;
 pengenalan struktur data senarai, tupel, kamus,
dan himpunan;
 penanganan eksepsi;
 pembuatan kelas dan objek;
 operasi string.

80
2.1 Indentasi Pernyataan
Pada Python, indentasi merupakan hal yang penting karena
indentasi digunakan sebagai blok kode pada pernyataan seperti if,
while, dan for. Sebagai contoh, perhatikan kode berikut:

if x > y:

print("1")

print("2")

print("3")

print("4")

Pada penulisan di atas, print("1"), print("2"), dan


print("3") ditulis menjorok ke kanan terhadap posisi if. Hal itu
menyatakan bahwa ketiga print() tersebut bergantung pada kondisi
x > y milik if. Dalam hal ini, ketiga print() akan dieksekusi jika
kondisi x > y bernilai True. Adapun print("4") karena ditulis
sejajar dengan if, maka eksekusinya tidak bergantung kepada if.
Dalam hal ini, print("1") akan dijalankan kalau pernyataan if
selesai dieksekusi.

Cara membuat indentasi tidak ada ketentuannya. Secara prinsip,


penjorokan satu karakter spasi pun diperbolehkan. Namun, umumnya
empat karakter spasi digunakan oleh para pemrogram untuk mengatur
indentasi.

2.2 Pernyataan Seleksi


Pernyataan seleksi atau biasa juga dinamakan pernyataan
pengambilan keputusan digunakan untuk menangani kasus yang
melibatkan lebih dari satu pilihan. Sebagai contoh, terdapat kasus

81
bahwa seseorang pembeli bisa mendapatkan diskon atau tidak. Kasus
ini menunjukkan bahwa ada dua kemungkinan yang terjadi, yakni 1)
tidak mendapatkan diskon dan 2) mendapatkan diskon. Nah, bagaimana
menangani hal ini? Pernyataan seleksilah yang diperlukan karena
pernyataan ini dapat menentukan seseorang mendapatkan diskon atau
tidak.

Python menyediakan beberapa cara untuk pengambilan


keputusan, yakni berupa:

 pernyataan if;

 pernyataan dengan operator berkondisi.

2.2.1 Pernyataan if
Terdapat tiga bentuk penyataan if, yaitu:

• if saja;

• if…else;

• if…elif.

Bentuk if berupa:

if kondisi:
pernyataan_1
pernyataan_2

pernyataan_n

Perhatikan bahwa pernyataan-pernyataan yang bergantung pada


if ditulis menjorok ke kanan. Pernyataan-pernyataan tersebut akan

82
dijalankan sekiranya ekspresi bernilai True. Tentu saja, jumlah
pernyataan bisa berupa satu saja.

Mekanisme eksekusi pada pernyataan if ditunjukkan pada


Gambar 2.1.

Gambar 2.1 Diagram alir pernyataan if

Contoh berikut menunjukkan cara menggunakan pernyataan if


untuk menentukan suatu bilangan termasuk bilangan ganjil atau tidak:

 Berkas: ganjil.py

print("Penentuan genap atau ganjil")


bilangan = input("Masukkan bilangan bulat: ")
bilangan = int(bilangan)

83
# Penentuan genap atau ganjil
keterangan = "ganjil"
if bilangan % 2 == 0:
keterangan = "genap"

print("bilangan ", keterangan)

Akhir berkas
Hasil pengujian dapat dilihat berikut ini:

C:\pyGUI>ganjil.py
Penentuan genap atau ganjil
Masukkan bilangan bulat: 4
bilangan genap

C:\pyGUI>ganjil.py
Penentuan genap atau ganjil
Masukkan bilangan bulat: 5
bilangan ganjil

C:\pyGUI>

Berikut penjelasan saat bilangan menyatakan 4. Mula-mula,


keterangan menyatakan “ganjil”. Pernyataan if akan membuat
keterangan menyatakan “genap” hanya kalau sisa pembagian
bilangan dengan 2 sama dengan 0. Oleh karena bilangan
menyatakan 4, bilangan % 2 == 0 bernilai True. Akibatnya,
keterangan diubah untuk menyatakan “genap”. Saat bilangan
menyatakan 5, ekspresi bilangan % 2 == 0 bernilai False.
Dengan demikian, keterangan tetap menyatakan “ganjil”.

Contoh berikut menunjukkan penyertaan dua pernyataan pada


bagian yang tergantung oleh if:

84
 Berkas: ganjil2.php

print("Penentuan genap atau ganjil")


bilangan = input("Masukkan bilangan bulat: ")
bilangan = int(bilangan)

# Penentuan genap atau ganjil


keterangan = "ganjil"
print("Mula-mula, keterangan ditugasi dengan 'ganjil'")

if bilangan % 2 == 0:
keterangan = "genap"
print("Kini, keterangan ditugasi dengan 'genap'")

print("bilangan", keterangan)

Akhir berkas

Pada skrip ganjil2.py, terdapat dua pernyataan yang


bergantung pada if, yakni:
keterangan = "genap"
print("Kini, keterangan ditugasi dengan 'genap'")

Hasilnya ditunjukkan berikut ini:

C:\pyGUI>ganjil2.py
Penentuan genap atau ganjil
Masukkan bilangan bulat: 4
Mula-mula, keterangan ditugasi dengan 'ganjil'
Kini, keterangan ditugasi dengan 'genap'
bilangan genap

C:\pyGUI>ganjil2.py
Penentuan genap atau ganjil
Masukkan bilangan bulat: 3
Mula-mula, keterangan ditugasi dengan 'ganjil'
bilangan ganjil

C:\pyGUI>

85
Tampak bahwa untuk bilangan genap, keterangan berikut muncul:

Kini, keterangan ditugasi dengan 'genap'


Keterangan tersebut muncul karena pernyataan yang bergantung pada
if dieksekusi.

2.2.2 Pernyataan if…else


Bentuk kedua pernyataan if melibatkan else. Format
penggunaannya seperti berikut:

If kondisi:
pernyataan_11
pernyataan_12

pernyataan_1n
else:
pernyataan_21
pernyataan_22

pernyataan_2n

Pada if…else, bagian else dijalankan sekiranya kondisi pada


if bernilai False. Gambar 2.24 menunjukkan mekanisme eksekusi
pernyataan-pernyataan yang berada dalam if..else.

86
Gambar 2.2 Diagram alir pernyataan if…else

Skrip berikut menunjukkan cara penyelesaian penentuan bilangan


ganjil atau genap menggunakan if…else:

 Berkas: ganjil3.py

print("Penentuan genap atau ganjil")


bilangan = input("Masukkan bilangan bulat: ")
bilangan = int(bilangan)

# Penentuan genap atau ganjil


if bilangan % 2 == 0:
keterangan = "genap"
else:
keterangan = "ganjil"

print("bilangan", keterangan)

87
Akhir berkas

2.2.3 Pernyataan if..elif


Bentuk ketiga pernyataan if melibatkan elif. Hal ini berguna
untuk menangani kasus pengambilan keputusan yang melibatkan lebih
dari dua kemungkinan. Format penggunaannya:

if kondisi_1:
pernyataan_1
elif kondisi_2:
pernyataan_2
elif (kondisi_3)
pernyataan_3

elif kondisi_m:
pernyataan_m
else:
pernyataan_n

Pada bentuk if ini,

 pernyataan_1 dijalankan hanya kalau kondisi_1 bernilai True


dan pernyataan if berakhir. Jika tidak, bagian kondisi elif
berikutnya diuji;

 pernyataan_2 dijalankan hanya kalau kondisi_1 bernilai True


dan pernyataan if berakhir. Jika tidak, bagian kondisi elif
berikutnya diuji;

88
 pernyataan_m dijalankan hanya kalau kondisi_m bernilai True
dan pernyataan if berakhir. Jika tidak, bagian else
dijalankan;

Perlu diketahui, bagian else boleh tidak ada. Selain itu, setiap
pernyataan (pernyataan_1 hingga pernyataan n) bisa terdiri atas lebih
dari satu pernyataan.

Gambar 2.3 menunjukkan mekanisme eksekusi pernyataan


if…elif.

89
Gambar 2.3 Diagram alir if…elif

Skrip berikut menunjukkan contoh penggunaan if...elif:

 Berkas: hari.py

import datetime
now = datetime.datetime.now()

nama_hari = now.strftime("%A")

if nama_hari == "Sunday":

90
print("Minggu");
elif nama_hari == "Monday":
print("Senin");
elif nama_hari == "Tuesday":
print("Selasa");
elif nama_hari == "Wednesday":
print("Rabu");
elif nama_hari == "Thursday":
print("Kamis");
elif nama_hari == "Friday":
print("Jumat")
else:
print("Sabtu")

Akhir berkas

Argumen date() berupa huruf L kecil, yang berfungsi untuk


mendapatkan nama hari dalam bahasa Inggris. Kemungkinan nilainya
adalah “Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”,
“Friday”, atau “Saturday”. Selanjutnya, kemungkinan nilai-nilai ini
ditangani melalui if…elif.

Hasil eksekusi skrip:

C:\pyGUI>hari.py
Senin

C:\pyGUI>

2.2.4 Ekspresi Berkondisi


Ekspresi berkondisi mempunyai bentuk seperti berikut:

nilai_1 if kondisi else nilai_2

91
Ekspresi ini memberikan hasil sesuai dengan nila1_1 kalau kondisi
bernilai True. Apabila kondisi bernilai False, hasil ekspresi berupa
nilai_2.

Skrip berikut menunjukkan penggunaan operator berkondisi untuk


menentukan suatu bilangan berupa bilangan ganjil atau genap.

 Berkas: ganjil4.py

print("Penentuan genap atau ganjil")


bilangan = input("Masukkan bilangan bulat: ")
bilangan = int(bilangan)

# Penentuan genap atau ganjil


keterangan = "genap" if bilangan % 2 == 0 else "ganjil";

print("bilangan", keterangan)

Akhir berkas

Pada pernyataan berikut, keterangan akan menyatakan


“genap” sekiranya bilangan berupa bilangan genap atau sebaliknya,
keterangan menyatakan “ganjil” apabila bilangan berupa
bilangan ganjil:
keterangan = "genap" if bilangan % 2 == 0 else "ganjil";

Contoh pengujian skrip ganjil4.py:

92
C:\pyGUI>ganjil4.py
Penentuan genap atau ganjil
Masukkan bilangan bulat: 4
bilangan genap

C:\pyGUI>ganjil4.py
Penentuan genap atau ganjil
Masukkan bilangan bulat: 6
bilangan genap

C:\pyGUI>

2.3 Pernyataan Perulangan


Pernyataan perulangan adalah pernyataan yang ditujukan untuk
menjalankan suatu tindakan beberapa kali. Sebagai contoh, tulisan
“Python” dapat dibentuk sebanyak n kali melalui pernyataan
perulangan.

Python menyediakan dua pernyataan perulangan, yaitu:

 while;

 for.

 Di dalam perulangan terdapat istilah


iterasi. Satu iterasi adalah satu proses
utuh yang dieksekusi dalam perulangan.
Sebagai contoh, jika suatu proses telah
dieksekusi selama lima kali di dalam
perulangan, maka terdapat lima iterasi.
 Istilah kalang (loop) juga sering disebut
dalam bahasa pemrograman untuk
menyatakan perulangan.

93
2.2.1 Pernyataan while
Pernyataan while mempunyai bentuk seperti berikut:

while kondisi:
pernyataan_1
pernyataan_2

pernyataan_n

Pengulangan terhadap bagian pernyataan_1 hingga pernyataan_n


(yang disebut tubuh while) dilakukan selama kondisi di while
bernilai benar. Gambar 2.4 memperlihatkan diagram alir pernyataan ini.

Gambar 2.4 Diagram alir pernyataan while

94
Skrip berikut menunjukkan contoh penggunaan while untuk
menampilkan n tulisan “Python” dengan n dikontrol melalui variabel:

 Berkas: ntulisan.py

jumlah = int(input("Jumlah: "))

pencacah = 1;

while pencacah <= jumlah:


print("Python")

pencacah += 1

Akhir berkas

Contoh hasil pengujian skrip ntulisan.py:

C:\pyGUI>ntulisan.py
Jumlah: 5
Python
Python
Python
Python
Python

C:\pyGUI>

Pada skrip ntulisan.py, variabel pencacah digunakan untuk


menghitung tulisan “Python”. Pada keadaan awal, pencacah
mencatat 1. Adapun kondisi di while berupa pencacah <= 5 untuk
jumlah = 5. Berikut adalah penjelasan perulangan yang terjadi.

 Pada saat while dieksekusi, kondisi berupa 1 <= 5, yang


memberikan nilai True. Oleh karena itu, pernyataan yang
bergantung pada while dieksekusi. Dengan demikian, tulisan

95
“Python” ditampilkan untuk yang pertama kali dan pencacah
mencatat 2 berkat pernyataan pencacah += 1.

 Tahap berikutnya, kondisi di while diuji kembali. Dalam hal


ini, kondisi berupa 2 <= 5, yang memberikan nilai True.
Oleh karena itu, pernyataan yang bergantung pada while
dieksekusi. Dengan demikian, tulisan “Python” ditampilkan
untuk yang kedua kali dan pencacah mencatat 3 berkat
pernyataan pencacah += 1.

 Lalu, kondisi di while diuji kembali. Dalam hal ini, kondisi


berupa 3 <= 5, yang memberikan nilai True. Oleh karena
itu, pernyataan yang bergantung pada while dieksekusi.
Dengan demikian, tulisan “Python” ditampilkan untuk yang
ketiga kali dan pencacah mencatat 4 berkat pernyataan
pencacah += 1.

 Kemudian, kondisi di while diuji kembali. Dalam hal ini,


kondisi berupa 4 <= 5, yang memberikan nilai True. Oleh
karena itu, pernyataan yang bergantung pada while
dieksekusi. Dengan demikian, tulisan “Python” ditampilkan
untuk yang keempat kali dan pencacah mencatat 5 berkat
pernyataan pencacah += 1.

 Selanjutnya, kondisi di while diuji kembali. Dalam hal ini,


kondisi berupa 5 <= 5, yang memberikan nilai True. Oleh
karena itu, pernyataan yang bergantung pada while
dieksekusi. Dengan demikian, tulisan “Python” ditampilkan
untuk yang kelima kali dan pencacah mencatat 6 berkat
pernyataan pencacah += 1.

96
 Kondisi di while diuji kembali. Dalam hal ini, kondisi berupa 6
<= 5, yang memberikan nilai False. Keadaan ini membuat
while diakhiri.

Dengan demikian, jumlah tulisan “Python” yang ditampilkan lima


kali. Berdasarkan hal ini, jika 5 pada pencacah <= 5 diganti dengan
nilai n, tulisan “Pyhon” akan ditampilkan n kali.

Contoh berikut menunjukkan cara menampilkan deret yang


menurun:

10

 Berkas: deret.py

bilangan = 10

while bilangan >= 0:


print(bilangan)

bilangan -= 2

Akhir berkas

Pada skrip ini, bilangan = 10 menyatakan bilangan yang


pertama kali ditampilkan. Kondisi bilangan >= 0 digunakan untuk
mengontrol perulangan. Dalam hal ini, pengulangan terhadap perintah
berikut dilakukan selama kondisi tersebut bernilai True:

97
print(bilangan")

bilangan -= 2

Adapun bilangan -= 2 membuat bilangan berkurang dua pada setiap


iterasi.

Hasilnya seperti berikut:

C:\pyGUI>deret.py
10
8
6
4
2
0

C:\pyGUI>

2.2.2 Pernyataan for


Pernyataan for memang digunakan untuk menangani perulangan,
akan tetapi konsepnya berbeda dengan while. Pernyataan for lebih
ditujukan untuk mengambil satu nilai yang terdapat pada struktur data
seperti tupel ataupun senarai pada setiap iterasi. Namun, dalam praktik,
for bisa digunakan untuk menangani persoalan-persoalan di luar
struktur data.

Bentuk dasar pernyataan for seperti berikut:

for variabel in [nilai_1, nilai_2, …] {


pernyataan_1
pernyataan_2

pernyataan_n
}

98
Pada iterasi pertama, variabel bernilai nilai_1. Pada iterasi kedua,
variabel bernilai nilai_2, dst.

Contoh berikut menunjukkan penggunaan for untuk


menampilkan 5 kali tulisan “Python” dan sebelum tulisan “Python”
dimunculkan nilai variabel yang digunakan pada for:

 Berkas: for.py

for pencacah in [1, 2, 3, 4, 5]:


print(pencacah, "Python");

Akhir berkas

Hasilnya seperti berikut:

C:\pyGUI>for.py
1 Python
2 Python
3 Python
4 Python
5 Python

C:\pyGUI>

Lalu, bagaimana kalau mau menampilkan “Python” sebanyak n kali


dengan n dimasukkan dari papan ketik? Solusinya adalah dengan
memanfaatkan fungsi range(). Berikut adalah bentuk penggunaan
range():

 range(akhir)
 range(awal, akhir)
 range(awal, akhir, langkah)

99
Pada bentuk pertama, range() menghasilkan deretan angka
bulat dari 0 sampai dengan sebelum akhir. Pada bentuk kedua,
range() menghasilkan deretan angka bulat dari awal sampai dengan
sebelum akhir. Pada bentuk ketiga, range() menghasilkan deretan
angka bulat dari awal sampai dengan sebelum akhir, dengan kenaikan
sebesar langkah. Perlu diketahui, efek range() hanya terlihat di for.
Berikut adalah contoh penggunaan range().

Contoh 1:

Fungsi range() hanya melibatkan satu argumen:

>>> for nilai in range(7): 


... print(nilai) 
... 
0
1
2
3
4
5
6
>>>

Perhatikan bahwa range(7) menghasilkan angka dari 0 sampai


dengan 6 (sebelum 7).

Contoh 2:

Fungsi range()melibatkan dua argumen:

100
>>> for nilai in range(1, 7): 
... print(nilai) 
... 
1
2
3
4
5
6
>>>

Perhatikan bahwa range(1, 7) menghasilkan angka dari 1 sampai


dengan 6 (sebelum 7). Jadi, perbedaan dengan contoh pertama adalah
pada nilai pertama.

Contoh 3:

Fungsi range() melibatkan tiga argumen dengan argumen ketiga


berupa nilai positif:

>>> for nilai in range(1, 7, 2): 


... print(nilai) 
... 
1
3
5
>>>

Perhatikan bahwa range(1, 7, 2) menghasilkan angka dari 1


sampai dengan maksimum 6 (sebelum 7) dengan kenaikan sebesar 2.

Contoh 4:

Fungsi range() melibatkan tiga argumen dengan argumen ketiga


berupa nilai negatif:

101
>>> for nilai in range(10, 0, -2): 
... print(nilai) 
... 
10
8
6
4
2
>>>

Perhatikan bahwa range(10, 0, -2) menghasilkan angka dari 10


sampai dengan sebelum mencapai 0, dengan kenaikan sebesar -2.

Contoh berikut menunjukkan cara untuk mendapatkan deret 10, 8,


6, 4, 2, 0 yang pernah dibahas di depan menggunakan:

 Berkas: deretfor.py

for bilangan in range(10, -1, -2):


print(bilangan)

Akhir berkas

Hasilnya seperti berikut:

C:\pyGUI>deretfor.py
10
8
6
4
2
0

C:\pyGUI>

2.2.3 Pengulangan Selamanya

102
Penggunaan pernyataan while kadang kala menimbulkan efek
pengulangan selamanya atau pengulangan yang tidak pernah berakhir.
Hal ini terjadi manakala kondisi pada while tidak pernah bernilai
False.

Skrip berikut memberikan contoh pengulangan selamanya:

 Berkas: selamanya.py

bilangan = 1
while bilangan <= 5:
print(bilangan)

Akhir berkas

Penyebab pengulangan selamanya adalah karena pernyataan


seperti berikut yang semestinya ada terlupakan untuk ditulis:
bilangan += 1

Jika terjadi kasus pengulangan yang tidak pernah berakhir seperti


di atas, eksekusi skrip dapat dihentikan dengan menekan tombol Ctrl+C.

2.4 Pernyataan for Bersarang


Pernyataan for bersarang adalah pernyataan for yang berada di
dalam pernyataan for lainnya. Banyak kasus yang bisa dipecahkan
menggunakan for bersarang. Sebagai contoh, persoalan untuk
membuat segitiga berikut dapat diselesaikan menggunakan for
bersarang:

*
**
***
****
*****

103
Skrip berikut mewujudkan segitiga seperti di atas dengan tinggi
segitiga ditentukan dari papan ketik:

 Berkas: segitiga.py

tinggi = int(input("Tinggi segitiga: "))

for baris in range(1, tinggi + 1):


for kolom in range(1, baris + 1):
print("*", end = "")

print() # Pindah baris

Akhir berkas

Tinggi segitiga ditentukan melalui:


tinggi = int(input("Tinggi segitiga: "))

Pernyataan for pertama digunakan untuk mengontrol baris.


Dalam hal ini, variabel baris akan berisi nilai dari 1 sampai dengan
tinggi. Oleh karena itu, argumen kedua pada range() berupa tinggi
+ 1 supaya bilangan tertinggi yang dihasilkannya sama dengan tinggi.

Untuk setiap iterasi pada for pertama, pertama-tama yang


diperoleh adalah for kedua. Pernyataan for kedua digunakan untuk
menampilkan simbol * sebanyak nilai baris. Satu simbol * ditampilkan
melalui:
print("*", end = "")

Pada pernyataan tersebut, end = "" dimaksudkan untuk membuat


print() tidak menambahkan karakter pindah baris setelah
menampilkan simbol *.

Pernyataan terakhir yang diproses oleh for pertama adalah:


print()

104
Perintah ini digunakan untuk menambahkan karakter pindah baris
setelah simbol * sebanyak nilai baris ditampilkan.

Hasil pengujian skrip segitiga.py:

C:\pyGUI>segitiga.py
Tinggi segitiga: 5
*
**
***
****
*****

C:\pyGUI>segitiga.py
Tinggi segitiga: 8
*
**
***
****
*****
******
*******
********

C:\pyGUI>

2.5 Pernyataan break, continue, dan exit


Tiga pernyataan berikut dibahas pada bagian ini:

 break,

 continue,

 exit().

105
2.5.1 Pernyataan break
Pernyataan break diterapkan pada perulangan dengan maksud
untuk mengakhiri perulangan.

Efek break dapat dilihat pada skrip berikut:

 Berkas: break.py

for bilangan in range(1, 11):


if bilangan == 4:
break

print(bilangan)

Akhir berkas

Pada contoh ini, pernyataan berikut digunakan untuk mengakhiri


for saat bilangan bernilai 4:
if bilangan == 4:
break

Hasilnya seperti berikut:

C:\pyGUI>break.py
1
2
3

C:\pyGUI>

Terlihat tidak ada tampilan angka 4 karena saat bilangan bernilai 4,


eksekusi for diakhiri.

2.5.2 Pernyataan continue


Pernyataan continue digunakan untuk membuat eksekusi
dilanjutkan ke:

106
 pengujian kembali kondisi pada while;

 iterasi berikutnya pada for.

Contoh berikut menunjukkan efek continue pada while:

 Berkas : conwhile.py

x = 1
while x <= 5:
if x == 3:
print("continue dijalankan")
x += 1
continue

print(x)
x += 1
print(" ***")

Akhir berkas

Pernyataan berikut digunakan untuk menjalankan continue saat


x bernilai 3:
if x == 3:
print("continue dijalankan")
x += 1
continue

Perhatikan bahwa x += 1 digunakan untuk menaikkan nilai variabel


x sebesar 1 sebelum continue dijalankan.

Hasilnya seperti berikut:

107
C:\pyGUI>conwhile.py
1
***
2
***
continue dijalankan
4
***
5
***

C:\pyGUI>

Tampak bahwa tidak ada nilai 2. Saat x bernilai 3, continue


dieksekusi. Akibatnya, tiga pernyataan berikut diabaikan:
print(x)
x += 1
print(" ***")

Itulah sebabnya, angka 3 tidak pernah ditampilkan.

Penerapan continue pada for dapat dilihat pada skrip berikut:

 Berkas : confor.py

for x in range(1, 11):


if x % 3 == 0:
continue

print(x)

Akhir berkas

Pernyataan berikut digunakan untuk menjalankan continue saat


x habis dibagi 3:
if x % 3 == 0:
continue

Hasilnya seperti berikut:

108
C:\pyGUI>confor.py
1
2
4
5
7
8

C:\pyGUI>

Tampak bahwa semua bilangan antara 1 sampai dengan 10 yang


habis dibagi 3 tidak ditampilkan.

2.5.3 Pernyataan os.exit()


Berbeda dengan break yang digunakan untuk mengakhiri
perulangan, sys.exit() digunakan untuk mengakhiri eksekusi skrip.
Penggunaannya seperti berikut:

sys.exit(1)

Modul sys perlu diimpor terlebih dahulu sebelum pemanggilan fungsi


tersebut.

Perlu diketahui, nilai 0 pada sys.exit()


biasa diberikan untuk penghentian yang
normal.

Skrip berikut menunjukkan penggunaan sys.exit():

 Berkas: exit.py

import sys, random

acak = random.randint(5, 15)

for x in range(1, 11):

109
if x == acak:
sys.exit(x)

print(x)

Akhir berkas

Skrip exit.py mengimpor modul sys dan random melalui:


import sys, random

Modul sys diperlukan karena sys.exit() dipergunakan,


sedangkan modul random dilibatkan karena fungsi randint()
digunakan pada skrip untuk mendapatkan bilangan bulat yang bersifat
acak.

Pernyataan berikut digunakan untuk mendapatkan bilangan bulat


acak antara 5 dan 15:
acak = random.randint(5, 15)

Bilangan yang didapat akan digunakan untuk menghentikan eksekusi


program.

Pernyataan for x in range(1, 11): digunakan untuk


membuat variabel x bernilai dari 1 hingga 10. Kemudian, pernyataan
berikut digunakan untuk menghentikan eksekusi skrip sekiranya nilai x
sama dengan nilai acak:
if x == acak:
sys.exit(x)

Tentu saja, print(x) tidak akan dieksekusi saat kondisi x == acak


bernilai True.

Contoh berikut menunjukkan keadaan saat sys.exit() tidak


dijalankan:

110
C:\pyGUI>exit.py
1
2
3
4
5
6
7
8
9
10

C:\pyGUI>echo %ERRORLEVEL%
0

C:\pyGUI>

Contoh di atas menunjukkan bahwa terjadi eksekusi terhadap


sys.exit() mengingat angka 10 ditampilkan. Pengujian dengan
echo %ERRORLEVEL% menghasilkan 0, yang menandakan tidak
terjadi penghentian program secara tidak normal. Perlu diketahui,
%ERRORLEVEL% mencatat kode-keluar program yang terakhir
dieksekusi di Command Prompt.

Contoh berikut menunjukkan keadaan saat


sys.exit()dijalankan:

111
C:\pyGUI>exit.py
1
2
3
4
5

C:\pyGUI>echo %ERRORLEVEL%
6

C:\pyGUI>

Tampak bahwa angka terakhir yang ditampilkan adalah 5. Jadi,


pada saat x bernilai 6, terjadi pemanggilan:
sys.exit(6)

Itulah sebabnya, echo %ERRORLEVEL% menghasilkan 6.

2.6 Pernyataan pass


Python menyediakan pernyataan bernama pass. Pernyataan ini
berarti “tidak melakukan apa-apa”. Pernyataan ini biasa diberikan pada
pernyataan yang mengharuskan keberadaan suatu pernyataan, padahal
tidak perlu ada yang ditulis. Contoh:

>>> if 4 > 3:


... pass
... else:
... print("Kondisi bernilai salah")
...
>>>

112
Pada contoh tersebut, pass akan dijalankan mengingat kondisi 4 >
3 bernilai True, tetapi tidak ada hasil apapun karena pass memang
tidak melakukan apapun.

Contoh berikut menunjukkan pendefinisian fungsi bernama


tanpa_aksi() yang tidak melakukan apa-apa kalau fungsi dipanggil:
def tanpa_aksi():

pass

Pada pembuatan program, seringkali hal seperti itu dilakukan jika Anda
bermaksud menuliskan kode belakangan dan untuk sementara tidak
perlu ada kode apapun untuk fungsi tersebut, tetapi keberadaan fungsi
tetap diperlukan.

2.7 Pembuatan Fungsi


Fungsi biasa digunakan untuk melaksanakan suatu tugas sehingga
bisa digunakan di beberapa tempat dengan cukup memanggil nama
fungsi dan argumen atau nilai yang dilewatkan. Dasar-dasar
pembuatannya dibahas di sini.

2.7.1 Pendefinisian Fungsi


Fungsi didefinisikan dengan bentuk sebagai berikut:

def nama_fungsi(parameter1, parameter2, …):


“string dokumentasi” # bersifat opsional
pernyataan_pernyataan
[ return nilai_balik ]

113
Nama fungsi dan parameter harus mengikuti aturan pengenal
(Subbab 2.7). Parameter menyatakan nilai yang digunakan sebagai
mekanisme untuk melewatkan nilai dari pemanggil. Di pemanggil, hal ini
disebut argumen.

String dokumentasi terletak sesudah baris yang berisi nama fungsi.


Kegunaannya adalah untuk memberikan penjelasan singkat mengenai
fungsi. Akan tetapi, kedudukannya hanya bersifat opsional. Jadi, boleh
tidak ada.

Definisi fungsi bisa melibatkan banyak pernyataan dan bisa


mengandung pernyataan return (yang bersifat opsional). Pernyataan
return diperlukan hanya kalau fungsi dirancang untuk memberikan
nilai balik.

Contoh definisi fungsi:

def tampilkan_judul():
print("PT CITRA ANANDA FLORA")
print("=====================")
Pada definisi ini, tampilkan_judul adalah nama fungsi. Fungsi ini
tidak memiliki parameter. Fungsi mengandung dua pernyataan berupa
print() dan tidak mempunyai nilai balik.

Setelah fungsi didefinisikan, fungsi tersebut dapat digunakan


dengan cara memanggil seperti berikut:

tampilkan_judul()

Contoh lengkap definisi fungsi dan pemanggilan fungsi dapat


dilihat pada skrip berikut:

 Berkas: fungsi.py

def tampilkan_judul():

114
print("PT CITRA ANANDA FLORA")
print("=====================")

# Penggunaan fungsi
tampilkan_judul()

Akhir berkas
Hasil pemanggilan skrip adalah seperti berikut:

C:\pyGUI>fungsi.py
PT CITRA ANANDA FLORA
=====================

C:\pyGUI>

2.7.2 Fungsi dengan Nilai Balik


Fungsi pada contoh di depan tidak memiliki nilai balik. Apabila
fungsi memiliki nilai balik, pemanggilan fungsi dapat berbentuk
semacam berikut:

x = nama_fungsi(10)

Artinya, nilai balik fungsi bisa diberikan ke variabel x.

Fungsi dengan nilai balik dibuat dengan menyertakan return


dengan bentuk seperti berikut:

return(nilai_balik); atau
return nilai_balik;

Contoh fungsi dengan nilai balik dapat dilihat pada skrip berikut:

 Berkas: nilbalik.py

def maksimum(x, y):

115
terbesar = x if x > y else y
return(terbesar)

# Pemanggilan fungsi
x = 50
y = 77
print("maksimum(", x, ", ", y, ") -> ", \
maksimum(x, y), sep ="")
print("maksimum(", y, ", ", x, ") -> ", \
maksimum(y, x), sep ="")

Akhir berkas
Perhatikan definisi berikut:
def maksimum(x, y):
terbesar = x if x > y else y
return(terbesar)

Fungsi maksimum() mempunyai dua parameter, yaitu x dan y. Nilai


baliknya berupa bilangan terbesar di antara kedua parameter. Perlu
diketahui, terbesar = x if x > y else y berarti:

 terbesar akan menyatakan x jika x > y bernilai True;

 terbesar akan menyatakan y jika x > y bernilai False.

Hasil pemanggilan skrip nilbalik.php adalah seperti berikut:

C:\pyGUI>nilbalik.py
maksimum(50, 77) -> 77
maksimum(77, 50) -> 77

C:\pyGUI>

2.7.3 Fungsi dengan Nilai Argumen Bawaan


Argumen bawaan adalah argumen yang kalau tidak disebutkan
akan diisi dengan suatu nilai bawaan. Argumen seperti ini ditulis dengan
bentuk parameter=nilai dalam definisi fungsi. Contoh:

116
def buat_garis(simbol="-", jumlah=10):
...

Pada contoh ini, simbol dan jumlah mempunyai nilai bawaan


sehingga pada pemanggilan fungsi ini, kedua argumen tersebut bisa
ditiadakan.

Skrip berikut berisi definisi fungsi dengan argumen bawaan dan


contoh-contoh pemanggilannya:

 Berkas: argbawaan.py

def buat_garis(simbol="-", jumlah=10):


print(simbol * jumlah)

# Pemanggilan fungsi
buat_garis()
buat_garis("=")
buat_garis("*-", 15)

Akhir berkas

Hasilnya seperti berikut:

C:\pyGUI>argbawaan.py buat_garis()
----------
buat_garis("=")
==========
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

C:\pyGUI> buat_garis("=", 15)

2.7.4 Pengubahan Nilai Argumen


Di Python, semua argumen dengan objek yang bersifat immutable
tidak bisa diubah oleh fungsi. Jadi, mengubah bilangan atau string tidak
dimungkinkan. Namun, pengubahan objek yang bersifat mutable
(misalnya senarai) bisa dilakukan oleh fungsi.

117
2.7.5 Argumen Bernama
Argumen bernama memungkinkan pemanggilan fungsi dengan
menyebutkan nama argumen yang disertai dengan nilai. Cara seperti ini
memungkinkan pengiriman argumen yang tidak mengikuti urutan
argumen dalam definisi fungsi. Sebagai contoh, perhatikan dua perintah
print() berikut:

>>> print("A", "B", sep="-", end="\n")


A-B
>>> print("A", "B", end="\n", sep="-")
A-B
>>>

Perhatikan bahwa pada pemanggilan kedua print() terdapat


dua argumen yang menyebutkan nama argumen diikuti dengan tanda
sama dengan dan nilai untuk argumen. Tampak bahwa urutan sep="-"
dan end="\n" bisa dipertukarkan. Jadi, urutan argumen dalam
pemanggilan fungsi tidak penting jika menggunakan argumen bernama.

Dengan menggunakan definisi fungsi buat_garis() yang


terdapat pada argbawaan.py, kita bisa melakukan pemanggilan
buat_garis() dengan cara seperti berikut:

>>> import argbawaan


----------
==========
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
>>> argbawaan.buat_garis(jumlah=15, simbol="_")
_______________
>>> argbawaan.buat_garis(jumlah=15)
---------------
>>>

118
2.7.6 Argumen Berbentuk *arg
Argumen berbentuk *arg berguna untuk memperoleh
keseluruhan argumen dalam fungsi dalam bentuk tupel. Tupel adalah
salah satu struktur data pada Python yang membuat kumpulan data
dinyatakan dalam tanda kurung. Struktur data ini dijelaskan lebih lanjut
pada Sub-subbab 2.9.2.

Untuk memahami pemakaian argumen berbentuk *arg, skrip


berikut bisa dicoba:

 Berkas: arg.py

def tampil_arg(*arg):
print(arg)

# Pemanggilan fungsi
tampil_arg(1, 2, 3, 4, 5)
tampil_arg("A", "C", "I", "D")

Akhir berkas

Hasil pemanggilan skrip arg.py adalah seperti berikut:

C:\pyGUI>arg.py
(1, 2, 3, 4, 5)
('A', 'C', 'I', 'D')

C:\pyGUI>

Berdasarkan contoh di depan, dimungkinkan untuk memproses


seluruh nilai di tupel tersebut. Hal yang perlu diperhatikan, data
pertama dinyatakan dengan arg[0], data kedua dinyatakan dengan
arg[1], dst.

119
Sebagai contoh, fungsi terbesar() dapat dipakai untuk
mencari bilangan terbesar yang didasarkan pada nilai-nilai argumen. Hal
ini diwujudkan pada skrip berikut:

 Berkas: terbesar.py

def terbesar(*arg):
maks = arg[0] # Data pertama
for nilai in arg[1:]:
if nilai > maks:
maks = nilai

return maks

# Pemanggilan fungsi
print(terbesar(1, 2, 3, 4, 5))
print(terbesar("A", "C", "I", "D"))

Akhir berkas

Hasil pemanggilan skrip terbesar.py adalah seperti berikut:

C:\pyGUI>terbesar.py
5
I

C:\pyGUI>

Tampak bahwa pemanggilan terbesar() pertama menghasilkan


5 (yang terbesar di antara 1, 2, 3, 4, dan 5) dan yang kedua
menghasilkan I (yang terbesar di antara “A”, “C”, “I”, dan “D”).

2.7.7 Argumen Berbentuk **arg


Fungsi dengan argumen berbentuk **arg dapat digunakan untuk
melewatkan struktur data berjenis kamus (dictionary). Struktur data

120
kamus dibahas pada Sub-subbab 2.9.3). Dengan menggunakan **arg,
argumen dapat menerima data berbentuk nama=nilai.

Contoh untuk menguji argumen berbentuk **arg dapat dilihat


pada skrip berikut:

 Berkas: dict.py

def peroleh_kamus(**arg):
return arg

# Pemanggilan fungsi
kamus = peroleh_kamus(kucing="cat", \
kuda="horse", \
burung="bird")
print(kamus)

Akhir berkas

Perhatikan bahwa ketiga argumen fungsi peroleh_kamus()


berbentuk nama_argumen=nilai.

Hasil pemanggilan skrip dict.py adalah seperti berikut:

C:\pyGUI>dict.py
{'kucing': 'cat', 'kuda': 'horse', 'burung':
'bird'}

C:\pyGUI>

Tanda {} menyatakan bahwa nilai balik fungsi di atas berupa kamus


(dictionary).

2.7.8 Penugasan Fungsi ke Variabel


Penugasan fungsi ke variabel dimungkinkan. Contoh:

121
>>> import math
>>> akar = math.sqrt
>>> akar(25)
5.0
>>>

Mula-mula, modul math diimpor karena fungsi math.sqrt()


akan digunakan dalam penugasan. Lalu, perintah berikut membuat akar
mewakili fungsi math.sqrt():

akar = math.sqrt

Oleh karena itu, akar(25) identik dengan math.sqrt(25).

2.7.9 Pelewatan Fungsi Sebagai Argumen pada Fungsi


Python memungkinkan fungsi dijadikan sebagai argumen dalam
fungsi. Skrip berikut memberikan contoh mengenai hal itu:

 Berkas: argfungsi.py

def proses_fungsi(fungsi, nilai):


return fungsi(nilai)

# Pemanggilan fungsi
import math

arg = 100
print("Argumen berupa fungsi math.sqrt():",
proses_fungsi(math.sqrt, arg))

print("Argumen berupa fungsi bin():",


proses_fungsi(bin, arg))

Akhir berkas

122
Pada skrip argfungsi.py, fungsi proses_fungsi()
melibatkan argumen berupa fungsi. Selanjutnya, fungsi tersebut
dijadikan sebagai nilai balik melalui pernyataan
return fungsi(nilai)

Selanjutnya, proses_fungsi(math.sqrt, arg) menujukkan


pelewatan fungsi bernama sqrt yang terdapat pada modul math dan
proses_fungsi(bin, arg) melewatkan fungsi bernama bin.

Hasil pemanggilan skrip argfungsi.py adalah seperti berikut:

C:\pyGUI>argfungsi.py
Argumen berupa fungsi math.sqrt(): 10.0
Argumen berupa fungsi bin(): 0b1100100

C:\pyGUI>

2.7.10 Fungsi Tidak Bernama


Suatu fungsi bisa didefinisikan tanpa nama dan dinamakan fungsi
anonim (anonymous function). Fungsi seperti itu diwujudkan melalui
lambda. Formatnya sebagai berikut:

lambda [arg1, arg2, …] : ekspresi

Tanda [] menyatakan bahwa bagian ini bersifat opsional; bisa ada, bisa
mengandung satu atau beberapa argumen.

Tabel 2.1 memperlihatkan ekuivalensi antara fungsi bernama dan


yang tidak bernama. Tampak bahwa fungsi anonim bisa melibatkan
argumen bawaan maupun yang berbentuk *arg.

123
Tabel 2.1 Ekuivalensi fungsi bernama dan fungsi anonim

Fungsi Bernama Fungsi Anonim


def kuadrat(x): return x * x lambda x: x * x

def fx(x, y=2): return x + y lambda x, y = 2: x + y


def fy(*arg) : return arg lambda *arg: arg

Skrip berikut memberikan contoh fungsi anonim:

 Berkas: anonim.py

f = lambda x, y: x + y

# Pemanggilan fungsi
hasil = f("12", "34")
print(hasil)

print(f(12, 34))

Akhir berkas

Hasil pemanggilan skrip anonim.py adalah seperti berikut:

C:\pyGUI>anonim.py
1234
46

C:\pyGUI>

2.7.11 Fungsi Rekursif


Fungsi rekursif adalah fungsi yang di dalam tubuhnya terdapat
pemanggilan dirinya sendiri. Fungsi seperti seringkali digunakan pada
penanganan struktur data. Namun, persoalan tertentu kadang-kadang
bisa dipecahkan menggunakan fungsi rekursif.

124
Salah satu contoh klasik penggunaan fungsi rekursif adalah untuk
menangani perhitungan n! atau dibaca “n faktorial”. Dalam hal ini, n!
didefinisikan sebagai berikut:

 n! = n * (n – 1) x (n – 2) x … x 3 x 2 x 1

 0! = 1

Dengan pendekatan rekursif, persoalan n! dapat ditulis seperti


berikut:

 0! = 1

 Jika n > 0, n! = n x (n-1)!

Perhatikan bahwa pada bagian , n! diperoleh dengan memanggil (n-


1)!. Hal inilah yang dinamakan rekursi.

Fungsi untuk menangani persoalan di atas adalah seperti berikut:

def faktorial(n):
if n == 0:
return 1
else:
return n * faktorial(n -1)

Perhatikan bahwa di dalam tubuh fungsi faktorial() terdapat


pemanggilan fungsi faktorial(). Itulah sebabnya, faktorial()
dinamakan fungsi rekursif.

Berikut adalah skrip yang mendefinisikan fungsi faktorial()


dan sekaligus memanggilnya:

 Berkas: rekursif.py

# Contoh fungsi rekursif

def faktorial(n):

125
if n == 0:
return 1
else:
return n * faktorial(n - 1)

# Pemanggilan fungsi
n = 4
print(n, "! = ", faktorial(n), sep="")

n = 5
print(n, "! = ", faktorial(n), sep="")

Akhir berkas

Berikut adalah contoh hasil pemanggilan skrip rekursif.py:

C:\pyGUI>rekursif.py
4! = 24
5! = 120

C:\pyGUI>

Perlu diperhatikan bahwa fungsi faktorial() tidak


mengantisipasi kalau argumen bernilai negatif. Anda bisa
mengembangkan sendiri agar kalau argumen nilai negatif akan
dimunculkan eksepsi, dengan pesan “Hanya untuk nilai positif”. Eksepsi
dibahas pada Subbab 2.10.

2.7.12 Fungsi dengan Nilai Balik Lebih dari Satu


Suatu fungsi dapat memiliki nilai balik yang lebih dari satu. Dalam
hal ini, nilai balik akan dinyatakan dalam bentuk tupel. Tupel ditandai
dengan (). Contohnya dapat dilihat pada skrip berikut:

 Berkas: multiret.py

# Contoh fungsi dengan nilai balik sebanyak dua

126
def peroleh_nip_nama():
nip = input("NIP : ")

nama = input("Nama: ")

return nip, nama

# Pemanggilan
(nip, nama) = peroleh_nip_nama()

print()
print("NIP :", nip)
print("Nama:", nama)

Akhir berkas

Pada contoh ini,

def peroleh_nip_nama()
...
menyatakan fungsi yang tidak memiliki argumen. Di tubuh fungsi,
terdapat perintah untuk membaca data NIP dan nama dari papan ketik.
Terakhir, pernyataan berikut digunakan untuk memberikan nilai balik
berupa nip dan nama:

return nip, nama

Nilai balik yang terdiri atas dua nilai tersebut dengan sendirinya akan
dinyatakan dalam tupel (Tupel dibahas pada Sub-subbab 2.9.2). Itulah
sebabnya, pada pemanggilan fungsi peroleh_nip_nama()
berbentuk:

(nip, nama) = peroleh_nip_nama()


Dalam hal ini, (nip, nama) menyatakan tupel yang mengandung dua
elemen. Dalam hal ini, nip berisi nilai balik pertama dan nama berisi
nilai balik kedua.

Berikut adalah hasil pemanggilan skrip mutiret.jl:

127
c:\pyGUI>multiret.py
NIP : 12345
Nama: Andi Prasetya

NIP : 12345
Nama: Andi Prasetya

c:\pyGUI>

2.7.13 Pembuatan Fungsi dalam Modul


Semua skrip Python dapat berkedudukan sebagai modul. Pada Sub-
subbab 2.8.3, diberikan suatu contoh untuk melibatkan skrip
argbawaan.py sebagai modul. Perintahnya berupa:
import argbawaan

Skrip tersebut mengandung definisi sebuah fungsi yang akan digunakan.


Hal yang menarik untuk diperhatikan, perintah print() yang terdapat
pada skrip tersebut ikut dijalankan ketika impor dieksekusi. Berdasarkan
fakta ini, maka dapat dibuat suatu modul yang berisi definisi fungsi (dan
juga konstanta) serta tindakan awal yang akan dikerjakan ketika modul
diimpor.

Berikut adalah contoh skrip yang akan dijadikan sebagai modul:

 Berkas: modul.py

# Konstanta

KECEPATAN_SUARA = 342.2 # meter/detik


KECEPATAN_CAHAYA = 299792458 # meter/detik

# Definisi fungsi

def energi_massa(m):
# e = mc^2
# c dalam meter/detik

128
# m dalam kg
# e dalam Joule

return m * KECEPATAN_CAHAYA ** 2

Akhir berkas

Selanjutnya, modul yang baru saja dibuat ini bisa digunakan


dengan mengimpornya terlebih dahulu. Lalu, fungsi
energi_massa() dapat digunakan dengan menambahkan awalan
berupa nama modul dan tanda titik. Begitu juga untuk konstanta
KECEPATAN_CAHAYA dan KECEPATAN_SUARA. Contoh:

>>> import modul


>>> print(modul.KECEPATAN_SUARA)
342.2
>>> print(modul.KECEPATAN_CAHAYA)
299792458
>>> print(modul.energi_massa(2))
179751035747363528
>>>

2.7.14 Variabel Global dan Variabel Lokal


Variabel global adalah variabel yang dibuat di luar definisi fungsi.
Variabel ini, sepanjang dibuat sebelum fungsi dipanggil, akan dikenal
pada fungsi. Perhatikan skrip berikut:

 Berkas: global.py

jari_jari = 5

def keliling_lingkaran():
keliling = 2 * 2.14 * jari_jari
print(keliling)

# Panggil fungsi
keliling_lingkaran()

129
Akhir berkas

Hasil pemanggilan skrip global.py adalah seperti berikut:

c:\pyGUI>global.py
31.400000000000002

c:\pyGUI>

Pada contoh di depan, jari_jari adalah variabel global. Itulah


sebabnya, variabel tersebut bisa digunakan pada fungsi
keliling_lingkaran().

Penggunaan variabel global di fungsi di depan


hanyalah untuk kepentingan ilustrasi. Dalam
praktik, hindari penggunaan variabel global di
fungsi. Jika dikehendaki untuk melewatkan
nilai ke fungsi, sebaiknya gunakan argumen.

Adapun variabel lokal adalah variabel yang dibuat di dalam definisi


fungsi. Variabel seperti ini tidak dikenal di luar fungsi. Variabel lokal
akan hilang dengan sendirinya setelah fungsi selesai dieksekusi.

Apa yang terjadi seandainya suatu variabel global hendak diubah di


fungsi? Sebagaimana telah disinggung di depan, variabel global tidak
dapat diubah oleh fungsi. Hal itu dapat dijelaskan seperti berikut.
Misalnya, terdapat variabel bernama x bernilai 6. Lalu, di dalam fungsi
terdapat pernyataan seperti berikut:
x = 0

130
Pada keadaan seperti ini, x yang berada di kiri = adalah x yang
berkedudukan sebagai variabel lokal. Jelas, dengan mekanisme seperti
ini variabel global tidak mungkin diubah oleh fungsi.

Skrip berikut memperlihatkan hal tersebut:

 Berkas: lokal.py

def fx():
print("---- Awal fungsi")

x = 0

print("x sekarang:", x)
print("---- Akhir fungsi")

# Panggil fungsi
x = 6
print("x sebelum fx() dieksekusi", x)
fx()
print("x setelah fx() dieksekusi", x)

Akhir berkas

Perhatikan bahwa di dalam fungsi terdapat pernyataan:


x = 0

Nah, sebelum fungsi fx() dipanggil terdapat penugasan:


x = 6

Apakah nilai x ini bisa diubah oleh fungsi fx()? Perhatikan hasil
berikut:

131
c:\pyGUI>lokal.py
x sebelum fx() dieksekusi 6
---- Awal fungsi
x sekarang: 0
---- Akhir fungsi
x setelah fx() dieksekusi 6

c:\pyGUI>

Tampak bahwa x yang bersifat global tidak bisa diubah oleh fungsi
fx().

Lalu, apakah berarti bahwa variabel global tidak bisa diubah oleh
fungsi? Jawabannya adalah bisa asalkan di fungsi terdapat pernyataan:

global nama_variabel

Dengan cara seperti itu, variabel global bisa diubah oleh fungsi.

Contoh dapat dilihat pada skrip berikut:

Skrip berikut memperlihatkan hal tersebut:

 Berkas: lokal.py

def fx():
print("---- Awal fungsi")

x = 0

print("x sekarang:", x)
print("---- Akhir fungsi")

# Panggil fungsi
x = 6
print("x sebelum fx() dieksekusi", x)
fx()
print("x setelah fx() dieksekusi", x)

Akhir berkas

132
Perhatikan bahwa di dalam fungsi fx() terdapat pernyataan:
global x

Dengan cara seperti ini, nilai x bisa diubah oleh fungsi fx(),
sebagaimana ditunjukkan berikut ini:

c:\pyGUI>lokal.py
x sebelum fx() dieksekusi 6
---- Awal fungsi
x sekarang: 0
---- Akhir fungsi
x setelah fx() dieksekusi 0

c:\pyGUI>

Tampak bahwa x setelah pemanggilan fungsi fx() bernilai 0,


bukan 6.

2.8 Pengenalan Struktur Data


Struktur data adalah objek yang dapat menyimpan banyak data.
Struktur data yang disediakan Python yaitu:

 senarai (list)

 tupel (tuple)

 kamus (dictionary)

 himpunan (set)

2.8.1 Senarai
Senarai adalah objek yang dapat menampung sejumlah data
dengan elemen data masing-masing bisa berbeda tipe. Senarai

133
termasuk struktur data yang bersifat mutable (isinya dapat diubah).
Senarai ditulis dalam tanda [] dan antarelemen data dipisah oleh koma.
Contoh:

 [1, 3, 5, 7]

 ["AB7374SA", "Suzuki", 1600, ""Merah"]

 []

Contoh pertama menyatakan senarai berisi empat bilangan ganjil dan


contoh kedua menyatakan data mobil yang secara berturut-turut berisi
nomor polisi, nama pabrikan, CC silinder mesin, dan warna mobil.
Contoh ketiga menyatakan senarai kosong (tidak mengandung elemen
sama sekali).

Penugasan senarai ke variabel dilakukan dengan bentuk:

variabel = senarai

Contoh:
mobil = ["AB7374SA", "Suzuki", 1600, "Merah"]

Gambar 2.5 memperlihatkan keadaan setelah penugasan di atas


dilaksanakan.

Gambar 2.5 Variabel mobil menyatakan senarai berisi data mobil

134
Penugasan dan contoh untuk memperlihatkan data yang
dinyatakan oleh variabel mobil dapat dilihat berikut:

>>> mobil = ["AB7374SA", "Suzuki", 1600,


"Merah"]
>>> print(mobil)
['AB7374SA', 'Suzuki', 1600, 'Merah']
>>>

Lalu, bagaimana kalau mau mengakses setiap elemen pada


senarai? Caranya adalah dengan menggunakan indeks. Setiap elemen
mempunyai indeks unik. Elemen terkiri mempunyai indeks 0, elemen
kedua dari kiri mempunyai indeks 1, dst. Gambar 2.6 menunjukkan
penomoran indeks pada setiap elemen di senarai.

Gambar 2.6 Indeks senarai

Pengaksesan elemen senarai dilakukan dengan menuliskan notasi


seperti berikut:

mobil[indeks]

Dengan demikian, mobil[0] menyatakan nomor polisis, mobil[1]


menyatakan nama pabrikan, mobil[2] menyatakan CC, dan
mobil[3] menyatakan warna mobil. Contoh:

135
>>> print(mobil[0])
AB7374SA
>>> print(mobil[3])
Merah
>>>

Salah satu operasi dasar pada senarai adalah membentuk irisan.


Bentuk irisan adalah seperti berikut:

variabel[awal:akhir]

Pada bentuk seperti itu, irisan akan berupa senarai dengan elemen
pertama adalah elemen senarai yang berindeks awal hingga yang
berindeks akhir – 1. Contoh:

>>> mobil[1:3]
['Suzuki', 1500]
>>>

Pada contoh di atas, mobil[1:3] menghasilkan irisan yang


elemen-elemennya adalah mobil[1] dan mobil[2]. Itulah
sebabnya, hasilnya berupa nama pabrikan dan CC.

Kadang penulisan irisan tidak melibatkan nilai setelah tanda :. Pada


keadaan ini, hasil irisan adalah dimulai dari indeks yang disebutkan
sebelum : hingga elemen terakhir. Contoh:

>>> mobil[1:]
['Suzuki', 1500, 'Merah']
>>>

Tampak bahwa mobil[1:] menghasilkan senarai dari elemen dengan


indeks 1 hingga indeks terakhir.

136
Adakalanya, di dalam [] tidak disebutkan indeks awal dan indeks
akhirnya. Jadi, yang berada dalam [] hanya berupa simbol. Pada
keadaan seperti itu, hasil irisan berupa seluruh elemen dalam senarai.
Contoh:

>>> mobil_x = mobil[:]


>>> mobil_x
['AB7374SA', 'Suzuki', 1500, 'Merah']
>>>

Perlu diketahui, penugasan mobil_x = mobil[:] berbeda


dengan mobil_x = mobil, walaupun hasil senarai yang didapat
sama. Pada mobil_x = mobil[:], mobil_x dan mobil
menyatakan objek yang berbeda, sedangkan pada mobil_x =
mobil[:], objek yang dinyatakan oleh kedua variabel adalah objek
yang berbeda. Hal ini dapat dilihat pada identitas objek, sebagaimana
diperlihatkan pada contoh berikut:

>>> mobil_x = mobil[:]


>>> id(mobil)
1737641787264 Identitas
>>> id(mobil_x) berbeda
1737642169472
>>>
>>> mobil_x = mobil
>>> id(mobil)
1737641787264 Identitas
>>> id(mobil_x) sama
1737641787264
>>>

137
Senarai adalah objek yang bersifat mutable. Elemen-elemennya
dapat diubah. Contoh berikut menunjukkan cara mengubah nilai pada
indeks 2 menjadi 1500:

>>> mobil[2] = 1500


>>> print(mobil[2])
1500
>>>

Selain melakukan pengubahan secara individual pada elemen


senarai, pengubahan dapat dilakukan melalui irisan. Contoh:

>>> print(mobil)
['AB7374SA', 'Suzuki', 1500, 'Merah']
>>> mobil[2:4] = [1490, "Biru"]
>>> print(mobil)
['AB7374SA', 'Suzuki', 1490, 'Biru']
>>>

Pada contoh di atas, mobil[2:4] = [1490, "Biru"]


digunakan untuk mengubah dua elemen pada mobil yang berindeks 2
dan 3 dengan data pada senarai [1490, "Biru"]. Dengan demikian,
mobil[2] diisi dengan 1490 dan mobil[3] diisi dengan “Biru”.
Pernyataan print(mobil) sebelum dan sesudah pengubahan
menunjukkan perbedaan isi senarai.

Untuk mengetahui jumlah elemen dalam senarai, fungsi len()


bisa digunakan. Contoh:

138
>>> x = [3, 5, 1, 2]
>>> len(x)
4
>>> x = []
>>> len(x)
0
>>>

Pada contoh pertama, x berisi 4 elemen dan pada contoh kedua x


berisi 0 elemen (tidak ada elemen).

Senarai bersifat dinamis. Penambahan elemen ataupun


penghapusan elemen pada senarai dimungkinkan. Untuk menambahkan
elemen ke senarai, metode append() atau metode insert() bisa
digunakan. Untuk menghapus elemen dalam senarai, fungsi del(),
metode pop() dan metode remove() bisa digunakan.

Berikut adalah contoh penambahan elemen bernilai 5 ke senarai:

>>> x = [2, 4, 1, 3]


>>> x.append(5)
>>> x
[2, 4, 1, 3, 5]
>>>

Perhatikan bahwa mula-mula x bernilai [2, 4, 1, 3]. Kemudian,


x.append(5) membuat x bernilai [2, 4, 1, 3]. Jadi, append()
menambahkan elemen ke akhir senarai.

Berbeda dengan append(), metode insert() dapat


menyisipkan elemen baru ke posisi mana pun. Bentuk penggunaannya:

senarai.insert(indeks, nilai)

139
Dalam hal ini, indeks dimulai dari 0. Contoh berikut menyisipkan elemen
ke indeks 0 dan 1:

>>> x = [2, 4, 1, 3]


>>> x.insert(0, 5)
>>> x
[5, 2, 4, 1, 3]
>>> x.insert(1, 6)
>>> x
[5, 6, 2, 4, 1, 3]
>>>

Contoh penghapusan dengan fungsi del():

>>> x = [2, 4, 1, 3]


>>> del(x[1]) 
>>> x
[2, 1, 3]
>>>

Contoh di atas memperlihatkan penghapusan elemen dengan


indeks 1 (elemen kedua) pada senarai x. Tampak elemen kedua (yakni
4) sudah tidak ada setelah del(x[1]) dieksekusi.

Argumen del() dapat berupa suatu irisan. Contoh:

>>> x = [2, 4, 1, 3]


>>> del(x[1:3])
>>> x
[2, 3]
>>>

Pada contoh di atas, argumen del() berupa x[1:3]. Artinya,


elemen dengan indeks 1 hingga 2 yang dihapus.

140
Berikut menunjukkan contoh penggunaan metode pop():

>>> x = [2, 4, 1, 3]


>>> x.pop()
3
>>> x
[2, 4, 1]
>>>

Contoh di atas menunjukkan bahwa pemanggilan pop()


membuat elemen terakhir dibuang dan pop() sendiri memberikan
nilai balik berupa elemen yang dihapus.

Berbeda dengan pop(), metode remove() digunakan untuk


menghapus elemen yang dijumpai pertama kali. Bentuk
penggunaannya seperti berikut:

senarai.remove(nilai)

Contoh:

>>> x = [2, 4, 1, 3, 4]


>>> x.remove(4)
>>> x
[2, 1, 3, 4]
>>>

Tampak bahwa hanya nilai 4 pertama saja yang dihapus.

Untuk mendapatkan indeks suatu nilai di senarai, metode


index() bisa digunakan. Contoh:

141
>>> x = [2, 4, 1, 3, 4]
>>> x.index(4)
1
>>> x.index(8)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 8 is not in list
>>>

Pada pemanggilan x.index(4), nilai balik berupa 1. Artinya, nilai


4 pertama kali ditemukan pada indeks 1. Pada pemanggilan
x.index(8), terjadi eksepsi berupa ValueError, yang menyatakan
bahwa 8 tidak ada pada senarai.

Senarai memiliki metode bernama count() yang berfungsi untuk


menghitung frekuensi suatu nilai di dalam senarai. Contoh:

>>> x = [2, 4, 1, 3, 4]


>>> x = [ 1, 2, 3, 2, 5, 7, 2, 1]
>>> x.count(2)
3
>>> x.count(8)
0
>>>

Contoh pertama, x.count(2) digunakan untuk menghitung


elemen-elemen yang bernilai 2 pada senarai x. Nilai balik 3 menyatakan
bahwa terdapat 3 elemen. Adapun x.count(8) memberikan nilai
balik berupa 0 yang menyatakan tidak ada elemen 8 di senarai x.

Elemen-elemen dalam senarai dapat diurutkan menggunakan


metode sort(). Contoh:

142
>>> x = [2, 4, 1, 3, 4]
>>> x.sort()
>>> x
[1, 2, 3, 4, 4]
>>>

Tampak bahwa elemen-elemen dalam senarai diurutkan secara urut


naik (dari nilai terkecil menuju ke yang terbesar).

Pengurutan dapat dilakukan secara urut turun. Hal ini dilakukan


dengan memberikan argumen berupa reverse=True. Contoh:

>>> x = [2, 4, 1, 3, 4]


>>> x.sort(reverse=True)
>>> x
[4, 4, 3, 2, 1]
>>>

Untuk senarai dengan elemen-elemen berupa string, argumen


key=str.lower dapat diberikan agar huruf kecil dan huruf kapital
tidak dibedakan. Contoh:

>>> x = ["terwelu", "Kucing", "kelinci",


"Panda"]
>>> x.sort()
>>> x
['Kucing', 'Panda', 'kelinci', 'terwelu']
>>> x.sort(key=str.lower)
>>> x
['kelinci', 'Kucing', 'Panda', 'terwelu']
>>>

Tampak bahwa tanpa argumen, sort() mengurutkan dari huruf


kapital terlebih dahulu sehingga “Kucing” dan “Panda” berada lebih
dahulu. Namun, dengan menambahkan argumen berupa

143
key=str.lower, “Panda” justru terletak sesudah “kelinci” karena
huruf kecil dan kapital tidak dibedakan.

Pembalikan urutan elemen-elemen di senarai dapat dilakukan


dengan menggunakan metode reverse(). Contoh:

>>> x = [2, 4, 1, 3, 5]


>>> x.reverse()
>>> x
[5, 3, 1, 4, 2]
>>>

Tampak bahwa urutan elemen-elemen di senarai x terbalik setelah


reverse() dieksekusi.

Apabila dikehendaki untuk mendapatkan senarai yang merupakan


kebalikan dari suatu senarai, tetapi senarai asalnya tidak diubah, fungsi
reversed() bisa digunakan dengan bentuk seperti berikut:

list(reversed(senarai))

Contoh:

>>> x = [2, 4, 1, 3, 5]


>>> y = list(reversed(x))
>>> y
[5, 3, 1, 4, 2]
>>> x
[2, 4, 1, 3, 5]
>>>

144
Hasil fungsi range() (telah dibahas pada Sub-subbab 2.2.2)
dapat dijadikan sebagai senarai dengan menjadikan sebagai argumen
dari list(). Contoh:

>>> list(range(7))
[0, 1, 2, 3, 4, 5, 6]
>>> list(range(2, 9))
[2, 3, 4, 5, 6, 7, 8]
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>>

Fungsi filter() dapat diterapkan pada senarai dan hasilnya bisa


dijadikan senarai. Bentuk pemanggilannya seperti berikut:

list(filter(fungsi, senarai)

)
Dalam hal ini, fungsi yang menjadi argumen filter() berupa fungsi
yang menghasilkan True atau False. Hasil akhir pemanggilan
list() di depan berupa senarai dengan elemen-elemen berdasarkan
elemen-elemen pada argumen senarai yang jika dikenai fungsi
menghasilkan True.

Contoh berikut digunakan untuk memperoleh senarai y


berdasarkan senarai x yang elemen-elemennya bernilai genap:

>>> x = [1, 2, 3, 4, 5, 6, 7]


>>> y = list(filter(lambda a : a % 2 == 0, x))
>>> y
[2, 4, 6]
>>>

145
Pada contoh ini, fungsi anonim lambda a : a % 2 == 0
digunakan untuk memberikan nilai balik berupa True kalau argumen
x berupa bilangan genap. Dalam hal ini, a menyatakan sebuah elemen.

Fungsi map() dapat diterapkan pada senarai untuk mendapatkan


senarai dengan jumlah elemen yang sama dengan setiap elemen dikenai
operasi suatu fungsi. Bentuk pemanggilannya seperti berikut:

list(map(fungsi, senarai)

)
Dalam hal ini, fungsi yang menjadi argumen filter() berupa fungsi
yang melakukan pemrosesan terhadap satu elemen di senarai per
iterasi.

Contoh berikut menghasilkan senarai berdasarkan senarai x,


dengan setiap elemen x akan dikenai operasi akar:

>>> import math


>>> x = [100, 25, 9, 81, 64, 36]
>>> y = list(map(math.sqrt, x))
>>> y
[10.0, 5.0, 2.0, 9.0, 8.0, 6.0]
>>>

Adapun contoh berikut menujukkan penggunaan map() untuk


mendapatkan senarai yang merupakan kuadrat dari setiap elemen di
senarai x:

>>> x = [1, 2, 3, 4, 5]


>>> y = list(map(lambda a: a * a, x))
>>> y
[1, 4, 9, 16, 25]
>>>

146
Pada contoh di atas, lambda a: a * a . Dalam hal ini, a menyatakan
sebuah elemen dan a * a menyatakan a kuadrat.

Fungsi max() bisa juga dikenakan pada senarai untuk


mendapatkan nilai terbesar pada senarai. Senada dengan hal itu,
min() dapat digunakan untuk mendapatkan nilai terkecil pada senarai.
Adapun sum() digunakan untuk mendapatkan jumlah keseluruhan
nilai dalam senarai. Contoh:

>>> x = [2, 5, 3]


>>> max(x)
5
>>> min(x)
2
>>> sum(x)
10
>>>

Operator-operator yang dapat digunakan pada senarai dapat


dilihat pada Tabel 2.2.

Tabel 2.2 Daftar operator untuk senarai

Operator Keterangan
+ Operator ini berguna untuk menggabungkan
elemen-elemen dalam dua senarai.
* Operator ini berfungsi untuk mengulang
elemen-elemen dalam senarai.
!= Operator ini menyatakan pembandingan
tidak sama dengan. Hasil True jika
pembandingan pada semua elemen pada
posisi yang sama menghasilkan nilai True.
== Operator ini menyatakan pembandingan
sama dengan. Hasil True jika
pembandingan pada semua elemen pada

147
Operator Keterangan
posisi yang sama menghasilkan nilai True.
in Operator ini menyatakan anggota (“terdapat
dalam”), dengan hasil berupa True jika yang
berada di kiri in terdapat pada senarai di
kanan in.

Operator + dapat dikenakan pada senarai untuk melakukan operasi


penggabungan senarai. Contoh:

>>> [1, 2] + [3, 4] 


[1, 2, 3, 4]
>>>

Operator * digunakan untuk menghasilkan senarai yang


merupakan pengulangan elemen-elemen senarai di kiri * sebanyak nilai
di kanan *. Contoh:

>>> x = [1, 2]


>>> y = x * 3
>>> y
[1, 2, 1, 2, 1, 2]
>>>

Berikut adalah contoh penggunaan == pada senarai:

>>> [1, 2] == [1, 2]


True
>>> [1, 2] == [2, 1]
False
>>>

Berikut adalah contoh penggunaan in pada senarai:

148
>>> x = [1, 2, 3, 4, 5]
>>> 2 in x
True
>>> 8 in x
False
>>>

Oleh karena 2 terdapat pada senarai x, maka 2 in x menghasilkan


True. Akan tetapi, menghasilkan False karena 8 tidak terdapat pada
x.

2.8.2 Tupel
Tupel adalah struktur data yang serupa dengan senarai, dengan
perbedaan menggunakan () untuk melingkupi elemen-elemennya.
Namun, berbeda dengan senarai, Tupel bersifat immutable. Jadi,
elemen-elemennya tidak dapat diubah. Tabel 2.3 menunjukkan contoh
penulisan sejumlah tupel.

Tabel 2.3 Penulisan beberapa contoh tupel

Penugasan Keterangan
t = () Tupel kosong. Di dalam () tidak terdapat
elemen sama sekali.
t = ('A', 'B') Tupel ini mengandung dua elemen bertipe
string.
t = 1, 2, 3 Tupel dengan tiga elemen. Identik dengan:
t = (1, 2, 3)
t = 1, Tupel dengan satu elemen. Identik dengan:
t = (1,)
t = (1, 2, (3, 4)) Tupel yang mengandung tupel (yakni pada
elemen dengan indeks 2).
t = ('Agya', 1300) Tupel dengan elemen yang berbeda tipe.

149
Pengaksesan elemen tupel dapat dilakukan dengan menggunakan:

nama_tupel[indeks]

Contoh:

>>> t = ('A', 'B', 'C')


>>> t[1]
'B'
>>> t[0]
'A'
>>>

Akan tetapi, pengaksesan yang dimaksudkan untuk mengubah


elemen tupel tidak diperkenankan. Contoh:

>>> t = ('A', 'B', 'C')


>>> t[1] = 'D'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item
assignment
>>>

Secara prinsip, operator dan fungsi-fungsi yang dibahas pada


senarai dapat dikenakan pada senarai, kecuali fungsi atau metode yang
mengubah elemen seperti del(), pop(), reverse(), dan
insert(). Beberapa contoh fungsi/metode yang berlaku untuk tupel
ditunjukkan pada Tabel 2.4.

150
Tabel 2.4 Contoh penggunaan fungsi pada tupel
Contoh Penggunaan Keterangan
Fungsi/Metode
>>> len((1, 2, 3)) Perintah ini digunakan untuk mengetahui
3 jumlah elemen dalam tupel (1, 2, 3). Nilai
baliknya berupa 2.
>>>
>>> t = (1, 2, 3, 2, 4, 1, 2) Contoh penggunaan metode count()
>>> t.count(2) untuk menghitung frekuensi nilai 2 pada
3 elemen t.
>>>
>>> tuple(range(7)) Contoh pembentukan tupel menggunakan
(0, 1, 2, 3, 4, 5, 6) range().
>>>
>>> t = (5, 1, 2, 7, 3) Contoh untuk mendapatkan nilai terbesar
>>> max(t) pada tupel.
7
>>>
>>> tuple([1, 2, 5, 3]) Contoh untuk mengonversi senarai ke tupel.
(1, 2, 5, 3)
>>>
>>> t = (1, 2, 3) Contoh untuk mengonversi tupel ke senarai.
>>> list(t)
[1, 2, 3]
>>>

2.8.3 Kamus
Kamus di Python dapat dibayangkan seperti kamus yang kita
gunakan sehari-hari; misalnya, kamus Bahasa Inggris ke Bahasa
Indonesia. Kata dalam bahasa Inggris bertindak sebagai kata-kunci.
Melalui kata-kunci ini, arti dalam Bahasa Indonesia bisa ditemukan.

151
Demikian halnya pada kamus di Python. Kamus mengandung nol, satu
atau sejumlah elemen, dengan setiap item mengandung kunci dan nilai
secara berpasangan. Dalam hal ini, kunci bersifat unik (tidak ada yang
kembar). Perlu diketahui, kamus bersifat mutable.

Format pembentukan kamus seperti berikut:

variabel = {kunci: nilai, kunci: nilai, …}

Contoh:

 hewan = {}

 hewan = {"kelinci": "rabbit"}

 hewan = {"kelinci": "rabbit", "burung": "bird"}

Contoh pertama menujukkan pembentukan kamus dengan nol elemen.


Contoh kedua menunjukkan kamus yang mengandung satu elemen.
Contoh ketiga menunjukkan kamus yang mengandung dua elemen.

Berikut adalah contoh pembentukan kamus dan cara


menampilkannya:

>>> hewan = {"kelinci": "rabbit", "burung":


"bird"}
>>> print(hewan)
{'kelinci': 'rabbit', 'burung': 'bird'}
>>>

Jumlah elemen dalam kamus bisa diketahui melalui fungsi len().


Contoh:

152
>>> hewan = {"kelinci": "rabbit", "burung":
"bird"}
>>> len(hewan)
2
>>>

Untuk mengakses nilai suatu kunci, notasi berikut digunakan:

variabel_kamus[kunci]

Apabila kunci yang diberikan tidak terdapat pada kamus, eksepsi


akan terjadi. Contoh:

>>> hewan = {"kelinci": "rabbit", "burung":


"bird"}
>>> hewan["burung"]
'bird'
>>> hewan["kuda"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'kuda'
>>>

Pada contoh di atas, eksepsi KeyError terjadi sekiranya kunci yang


dicari tidak ada di kamus.

Cara lain untuk mendapatkan nilai berdasarkan suatu kunci adalah


menggunakan metode get(). Eksepsi tidak akan terjadi seandainya
kunci yang dicari tidak ada, melainkan nilai balik None yang akan
diberikan. Contoh:

153
>>> hewan = {"kelinci": "rabbit", "burung":
"bird"}
>>> hewan.get("burung")
'bird'
>>> hewan.get("kuda")
>>>

Tampak bahwa hewan.get("kuda") tidak memberikan nilai balik


apa-apa (tepatnya berupa None).

Nilai balik metode get() dapat diatur sekiranya kunci yang dicari
tidak ada pada kamus. Contoh:

>>> hewan = {"kelinci": "rabbit", "burung":


"bird"}
>>> hewan.get("burung", "Tidak ada")
'bird'
>>> hewan.get("kuda", "Tidak ada")
'Tidak ada'
>>>

Pada contoh di atas, terdapat tambahan argumen berupa “Tidak ada”.


Nah, nilai ini yang dijadikan sebagai nilai balik sekiranya kunci yang
dicari tidak terdapat pada kamus.

Metode update() pada kamus dapat digunakan untuk


menambah atau mengubah elemen pada kamus. Contoh berikut
menunjukkan cara menambah elemen ke kamus.

>>> hewan = {"kelinci": "rabbit", "burung":


"bird"}
>>> hewan.update({"kambing": "sheep"})
>>> print(hewan)
{'kelinci': 'rabbit', 'burung': 'bird',
'kambing': 'sheep'}
>>>>>>

154
Tampak bahwa sekarang kamus hewan mengandung tiga elemen.

Untuk mengubah nilai ‘sheep’ menjadi ‘goat’, perintah berikut


perlu diberikan:

>>> hewan.update({"kambing": "goat"})


>>> print(hewan)
{'kelinci': 'rabbit', 'burung': 'bird',
'kambing': 'goat'}
>>>>>>

Tampak bahwa kini kunci ‘kambing’ bernilai ‘goat’.

Fungsi del() dapat digunakan untuk menghapus elemen pada


kamus. Contoh:

>>> hewan = {"kelinci": "rabbit", "burung":


"bird"}
>>> del(hewan["burung"])
>>> print(hewan)
{'kelinci': 'rabbit'}
>>> del(hewan["kuda"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'kuda'
>>>

Pada contoh di atas, del(hewan["burung"]) digunakan untuk


menghapus elemen pada hewan dengan kunci berupa “burung”.
Apabila yang hendak dihapus ternyata tidak ada di kamus, eksepsi
KeyError akan terjadi.

Penghapusan elemen di kamus dapat dilakukan melalui metode


popitem(). Metode ini akan menghapus elemen terakhir pada kamus

155
dan memberikan nilai balik berupa pasangan kunci dan nilainya dalam
bentuk tupel. Contoh:

>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":


3}
>>> frekuensi.popitem()
('D', 3)
>>> frekuensi.popitem()
('B', 1)
>>> print(frekuensi)
{'A': 5, 'E': 2}
>>>

Pemanggilan popoitem() yang pertama menghilangkan pasangan


“D”: 2. Pemanggilan yang kedua kali membuang pasangan “B”: 1.

Untuk menghapus seluruh elemen di kamus, metode clear()


dapat digunakan. Contoh:

>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":


3}
>>> frekuensi.clear()
>>> print(frekuensi)
{}
>>>

Tampak bahwa setelah clear() dijalankan, frekuensi berupa


kamus kosong.

Kadang kala, diperlukan untuk mendapatkan semua kunci pada


kamus tanpa nilai masing-masing. Pada keadaan seperti ini, metode
keys() bisa dipakai. Agar hasilnya berupa senarai, bentuk berikut
perlu digunakan:

list(kamus.keys())

156
Contoh:

>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":


3}
>>> list(frekuensi.keys())
['A', 'E', 'B', 'D']
>>>

Perlu diketahui, hasil frekuensi.keys() bisa diproses


langsung melalui for. Jadi, pada keadaan seperti itu, konversi dengan
list() tidak diperlukan. Contoh:

>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":


3}
>>> for kunci in frekuensi.keys():
... print(kunci)
... 
A
E
B
D
>>>

Hasil yang sama di atas dapat diperoleh menggunakan


frekuensi tanpa menyebutkan .keys(). Contoh:

>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":


3}
>>> for kunci in frekuensi:
... print(kunci)
... 
A
E
B
D
>>>

157
Adapun kalau yang dikehendaki adalah mendapatkan nilai-nilai
yang terdapat pada kamus, metode values() yang digunakan.
Contoh:

>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":


3}
>>> for nilai in frekuensi.values():
... print(nilai)
... 
5
2
1
3
>>>

Untuk mendapatkan pasangan kunci dan nilai pada kamus melalui


for, metode items() bisa dilibatkan. Contoh:

>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":


3}
>>> for kunci, nilai in frekuensi.items():
... print(kunci, "->", nilai)
... 
A -> 5
E -> 2
B -> 1
D -> 3
>>>

Hasil serupa di atas dapat diperoleh dengan menuliskan seperti


berikut:

158
>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":
3}
>>> for kunci in frekuensi:
... print(kunci, "->", kamus[kunci])
... 
A -> 5
E -> 2
B -> 1
D -> 3
>>>

Untuk menyalin suatu kamus, metode copy() bisa digunakan.


Contoh:

>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":


3}
>>> frek = frekuensi.copy()
>>> del(frek["B"])
>>> frekuensi
{'A': 5, 'E': 2, 'B': 1, 'D': 3}
>>> frek
{'A': 5, 'E': 2, 'D': 3}
>>>

Dengan menggunakan copy(), frek dan frekuensi


menyatakan objek kamus yang berbeda, tetapi isinya sama. Oleh karena
itu, penghapusan kunci “A” pada frek tidak mempengaruhi
frekuensi.

Operator pembandingan != dan == bisa diterapkan pada kamus.


Begitu juga operator in. Contoh penggunaan operator in untuk
mengetahui suatu kamus mengandung kunci tertentu dapat dilihat
berikut:

159
>>> frekuensi = {"A": 5, "E": 2, "B": 1, "D":
3}
>>> "B" in frekuensi
True
>>> "R" in frekuensi
False
>>>

Contoh di atas menunjukkan bahwa “B” terdapat pada frekuensi,


tetapi “R” tidak.

Skrip berikut menunjukkan penggunaan kamus untuk membuat


program memahami suatu nama termasuk hewan atau tanaman:

 Berkas: memori.py

kamus = {}

while True:
print("Masukkan nama hewan atau tanaman\n" +
"Akhiri dengan menekan Enter saja. ",
end="")
masukan = input()
if len(masukan) == 0:
break;

kunci = masukan.lower()
kategori = kamus.get(kunci)
if kategori == None:
print("Saya belum tahu " + masukan + ".")
print("Ketik 1 untuk hewan " +
"atau 2 untuk tanaman")
jenis = input()
if jenis == "1":
kamus.update({kunci: "hewan"})
print("Baik, saya ingat-ingat\n")
elif jenis == "2":
kamus.update({kunci: "tanaman"})
print("Baik, saya ingat-ingat\n")
else:
print("Saya tahu. " + kunci +\
" adalah " + kategori + ".\n")

160
print("\nSelesai")

Akhir berkas

Skrip memori.py mula-mula memberikan nilai awal kamus


berupa kamus kosong. Kemudian, skrip melakukan perulangan dengan
pertama-tama meminta suatu nama hewan atau tanaman dimasukkan
dari papan ketik. Sekiranya pemakai menekan tombol Enter saja (berarti
string yang dimasukkan adalah string kosong), perulangan diakhiri. Hal
ini ditangani oleh:
if len(masukan) == 0:
break;

Jika string yang dimasukkan bukan string kosong, pernyataan di


bawahnya akan dieksekusi. Pernyataan pertama yang dijalankan
berupa:
kunci = masukan.lower()

Tujuannya adalah agar semua huruf yang tercatat di kunci berupa


huruf kecil sehingga memudahkan pencarian di kamus. Selanjutnya,
pernyataan berikut digunakan untuk mendapatkan nilai untuk kunci:
kategori = kamus.get(kunci)

Hasilnya dicacat di variabel kategori.

Nah, if kategori == None: digunakan untuk menangani kalau


kategori berisi None (yang berarti kunci di kamus tidak ditemukan).
Pada keadaan ini, pemakai diminta untuk memasukkan 1 untuk
menyatakan hewan atau 2 untuk menyatakan tanaman. Lalu,
berdasarkan nilai jenis, data ditambahkan ke kamus melalui
kamus.update({kunci: "hewan"})atau kamus.update({kunci:
"tanaman"}). Kalau kategori tidak berupa None (berarti kunci
ditemukan), pernyataan berikut dieksekusi:

161
print("Saya tahu. " + kunci +\
" adalah " + kategori + ".\n")

Dengan cara seperti itu, program dapat mengingat yang


dimasukkan oleh pemakai.

Contoh hasil pengujian skrip memori.py:

c:\pyGUI>memori.py
Masukkan nama hewan atau tanaman
Akhiri dengan menekan Enter saja. kuda
Saya belum tahu kuda.
Ketik 1 untuk hewan atau 2 untuk tanaman
1
Baik, saya ingat-ingat

Masukkan nama hewan atau tanaman


Akhiri dengan menekan Enter saja. kuda
Saya tahu. kuda adalah hewan.

Masukkan nama hewan atau tanaman


Akhiri dengan menekan Enter saja. bayam
Saya belum tahu bayam.
Ketik 1 untuk hewan atau 2 untuk tanaman
2
Baik, saya ingat-ingat

Masukkan nama hewan atau tanaman


Akhiri dengan menekan Enter saja. bayam
Saya tahu. bayam adalah tanaman.

Masukkan nama hewan atau tanaman


Akhiri dengan menekan Enter saja. 

Selesai

c:\pyGUI>

162
2.8.4 Himpunan
Himpunan adalah objek yang bersifat mutable dengan data yang
dikandungnya bersifat unik (tidak ada yang kembar) dan urutan data
tidak penting. Pengaksesan data menurut indeks tidak dimungkinkan
pada himpunan.

Pembentukan himpunan dilakukan menggunakan {} dengan bentuk


seperti berikut:

variabel = {elemen_1, elemen_2, …}

Khusus untuk himpunan kosong, penulisannya berupa set(). Contoh:

 x = set()

 y = {1}

 z = {1, 2, 3, 4, 5}

Contoh pertama menyatakan himpunan kosong. Contoh kedua


menyatakan himpunan dengan satu elemen. Contoh ketiga menyatakan
himpunan dengan lima elemen.

Penulisan seperti berikut tetap menyatakan himpunan yang sama


mengingat urutan penulisan data di himpunan tidak penting:

z = {2, 1, 3, 4, 5}

z = {1, 2, 3, 4, 5}

z = {5, 4, 3, 2, 1}

Hal ini ditunjukkan pada contoh berikut:

163
>>> {1, 2, 3, 4, 5} == {5, 4, 3, 2, 1}
True
>>>

Sebagaimana telah dijelaskan, elemen-elemen di himpunan tidak


ada yang kembar. Lalu, apa yang terjadi kalau suatu himpunan dibentuk
dengan ada elemen yang kembar? Perhatikan contoh berikut:

>>> x = {1, 2, 3, 1, 2, 4}


>>> x
{1, 2, 3, 4}
>>>

Tampak bahwa nilai 1 dan 2 meskipun ditulis lebih dari satu kali hanya
tercatat satu kali.

Himpunan dapat dibentuk dari tupel ataupun senarai. Contoh:

>>> x = set([1, 2, 3, 4, 5])


>>> y = set((6, 7, 8))
>>> x
{1, 2, 3, 4, 5}
>>> y
{8, 6, 7}
>>>

Jumlah elemen di himpunan dapat diketahui melalui fungsi


len(). Contoh:

164
>>> x = {"Agya", "Baleno", "Terios"}
>>> y = {1, 7, 3, 4, 8}
>>> len(x)
3
>>> len(y)
5
>>>

Metode add() disediakan untuk menambahkan elemen baru


pada himpunan. Contoh:

>>> x = {"Agya", "Baleno", "Terios"}


>>> x.add("CRV")
>>> x
{'Terios', 'Agya', 'Baleno', 'CRV'}
>>>

Metode discard() disediakan pada himpunan untuk


menghapus suatu elemen. Contoh:

>>> x = {"Agya", "Baleno", "Terios"}


>>> x.remove("Baleno")
>>> x
{'Terios', 'Agya'}
>>> x.remove("Pajero")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Pajero'
>>>

Hasil di atas menunjukkan bahwa kalau yang dihapus tidak terdapat


pada himpunan, tidak terjadi eksepsi.

165
Metode remove() juga disediakan untuk menghapus suatu
elemen di himpunan. Namun, metode ini menimbulkan eksepsi
sekiranya data yang dihapus tidak terdapat di himpunan. Contoh:

>>> x = {"Agya", "Baleno", "Terios"}


>>> x = {"Agya", "Baleno", "Terios"}
>>> x.discard("Baleno")
>>> x
{'Terios', 'Agya'}
>>> x.discard("Pajero")
>>> x
{'Terios', 'Agya'}
>>>

Selain operator ==, operator != dapat digunakan untuk


menyatakan ketidaksamaan. Operator in dapat digunakan untuk
memeriksa keberadaan suatu di dalam himpunan. Contoh:

>>> 1 in {1, 2}


True
>>> 3 in {1, 2}
False
>>>

Elemen himpunan tidak dapat diakses secara individual mengingat


himpunan tidak mengenal indeks. Pengaksesan elemen-elemen
himpunan hanya dapat diakses sekaligus melalui perulangan for.
Contoh ditunjukkan pada skrip berikut:

166
>>> buah = {"Apel", "Mangga", "Pepaya",
"Stroberi"}
>>> for nama in buah:
... print(nama)
...
Apel
Stroberi
Mangga
Pepaya
>>>

Di dalam himpunan terdapat istilah subhimpunan. Suatu himpunan


x dikatakan merupakan subhimpunan dari y jika semua elemen di x
terdapat di y. Contoh:

 a = {1, 2, 3}

 b = {1, 2, 3, 4, 5}

Maka, a adalah subhimpunan dari b.

Untuk mengetahui suatu himpunan merupakan subhimpunan dari


suatu himpunan, metode issubset() bisa digunakan. Nilai baliknya
berupa True objek bersangkutan merupakan subhimpunan dari
himpunan yang menjadi argumen. Contoh:

>>> a = {1, 2, 3}


>>> b = {1, 2, 3, 4, 5}
>>> b.issubset(a)
False
>>> a.issubset(b)
True
>>> a.issubset({1, 2, 3})
True
>>>

167
Hasil di atas menyatakan b bukan subhimpunan dari a (hasil
b.issubset(a)) melainkan a adalah subhimpunan dari b (hasil
a.issubset(b)). Contoh ketiga menunjukkan bahwa jika dua
himpunan sama, issubset() akan menghasilkan True.

Operasi yang umum dilakukan pada himpunan adalah union,


interseksi, selisih, dan selisih simetris. Masing-masing dibahas.

Union merupakan penggabungan dua himpunan. Elemen


himpunan masing-masing digabung. Lalu, apabila terdapat yang
kembar, hanya satu yang disertakan. Gambaran operasi union dapat
dilihat pada Gambar 2.7.

Gambar 2.7 Union menggabungkan dua himpunan

168
Operasi union dapat dilakukan dengan menggunakan metode
union(). Contoh:

>>> x = {1, 2, 3, 4, 5}


>>> y = {4, 5, 6, 7, 8}
>>> x.union(y)
{1, 2, 3, 4, 5, 6, 7, 8}
>>> y.union(x)
{1, 2, 3, 4, 5, 6, 7, 8}
>>>

Himpunan x dan y mempunyai elemen-elemen yang sama berupa 4


dan 5. Hasil union menunjukkan bahwa 4 dan 5 tidak ada yang
kembar. Perlu diperhatikan pula bahwa baik x.union(y)maupun
y.union(x) memberikan hasil yang sama.

Interseksi dua himpunan menyatakan operasi yang menghasilkan


himpunan yang mengandung elemen-elemen yang muncul pada kedua
himpunan. Ilustrasi interseksi dapat dilihat pada Gambar 2.8.

169
Gambar 2.8 Interseksi dua himpunan. Hasilnya yang diarsir hitam

Operasi interseksi dapat dibentuk melalui metode


intersection(). Contoh:

>>> x = {1, 2, 3, 4, 5}


>>> y = {4, 5, 6, 7, 8}
>>> x.intersection(y)
{4, 5}
>>> y.intersection(x)
{4, 5}
>>>

Himpunan x dan y mempunyai elemen-elemen yang sama berupa


4 dan 5. Hasil interseksi berupa elemen-elemen tersebut. Perlu
diperhatikan pula bahwa baik x.intersection(y)maupun
y.intersection(x) memberikan hasil yang sama.

170
Operasi selisih digunakan untuk mendapatkan elemen-elemen yang
terdapat di suatu himpunan, tetapi tidak berada di himpunan lain. Hal
ini ditangani oleh metode difference(). Contoh:

>>> x = {1, 2, 3, 4, 5}


>>> y = {4, 5, 6, 7, 8}
>>> x.difference(y)
{1, 2, 3}
>>> y.difference(x)
{8, 6, 7}
>>>

Tampak bahwa x.difference(y) dan y.difference(x)


memberikan hasil yang berbeda. Berikut adalah penjelasannya.

 x.difference(y) berarti semua elemen di x yang tidak


terdapat pada y.
 y.difference(x) berarti semua elemen di y yang tidak
terdapat pada x.

Ilustrasi perbedaan kedua perintah tersebut dapat dilihat pada


Gambar 2.9.

171
Gambar 2.9 Selisih dua himpunan. Hasilnya yang diarsir hitam

Operasi selisih simetris merupakan operasi yang menggunakan


logika “atau eksklusif” (xor). Hasil operasi ini berupa gabungan elemen-
elemen pada kedua himpunan dikurangi dengan elemen-elemen yang
sama pada kedua himpunan. Gambar 2.10 mempermudah pemahaman
terhadap operasi ini.

172
Gambar 2.10 Selisih simetris pada dua himpunan

Operasi selisih simetris dilaksanakan melalui metode


symmetric_difference. Contoh:

>>> x = {1, 2, 3, 4, 5}


>>> y = {4, 5, 6, 7, 8}
>>> x.symmetric_difference(y)
{1, 2, 3, 6, 7, 8}
>>> y.symmetric_difference(x)
{1, 2, 3, 6, 7, 8}
>>>

Hasil yang diperoleh, tidak menunjukkan perbedaan antara kedua


pernyataan berikut:

173
x.symmetric_difference(y)

y.symmetric_difference(x)

Contoh skrip yang menggunakan himpunan:

 Berkas: himpunan.py

himpunan = set()

print("Masukkan enam bilangan")


for pencacah in range(1, 7):
print(pencacah, ": ", sep="", end="")
masukan = input()
bilangan = int(masukan)

himpunan.add(bilangan)

print("Elemen dalam himpunan:")


for elemen in himpunan:
print(elemen, "", end="")

print()

if len(himpunan) != 6:
print("Dari keenam data yang Anda " +\
"masukkan, terdapat data " +\
"yang kembar")

Akhir berkas
Skrip ini meminta pemakai memasukkan enam bilangan bulat dari
papan-ketik dan disimpan ke dalam himpunan. Kemudian, setiap
elemen ditampilkan. Terakhir, sekiranya terdapat data yang kembar,
informasi berikut ditampilkan:

Dari keenam data yang Anda masukkan, terdapat data


yang kembar

Contoh hasil pengujian skrip himpunan.py:

174
c:\pyGUI>himpunan.py
Masukkan enam bilangan
1: 5
2: 6
3: 7
4: 8
5: 9
6: 10
Elemen dalam himpunan:
5 6 7 8 9 10

c:\pyGUI>

c:\pyGUI>himpunan.py
Masukkan enam bilangan
1: 5
2: 6
3: 5
4: 8
5: 9
6: 10
Elemen dalam himpunan:
5 6 8 9 10
Dari keenam data yang Anda masukkan, terdapat
data yang kembar

c:\pyGUI>

2.9 Penanganan Eksepsi


Pada Python, kesalahan sintaksis dan kesalahan sewaktu eksekusi
akan menimbulkan eksepsi. Eksepsi memberitahukan kesalahan yang
terjadi sewaktu suatu pernyataan dieksekusi dan segera menghentikan
eksekusi sehingga pernyataan berikutnya tidak akan dijalankan. Tabel
2.5 menunjukkan beberapa nama eksepsi.

175
Tabel 2.5 Daftar sejumlah nama eksepsi

Nama Eksepsi Keterangan


AttributeError Eksepsi ini terjadi karena terdapat
penyebutan atribut yang sebenarnya tidak
terdapat dalam objek bersangkutan.
Misalnya, Anda menyebutkan metode
copy() pada string seperti berikut:
"".copy()
FileNotFoundError Eksepsi ini muncul karena berkas yang
hendak diproses tidak ada. Contoh:
open("x")
ModuleNotFoundError Eksepsi ini terjadi karena mengimpor
modul yang sebenarnya tidak ada.
Contoh:
import takada
IndexError Eksepsi ini terjadi karena indeks di luar
jangkauan yang tersedia (misalnya pada
senarai). Contoh (penyebutan indeks 3:
x = [1, 2]
x[3]
KeyboardInterrupt Eksepsi terjadi sewaktu ada interupsi dari
pemakai yang menekan tombol Ctrl+C.
KeyError Kesalahan karena kunci yang digunakan
tidak tersedia pada kamus. Contoh
(penyebutan kunci “cc” yang tidak ada di
kamus):
kamus = {"nopolisi": "AB7374SA",
"warna": "Merah"}
kamus["cc"]
NameError Eksepsi terjadi karena terdapat
penyebutan nama yang tidak dikenal.
Contoh (ketika variabel takada memang
tidak ada):
print(takada)

176
Nama Eksepsi Keterangan
SyntaxError Kesalahan secara sintaks terjadi.
TypeError Kesalahan karena ada suatu operasi
terhadap objek yang sebenarnya tidak
didukung; misalnya Anda mengubah nilai
elemen pada tupel yang sebenarnya
bersifat immutable. Contoh:
t = (1, 2)
t[0] = 5
ValueError Eksepsi terjadi karena pemberian nilai
argumen yang salah. Contoh:
import math
math.sqrt(-1)
ZeroDivisionError Kesalahan karena ada pembagian bilangan
dengan nol. Contoh:
print(5/0)

2.9.1 Pernyataan try…except


Terkadang eksepsi perlu ditangani agar suatu kesalahan (misalnya
data yang dimasukkan menyebabkan eksepsi) tidak menghentikan
eksekusi skrip. Nah, untuk keperluan ini, pernyataan try…except
dibutuhkan.

Bentuk pernyataan try…except adalah seperti berikut:

177
try:
pernyataan_1
pernyataan_2

except [nama_eksepsi]:
pernyataan_a
pernyataan_b

[else:
pernyataan_x
pernyataan_y

]

Pada bentuk di atas, jika terdapat suatu eksepsi pada


pernyataan_1, pernyataan_2, dst., eksekusi akan dilanjutkan ke bagian
except, yakni menjalankan pernyataan_a, pernyataan_b, dst. Jika
nama eksepsi disebutkan di except, bagian except hanya dijalankan
sekiranya eksepsi yang terjadi adalah sama dengan yang disebut dalam
except. Adapun bagian else bersifat opsional (ditandai dengan [])
dan hanya akan dijalankan kalau tidak terjadi eksepsi sama sekali.
Contoh:

178
>>> try:
... print(5 / 2)
... except:
... print("Terjadi eksepsi")
... else:
... print("Baik-baik saja")
... 
2.5
Baik-baik saja
>>>

Contoh berikut menujukkan ketika terjadi eksepsi:

>>> try: 
... print(5 / 0) 
... except: 
... print("Terjadi eksepsi")
... else: 
... print("Baik-baik saja")
... 
Terjadi eksepsi
>>>

Jika dikehendaki untuk menangkap semua eksepsi dan


mendapatkan pesan eksepsi, pada except perlu disertakan
Exception as err terlebih dahulu. Contoh:

>>> try:
... print(5 / 0)
... except Exception as err:
... print("Terjadi eksepsi")
... print(err)
... 
Terjadi eksepsi
division by zero
>>>

179
Contoh berikut menunjukkan skrip yang menangani eksepsi
pemasukan data yang tidak berupa bilangan bulat:

 Berkas: validbil.py

while True:
try:
masukan = input("Masukkan bilangan bulat: ")
bil_bulat = int(masukan)
break
except ValueError:
print("Maaf, harus berupa bilangan bulat.")

print("Bilangan yang Anda masukkan:", bil_bulat)

Akhir berkas

Perhatikan bahwa try..except diletakkan pada tubuh while.


Eksepsi akan terjadi setiap kali bil_bulat = int(masukan) tidak
dapat melakukan konversi ke bilangan bulat. Pada keadaan seperti ini,
pesan “Maaf, harus berupa bilangan bulat” ditampilkan dan yang
terdapat di tubuh while akan dieksekusi kembali. Namun, kalau
konversi ke bilangan bulat berhasil dilakukan, break membuat
eksekusi terhadap while diakhiri.

Berikut adalah contoh pengujian skrip validbil.py:

c:\pyGUI>validbil.py
Masukkan bilangan bulat: 5A
Maaf, harus berupa bilangan bulat.
Masukkan bilangan bulat: 17.2
Maaf, harus berupa bilangan bulat.
Masukkan bilangan bulat: 17
Bilangan yang Anda masukkan: 17

c:\pyGUI>

180
2.9.2 Satu except Menangani Lebih Satu Eksepsi
Pada contoh di depan, satu except digunakan untuk menangani
satu eksepsi. Sesungguhnya, satu except dapat digunakan untuk
menangani lebih dari satu eksepsi. Dalam hal ini, eksepsi-eksepsi yang
dilibatkan perlu ditulis dalam bentuk tupel. Contoh:

 Berkas: multi.py

import math

daftar = [10, -1, "10", [1, 2]]


for data in daftar:
try:
print("Akar", data, "= ", end="")
print(math.sqrt(data))
except (TypeError, ValueError) as err:
print(err)

Akhir berkas

Pada skrip ini, except menangani dua jenis eksepsi, yaitu


TypeError dan ValueError. Nah, perulangan for akan
mendeteksi kedua jenis eksepsi tersebut. Hal ini ditunjukkan pada hasil
pengujian berikut:

c:\pyGUI>multi.py
Akar 10 = 2.1622776601683795
Akar -1 = math domain error
Akar 10 = must be real number, not str
Akar [1, 2] = must be real number, not list

c:\pyGUI>

181
2.9.3 Satu try Melibatkan Dua except
Apabila try melibatkan penanganan dua eksepsi dan pada
eksepsi masing-masing diperlukan penanganan tersendiri, eksepsi
masing-masing perlu ditangani menggunakan except tersendiri. Perlu
diketahui, pernyataan try dapat mengandung lebih dari satu except.
Contoh:

 Berkas: multi2.py

import math

daftar = [10, -1, "10", [1,2]]


for data in daftar:
try:
print("Akar", data, "= ", end="")
print(math.sqrt(data))
except TypeError as err:
print(err)
except ValueError as err:
print("<Akar tidak boleh negatif>")

Akhir berkas

Berikut adalah contoh hasil pengujian skrip multi2.py:

c:\pyGUI>multi2.py
Akar 10 = 2.1622776601683795
Akar -1 = <Akar tidak boleh negatif>
Akar 10 = must be real number, not str
Akar [1, 2] = must be real number, not list

c:\pyGUI>

182
2.9.4 Pernyataan try…finally
Pernyataan try dapat mengadung klausa finally dengan
bentuk seperti berikut:

finally:
pernyataan_1
pernyataan_2

Dalam hal ini, pernyataan_1, pernyataan_2, dst. akan selalu dieksekusi


sebelum pernyataan try berakhir.

Contoh skrip yang melibatkan finally:

 Berkas: finally.py

import math

try:
masukan = input("Masukkan bilangan bulat: ")
bil = int(masukan)
print("Akar", bil, "=", math.sqrt(bil))
except Exception as err:
print(err)
finally:
print("Akhir try")

Akhir berkas
Berikut adalah contoh hasil pengujian skrip ini:

183
c:\pyGUI>finally.py
Masukkan bilangan bulat: 100
Akar 100 = 10.0
Akhir try

c:\pyGUI>finally.py
Masukkan bilangan bulat: 10a
invalid literal for int() with base 10: '10a'
Akhir try

c:\pyGUI>

Tampak bahwa yang terdapat pada bagian finally selalu dieksekusi,


baik terjadi eksepsi atau tidak.

2.10 Pembuatan Kelas dan Objek


Python merupakan bahasa pemrograman yang mendukung
pemrograman berorientasi objek. Objek dibentuk dari kelas. Dengan
perkataan lain, kelas dapat dibayangkan sebagai cetakan untuk objek.
Melalui sebuah kelas, sejumlah objek bisa dibentuk.

2.10.1 Pembentukan Kelas


Kelas dibentuk dengan format seperti berikut:

class NamaKelas:
[“””string dokumentasi”””]
pernyataan_1
pernyataan_2

184
Nama kelas bisa ditulis dengan awalan huruf kapital. Baris pertama
dalam kelas bisa berisi string dokumentasi, yang ditulis dengan awalan
dan akhiran tiga petik ganda.

Berikut adalah definisi kelas bernama Tanaman:


class Tanaman:
""" Kelas Tanaman adalah contoh
suatu kelas yang mengandung
atribut dan metode """

nama = "Sakura"

def tampilkan_nama(self):
print("Aku adalah", self.nama)

Pada definisi kelas di atas, berikut merupakan string dokumentasi.


Adapun nama adalah atribut, yang menyatakan variabel di dalam kelas,
dan tampilkan_nama adalah nama fungsi yang melekat dalam kelas
dan dinamakan metode.

Perlu diperhatikan bahwa metode tampilkan_kelas()


mengandung parameter pertama berupa self. Parameter ini
digunakan untuk menyatakan objek. Penulisan self.nama dalam
definisi fungsi menyatakan “nama milik objek atau kelas”.

Pengertian “nama milik objek atau kelas” perlu digarisbawahi.


Apabila objek tidak memiliki atribut nama, maka atribut nama pada
kelas yang akan digunakan. Jadi, atribut itu sendiri dibedakan antara
atribut objek dan atribut kelas. Pada contoh di depan, nama adalah
atribut milik kelas. Atribut kelas menyatakan nilai yang sama untuk
semua objek yang dibentuk melalui kelas. Adapun atribut objek bersifat

185
independen antara satu objek dengan objek lain yang berkelas sama.
Pembahasan lebih detail akan dibahas belakangan.

Berdasarkan kelas Tanaman, dapat dibuat objek yang dirujuk oleh


bunga. Pernyataan yang diperlukan berupa:
bunga = Tanaman()

Secara lebih detail, pernyataan di atas digunakan untuk menciptakan


instan kelas Tanaman dan objek yang terbentuk ditugaskan ke variabel
bunga.

Contoh selengkapnya dapat dilihat pada skrip berikut:

 Berkas: kelas.py

class Tanaman:
"""Kelas Tanaman adalah contoh suatu kelas yang
mengandung atribut dan metode """

nama = "Sakura"

def tampilkan_nama(self):
print("Aku adalah", self.nama)

# Penggunaan kelas
bunga = Tanaman()

bunga.tampilkan_nama()
bunga.nama = "Mawar"
bunga.tampilkan_nama()

print("-----------------")

sayuran = Tanaman()
sayuran.tampilkan_nama()
sayuran.nama = "Bayam"

print("-----------------")

sayuran.tampilkan_nama()
bunga.tampilkan_nama()

186
Akhir berkas

Setelah pernyataan bunga = Tanaman() dieksekusi, metode


tampilkan_nama() dapat diakses oleh bunga dengan menuliskan:
bunga.tampilkan_nama()

Atribut nama dapat diakses melalui bunga dengan menuliskan


bunga.nama. Namun, perlu diperhatikan bahwa pada pernyataan
berikut, atribut nama yang dimaksud adalah milik objek (bukan milik
kelas):
bunga.nama = "Mawar"

Penugasan atribut melalui variabel yang merujuk ke objek


mengisyaratkan Python bahwa yang digunakan adalah atribut objek.
Dengan demikian, nama milik kelas tetap berisi “Sakura”. Oleh karena
itu, setelah pembentukan objek yang dirujuk oleh sayuran, nama
milik kelas tetap berisi “Sakura”:

Lalu, pernyataan berikut hanya mengubah nama milik objek yang


ditunjuk oleh sayuran:
sayuran.nama = "Bayam"

Itulah sebabnya, dua pernyataan berikut akan memberikan hasil


yang berbeda:
sayuran.tampilkan_nama();
bunga.tampilkan_nama();

Berikut adalah hasil pemanggilan skrip kelas.py:

187
c:\pyGUI>kelas.py
Aku adalah Sakura
Aku adalah Mawar Independen,
----------------- karena nama
Aku adalah Sakura yang
----------------- digunakan
Aku adalah Bayam milik objek
Aku adalah Mawar

c:\pyGUI>

Sebagaimana telah dijelaskan di depan, kelas dapat mengandung


string dokumentasi. Nah, string dokumentasi dapat diakses melalui
atribut __doc__ (di depan dan belakang doc berupa dua simbol garis
bawah). Di dalam skrip kelas, Anda bisa menambahkan
print(bunga.__doc__) untuk menampilkan string dokumentasi
kelas.

2.10.2 Penggunaan Konstruktor


Konstruktor adalah metode yang akan dijalankan ketika suatu
objek diciptakan. Nama untuk konstruktor berupa __init__.
Perhatikan bahwa kata ini didahului dan diakhiri dengan dua tanda garis
bawah.

Contoh kelas yang dilengkapi konstruktor dapat dilihat pada skrip


berikut:

 Berkas: konstruktor.py

class Tanaman:
def __init__(self, nama = "<belum ditentukan>"):
self.nama = nama

def ubah_nama(self, nama):


self.nama = nama

188
def tampilkan_nama(self):
print("Aku adalah", self.nama)

# Penggunaan kelas
bunga = Tanaman()
bunga.tampilkan_nama()
bunga.ubah_nama("Mawar")
bunga.tampilkan_nama()

print("-----------------")
bunga = Tanaman("Bayam")
bunga.tampilkan_nama()

Akhir berkas

Pada skrip konstruktor.py, kelas Tanaman tidak


mengandung atribut kelas. Konstruktor kelas Tanaman berupa:
def __init__(self, nama = "<belum ditentukan>"):
self.nama = nama
Parameter nama berupa argumen bawaan, dengan nilai bawaan berupa
“<belum ditentukan>”. Pernyataan berikut membuat argumen nama
ditugaskan ke atribut nama milik objek:
self.nama = nama

Kelas Tanaman pada contoh ini menghindari penggunaan


var.nama = ”sesuatu”. Oleh karena itu, perubahan nama
dilakukan melalui metode ubah_nama(), yang didefinisikan seperti
berikut:
def ubah_nama(self, nama):
self.nama = nama

Argumen metode ini menyatakan nama pengganti.

Pembentukan objek pertama dan penugasan ke variabel dilakukan


melalui:
bunga = Tanaman()

189
Mengingat tidak ada argumen yang diberikan, nilai bawaan “<belum
ditentukan> akan digunakan. Jadi, pernyataan di atas identik dengan:
bunga = Tanaman("<belum ditentukan>"))

Pernyataan berikut digunakan untuk melakukan pengubahan nama


tanaman:
bunga.ubah_nama("Mawar")

Pernyataan ini sebagai pengganti:


bunga.nama = "Mawar"

Pembentukan objek kedua dan penugasan ke variabel dilakukan


melalui:
bunga = Tanaman("Bayam")

Jadi, nama “Bayam” bisa langsung diberikan saat objek dibentuk.

Berikut adalah hasil pemanggilan skrip konstruktor.py:

c:\pyGUI>konstruktor.py
Aku adalah <belum ditentukan>
Aku adalah Mawar
-----------------
Aku adalah Bayam

c:\pyGUI>

2.10.3 Penggunaan Atribut Kelas dan Penghapusan Objek


Penggunaan atribut kelas yang dapat digunakan secara bersama-
sama oleh semua objek ditunjukkan pada skrip berikut:

 Berkas: berbagi.py

class Alien:

190
pencacah = 0 # Atribut kelas

# ------- konstruktor
def __init__(self, nama):
self.nama = nama
Alien.pencacah += 1

# ------- destruktor
def __del__(self):
Alien.pencacah -= 1

# ------- metode
def info(self):
print("Alien :", self.nama)
print("Alien hidup:", Alien.pencacah)
print("")

# Penciptaan alien
alien_1 = Alien("Kukurata")
alien_2 = Alien("Jiwamerana")
alien_3 = Alien("Karnacinta")

# Pemanggilan metode
print("Informasi untuk alien_1:");
alien_1.info()

print("Informasi untuk alien_2:");


alien_2.info()

print("Informasi untuk alien_3");


alien_2.info()

# Pemeriksaan atribut alien yang masih ada


print("Setelah tiga objek diciptakan");
print("jumlah alien = ", Alien.pencacah)
print("")

# Penghapusan satu alien


del(alien_3)

print("Setelah alien_3 dihapus:")


print("Jumlah alien =", Alien.pencacah)

Akhir berkas

191
Pada skrip ini, atribut bernama pencacah digunakan untuk
mencatat objek yang terbentuk. Sekiranya terdapat objek yang dihapus,
nilai pencacah juga diperbaharui.

Berikut adalah hasil pemanggilan skrip berbagi.py:

c:\pyGUI>berbagi.py
Informasi untuk alien_1:
Alien : Kukurata
Alien hidup: 3

Informasi untuk alien_2:


Alien : Jiwamerana
Alien hidup: 3

Informasi untuk alien_3


Alien : Karnacinta
Alien hidup: 3

Setelah tiga objek diciptakan


jumlah alien = 3

Setelah alien_3 dihapus:


Jumlah alien = 2

c:\pyGUI>

2.11 Operasi String


Operasi dengan string telah diperkenalkan pada Bab 2, dimulai
dengan cara menuliskan literal hingga operasi string yang melibatkan
operator + dan *. Di bab ini operasi pengaksesan bagian di string dan
juga berbagai metode yang melekat dalam string dibahas.

192
2.11.1 Indeks dan Irisan di String
Cara mengakses karakter secara individual di string menyerupai
pada senarai. Indeks 0 hingga jumlah karakter – 1 bisa digunakan.
Notasinya berupa:

string[indeks]

Contoh:

>>> teks = "ABCDE"


>>> teks[0] 
'A'
>>> teks[1] 
'B'
>>> teks[2] 
'C'
>>>

Pemrosesan dengan for dapat dilakukan seperti berikut:

>>> teks = "ABCDE"


>>> for karakter in teks: 
... print(karakter) 
... 
A
B
C
D
E
>>>

Untuk membalik urutan karakter yang didapat, fungsi


reversed() bisa digunakan. Contoh:

193
>>> teks = "ABCDE"
>>> for karakter in reversed(teks):
... print(karakter)
...
E
D
C
B
A
>>>

Irisan yang digunakan pada senarai bisa diterapkan pada string.


Contoh:

>>> teks = "ABCDE"


>>> teks[0:3]
'ABC'
>>> teks[2:]
'CDE'
>>> teks[-2:]
'DE'
>>> teks[:]
'ABCDE'
>>>

2.11.2 Metode-Metode pada String


String memiliki banyak sekali metode. Beberapa metode
dicantumkan pada Tabel 2.6.

Tabel 2.6 Metode pada string

Metode Keterangan dan Contoh


capitalize() Metode ini memberikan nilai balik berdasarkan
string objek dengan huruf pertama saja yang
dikapitalkan. Contoh:

194
Metode Keterangan dan Contoh
st = "teS.122.TAra"
st.capitalize()  'Tes.122.tara'
casefold() Metode ini memberikan nilai balik berdasarkan
string objek dengan semua huruf diubah menjadi
huruf kecil. Contoh:
st = "teS.122.Tara"
st.casefold()  'tes.122.tara'
center(n [, Metode ini mengembalikan string yang
karakter]) diletakkan di tengah area dengan lebar n
karakter. Sekiranya argumen kedua diberikan,
nilainya akan digunakan untuk mengisi bagian
yang kosong. Contoh:
st = "12345"
st.center(15)
' 12345 '
st.center(15, "*")
'*****12345*****'
count(sub [, Metode ini menghitung jumlah substring sub
mulai [, akhir]]) dalam string pada irisan [mulai:akhir]
st="ratata tara tara"
st.count("ta")  4
st.count(“ta”, 6)  2
st.count(“ta”, 0, 8)  2
endswith(akhiran Metode ini memberikan nilai balik berupa True
[, awal [, akhir]]) kalau string berakhiran dengan akhiran.
Argumen kedua dan ketiga untuk menentukan
irisan string. Contoh:
st = "ratata tara tara"
st.endswith("ta")  False
st.endswith("ta", 0, -2)  True
st.endswith("ta", 0, 6)  True
expandtabs([n]) Metode ini menghasilkan salinan string objek
dengan mengganti setiap tab dengan n spasi.

195
Metode Keterangan dan Contoh
Kalau n tidak disebutkan, jumlah spasi berupa 8.
Contoh:
st="a\tb\tc"
st.expandtabs()  'a b c'
st.expandtabs(4)  'a b c'
find(sub [, mulai Metode ini memberikan nilai balik berupa indeks
[, akhir]]) tempat substring sub ditemukan dalam string.
Irisan [mulai:akhir] menentukan tempat
pencarian. Kalau substring tidak ditemukan, nilai
balik berupa -1. Contoh:
st = "ratata tara tara"
st.find("TA")  -1
st.find("ta")  2
st.find("ta", 3, 6)  4
format(nilai_1, Metode ini berguna untuk melakukan
nilai_2, …) pemformatan terhadap string objek; antara lain
memungkinkan suatu variabel disubstitusi
dengan nilainya. Informasi detail tentang metode
ini dapat dilihat di:
https://docs.python.org/3/tutorial/inputoutput.html
Contoh:
nama = "Johan Budi"
usia = 24
st = "Nama: {v_nama}, usia: {v_usia}"
st.format(v_nama = nama, v_usia = usia)
'Nama: Johan Budi, usia: 24'
index(sub [, mulai Serupa dengan find(), tetapi akan membuat
[, akhir]]) kesalahan kalau substring yang dicari tidak
ditemukan. Contoh:
st = "ratata tara tara"
st.find("TA")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>

196
Metode Keterangan dan Contoh
ValueError: substring not found
isalnum() Metode ini memberikan nilai balik True kalau
semua karakter berupa digit atau huruf. Contoh:
st = “123A”
st.isalnum()  True
st="1234A*"
st.isalnum()  False
isalpha() Metode ini memberikan nilai balik True kalau
semua karakter berupa huruf. Contoh:
st = “123A”
st.isalpha()  False
st="1234A*"
st.isalpha()  False
st="Bravo"
st.isalpha()  True
isdigit() Metode ini menghasilkan True kalau semua
karakter dalam string objek berupa digit (0-9).
Contoh:
"12".isdigit()  True
"-12".isdigit()  False
Isidentifier() Metode ini menghasilkan True jika string objek
menyatakan nama pengenal yang valid. Contoh:
"nama orang".isidentifier()  False
"nama-orang".isidentifier()  False
"nama_orang".isidentifier()  True
islower() Metode ini menghasilkan True kalau semua
huruf di string objek paling tidak mengandung
satu huruf kecil dan tidak ada huruf kapital.
Contoh:
"abc123".islower()  True
"a123".islower()  True
"Abc123".islower()  False
isspace() Metode ini menghasilkan True hanya kalau

197
Metode Keterangan dan Contoh
semua karakter yang terdapat pada string
berupa spasi-putih (bisa spasi, tab, atau newline).
Contoh:
" ".isspace()  True
"\t".isspace()  True
"\n".isspace()  True
"a\tb".isspace()  False
istitle() Metode ini menghasilkan True kalau setiap
awal kata pada string objek berupa huruf kapital.
Contoh:
"Dua buku".istitle()  False
"Dua Buku".istitle()  True
"D".istitle() True
isupper() Metode ini menghasilkan True kalau paling
tidak terdapat satu huruf kapital dan tidak ada
satu pun huruf kecil. Contoh:
"C123".isupper()  True
"Td".isupper()  False
join(deret) Metode ini menggabungkan deretan string ke
dalam bentuk string. String yang digunakan
memanggil metode ini bertindak sebagai
pemisah antarstring argumen. Contoh:
",".join(("Apel", "Matoa", "Duku"))  'Apel,Matoa,Duku'
ljust(n [,pengisi]) Metode ini menghasilkan string yang didasarkan
pada string pemanggil metode ini dengan
panjang n karakter. Jika argumen kedua
diberikan, karakternya dipakai untuk mengisi
ruang yang tersisa sehingga total keseluruhan
karakter sebanyak n buah. Contoh:
st="12345"
st.ljust(10)  '12345 '
st.ljust(10, "*")  '12345*****'
lower Metode ini menghasilkan salinan string objek

198
Metode Keterangan dan Contoh
dengan semua huruf dikonversi ke huruf kecil.
Contoh:
st = "Tes...ABC"
>>> st.lower()  'tes...abc'
lstrip([string]) Metode ini menghasilkan salinan string objek
dengan spasi di bagian kiri dihapus. Kalau
argumen kedua diberikan, karakter-karakter
yang terletak di awal string yang terdapat pada
argumen kedua ini dibuang. Contoh:
st=" ABC"
st.lstrip()  'ABC'
st="1239ABC"
st.lstrip("0123456789")  'ABC'
partition(dicari) Metode ini menghasilkan tupel berdasarkan
string objek dengan:
 elemen pertama menyatakan string
sebelum yang dicari;
 elemen kedua menyatakan string yang
cocok dengan dicari;
 elemen ketiga menyatakan string setelah
yang dicari.
Contoh:
st = "Aku punya pisang Ambon"
st.partition("pisang")('Aku punya ', 'pisang', ' Ambon')
st.partition("pepaya") ('Aku punya pisang Ambon', '', '')
replace(lama, Metode ini menghasilkan salinan string objek
baru [, jumlah]) dan mengganti substring lama pada string yang
memanggil metode ini dengan substring baru.
Jika argumen ketiga tidak disertakan, semua
substring yang cocok akan diganti. Argumen
ketiga menentukan jumlah yang diganti.
st="ABC-ABC-ABC"
st.replace("BC", "di")  'Adi-Adi-Adi'

199
Metode Keterangan dan Contoh
st.replace("BC", "")  'A-A-A'
st.replace("BC", "di", 2)  'Adi-Adi-ABC'
rfind(sub [, awal Metode ini memperoleh indeks terbesar tempat
[, akhir]]) substring sub ditemukan dalam string yang
memanggil metode ini. Argumen kedua dan
ketiga menentukan irisan [awal:akhir] untuk
mencari substring. Jika yang dicari tidak ada, nilai
balik berupa -1. Contoh:
st="ABCABCABC"
st.rfind("BC")  9
st.rfind("bc")  -1
st.rfind("BC", 0, 5)  1
rindex(sub [, awal Serupa dengan rfind(). Namun, kalau yang
[, akhir]]) dicari tidak ditemukan, akan menimbulkan
eksepsi.
rjust(n [, pengisi]) Metode ini menghasilkan string dengan panjang
n karakter. Dalam hal ini, string yang berasal dari
pemanggil metode ini akan diletakkan rata kanan
terhadap area yang disediakan. Jika argumen
pengisi disertakan, karakternya dipakai untuk
mengisi di bagian kiri. Contoh:
st = "12345"
st.rjust(10)  ' 12345'
st.rjust(10, "*")  '*****12345'
rstrip([daf_kar]) Metode ini menghasilkan salinan string dengan
spasi di bagian kanan dihapus. Kalau argumen
kedua diberikan, karakter-karakter yang terletak
di akhir string yang terdapat pada argumen
kedua ini dibuang. Contoh:
st="ABCD "
st.rstrip()  'ABCD'
st="ABCDE1289"
st.rstrip("0123456789")  'ABCDE'

200
Metode Keterangan dan Contoh
split(pemisah) Metode ini menghasilkan senarai berisi string
yang merupakan hasil pemisahan dari string
pemanggil metode ini, dengan pemisah sebagai
tanda pemecah string. Contoh:
st = "Amir,Udin,Hamzah"
st.split(",")  ['Amir', 'Udin', 'Hamzah']
splitlines() Metode ini menghasilkan senarai yang berisi
data per baris. Contoh:
st="ABC\nDEFG\nHIJKLMN"
st.splitlines() ['ABC', 'DEFG', 'HIJKLMN']
startswith(awala Metode ini memberikan nilai balik berupa True
n [, awal [, kalau string berawalan dengan awalan. Argumen
akhir]]) kedua dan ketiga untuk menentukan irisan
string. Contoh:
st="Pemalang"
st.startswith("ma")  False
st.startswith("ma", 2)  True
strip([daf_kar]) Metode ini menghasilkan salinan string objek
dengan spasi-putih di bagian kiri dan kanan
dihapus. Kalau argumen kedua diberikan,
karakter-karakter yang terletak di awal dan akhir
string yang terdapat pada argumen kedua ini
dibuang. Contoh:
st="123ABC569"
st.strip("0123456789")  'ABC'
swapcase() Metode ini menghasilkan salinan string objek
dengan sifat huruf kecil dikonversi ke huruf
kapital dan huruf kapital dikonversi ke huruf
kecil. Contoh:
st = "Dua Naga"
st.swapcase()'dUA nAGA'
title() Metode ini menghasilkan salinan string dengan
setiap awal kata akan dikonversi ke huruf kapital

201
Metode Keterangan dan Contoh
dan yang lain dikonversi ke huruf kecil. Contoh:
st = "DUA NAGA"
st.title()'Dua Naga'
upper() Metode ini menghasilkan salinan string objek
dengan semua huruf dikonversi ke huruf kapital.
Contoh:
st = "Python 3"
st.upper()'PYTHON 3'
zfill(n) Metode ini menghasilkan string dengan panjang
n karakter dan bagian kiri dipenuhi dengan nol.
Contoh:
st="456"
st.zfill(8)  '0000456'

2.12 Tanya dan Jawab


7. Betulkah for dapat mengandung else?

Jawab:

Ya, bisa. Contoh:

>>> for nilai in range(1, 6):


... print(nilai) 
... else: 
... print("Akhir for")
... 
1
2
3
4
5
Akhir for
>>>

Bagian else akan dijalankan terakhir kali.

202
8. Pada fungsi tampil_arg() yang dibahas pada Sub-subbab
2.8.6, apakah arg pada *arg harus selalu seperti itu atau
boleh menggunakan nama lain?

Jawab:

Secara prinsip, Anda bisa menggunakan pengenal apa saja


untuk menggantikan arg. Hal yang terpenting tanda * di depan
nama pengenal harus ada.

9. Definisi fungsi memang bisa ditulis dalam satu baris saja?

Jawab:

Ya, bisa. Namun, hal ini sebaiknya dilakukan untuk yang


mengandung satu atau dua pernyataan saja supaya isi baris
tidak menjadi panjang dan sulit dipahami oleh pembaca.

Contoh 1:

def kuadrat(x): return x * x

Definisi di atas adalah bentuk lain dari:

def kuadrat(x):

return x * x

Contoh 2:

def gabung(s1, s2): s = s1 + s2; return s

Definisi di atas adalah bentuk lain dari:

def gabung(s1, s2):

s = s1 + s2

return s

203
10. Saya sudah membuat modul.py yang disimpan di
C:\pyGUI. Namun, ketika saya mencoba memberikan
perintah berikut, dikatakan modul tidak ada. Apa yang terjadi?

Jawab:

Folder kerja belum berupa C:\pyGUI. Cobalah berikan


perintah berikut di prompt Python:
import os

os.chdir("C:\pyGUI")

11. Indeks irisan tupel bisa mengandung nilai negatif? Benarkah?

Jawab:

Bisa. Contoh:

>>> ["AB7374SA", "Suzuki", 1600, ""Merah"]

>>> mobil[-2:]

[1490, 'Biru']

>>>

Nah, -2 pada mobil[-2:] berarti dua dari yang terakhir.


Dengan demikian, mobil[2:] berarti irisan dari indeks dua
dari yang terakhir hingga yang terakhir.

12. Metode sort() itu selalu mengurutkan senarai itu sendiri?


Apakah tidak ada cara untuk mendapatkan senarai hasil
pengurutan dari senarai, tetapi senarai aslinya tidak berubah?

Jawab:

Anda perlu menggunakan fungsi sorted(). Contoh:

>>> x = [2, 4, 1, 3, 4]

204
>>> y = sorted(x)
>>> x
[2, 4, 1, 3, 4]
>>> y
[1, 2, 3, 4, 4]
>>>

Tampak bahwa x tidak berubah setelah sorted(x)


dieksekusi. Perlu diketahui, argumen key=str.lower
ataupun reverse=True tetap bisa digunakan.

13. Bagaimana cara membuat atribut objek yang bersifat privat?

Jawab:

Python tidak menyediakan cara membuat atribut objek yang


bersifat privat. Menurut konvensi yang biasa dipakai para
pemrogram Python, atribut yang dimaksudkan sebagai private
ditulis dengan awalan simbol garis bawah; misalnya _nama.

14. Apakah senarai juga punya metode bernama clear() yang


digunakan untuk mengosongkan seluruh elemen dalam
senarai?

Jawab:

Ya, clear() tersedia.

15. Saya pernah melihat kode yang melibatkan perintah untuk


membuka berkas melalui open. Mengapa eksepsi yang
digunakan berupa OSError, bukan FileNotFoundError?

Jawab:

OSError adalah kelas dasar untuk FileNotFoundError.


Jadi, menggunakan OSError sudah mencakup

205
FileNotFoundError dan eksepsi lain yang diturunkan dari
kelas OSError (misalnya PermissionError atau eksepsi
yang berkaitan dengan izin mengakses berkas).

2.13 Soal dan Latihan


13. Betul atau salah? Ekspresi x if kondisi else y
menghasilkan nilai y kalau kondisi bernilai True.

14. Betul atau salah? do..while adalah pernyataan yang


digunakan untuk menangani perulangan.

15. Betul atau salah? Tupel bersifat mutable.

16. Betul atau salah? Fungsi tidak bernama didefinisikan


menggunakan lambda.

17. Betul atau salah? Satu pernyataan try bisa mengandung lebih
dari satu except.

18. Pernyataan ______________ berarti “tidak melakukan apa-


apa”.

19. Variabel _____________ adalah variabel yang dibuat di luar


definisi fungsi.

20. Metode _________ pada himpunan berguna untuk


menambahkan elemen baru ke himpunan.

21. Nama ______________ menyatakan konstruktor di suatu kelas.

22. Jika st berisi “ABCDEFG”, maka st[1:5] menghasilkan string


____________.

23. Modifikasilah skrip for.py sehingga bisa menampilkan n


tulisan “Python” dengan n dimasukkan dari papan ketik.

206
24. Terdapat senarai seperti berikut:

x = ['S', 'e', 'l', 'A', 'n', 'G']

Terapkan flter() sehingga terbentuk senarai seperti berikut:


['S', 'A', 'G']

25. Buatlah kelas bernama Pegawai yang berisi NIP (nomor induk
pegawai dan nama pegawai. Objek dapat dibuat semacam
berikut:

staf = Pegawai("20-1230", "Imran Hadi")

Kelas mengandung metode untuk mengganti nama pegawai


dan metode untuk menampilkan NIP dan nama pegawai.

Ujilah dengan menuliskannya dalam skrip.

207
DAFTAR PUSTAKA

Kadir, A.; 2018; Dasar Pemrograman Python 3; Yogyakarta: Penerbit


Andi.

Kadir, A.; 2019; Logika Pemrograman Python; Jakarta: Elex Media


Komputindo.

208

View publication stats

Anda mungkin juga menyukai