Modul Algoritma Pemrograman
Modul Algoritma Pemrograman
Pengenalan Bahasa
Pemrograman Python
Praktikum ini membutuhkan perangkat komputer yang memiliki spesifikasi minimum sebagai
berikut:
1. Terkoneksi ke Internet dan dapat mengunduh package-package Python.
2. Mampu menjalankan sistem operasi Windows 10 atau Ubuntu Linux.
Perangkat lunak yang diperlukan untuk mendukung praktikum ini adalah sebagai berikut:
1. Python 3.7 atau 3.8 yang terinstall menggunakan Anaconda atau Installer Python lainnya.
2. Web Browser (Mozilla Firefox, Microsoft Edge atau Google Chrome).
3. Command Prompt (jika menggunakan Windows).
4. Terminal (jika menggunakan Linux).
5. Editor Python (Visual Studio Code, PyCharm, Spyder atau editor-editor lainnya yang mendu-
kung Python).
1.3 Materi
1.3.1 Kenapa Python?
Python adalah bahasa pemrograman level tinggi yang interpreted, mendukung Object Oriented
Programming (OOP) dan memiliki sifat dynamic semantics. Menurut sebuah survey yang diseleng-
garakan oleh Stackoverflow (https://insights.stackoverflow.com/survey/2019#technology), Python
merupakan salah satu bahasa pemrograman yang paling banyak dipakai setelah Javascript. Secara
umum Python merupakan salah satu bahasa pemrograman yang paling populer di dunia karena
aturan dan sintaksnya yang sederhana untuk dipelajari bagi pemula. Logo dari Python dapat dilihat
pada Gambar 1.1.
Kesederhanaan bentuk dan sintaks Python dapat dilihat dari perbandingan source code program
Hello World jika dibandingkan dengan Java dan C.
Pada bahasa pemrograman Java:
1 #include <stdio.h>
2
3 int main(){
4 printf("Hello World");
5 return 0;
6 }
1 print("Hello World!");
Gambar 1.2: Python versi 3 di Ubuntu Linux. Terinstall Python versi 3.7.5
Bagi anda yang menggunakan Windows, anda bisa menginstall distribusi Anaconda yang relatif
mudah untuk diinstall. Pilihlah Python versi 3.7 dan disarankan memilih opsi 64-Bit Graphical
Installer, seperti pada Gambar 1.3.
Penggunaan mode interaktif ini memungkinkan anda memasukkan perintah satu-persatu dan
langsung diproses oleh interpreter Python. Sebagai contoh, hitunglah luas segitiga yang alasnya
memiliki panjang 10 cm dan tinggi 8 cm. Untuk menghitung luas segitiga tersebut, ketikkan
perintah-perintah berikut ini secara berurutan (diakhiri dengan menekan tombol Enter):
• panjang = 10
• tinggi = 8
• luas = 0.5 * panjang * tinggi
• luas
Hasilnya akan seperti yang ditunjukkan pada Gambar 1.6.
Perintah pertama dan kedua adalah perintah assignment, yaitu mengisi nilai variabel panjang dengan
nilai 10 dan variabel tinggi diisi dengan nilai 8. Sedangkan perintah ketiga mengisi variabel luas
dengan hasil perhitungan 0.5 ∗ pan jang ∗ tinggi. Perintah terakhir adalah menampilkan isi dari
variabel luas.
# Variabel adalah tempat kita menyimpan nilai yang nantinya akan dipakai untuk proses-proses
berikutnya. Pembahasan variabel akan dilakukan pada Bab 2.
# Untuk mengakhiri sesi interaktif, ketikkan perintah exit() yang diakhiri dengan tombol Enter.
Gambar 1.8: Tampilan Visual Studio Code saat menjalankan script Python.
4 # informasi program
5 print('Program konversi US$ ke IDR')
6 print('Kurs saat ini 1 US$ = ',kursusd, 'Rupiah')
7 # input jumlah US$ yang mau ditukar
8 jumlahusd = float(input('Masukkan jumlah uang yang mau ditukar ke Rupiah: '))
9 # hitung nilainya dalam Rupiah
10 dalamrupiah = jumlahusd * kursusd
11 # tampilkan hasilnya
12 print('Hasil konversi = Rp. ', dalamrupiah)
Untuk menjalankan script tersebut, gunakan perintah python3 nilaitukardollar.py (Ubuntu) atau
python nilaitukardollar.py (Windows). Pada Ubuntu, tampilan hasilnya dapat dilihat pada Gam-
bar 1.10.
# Baris yang diawali dengan tanda # adalah baris komentar. Komentar digunakan untuk
memberikan informasi atau keterangan mengenai baris-baris program dan akan diabaikan
oleh interpreter Python.
Jika anda menggunakan editor seperti Visual Studio Code, anda tidak perlu repot menjalankan
terminal dan mengetik perintahnya. Pada Visual Studio Code sudah ada tombol Run untuk menja-
lankan script tersebut. Anda juga dapat berinteraksi dengan hasil program melalui terminal yang
disediakan. Tampilan Visual Studio Code saat menjalankan script nilaitukardollar.py dapat dilihat
pada Gambar 1.11.
7 #besarnya diskon
8 nominal_diskon = (diskon/100) * belanja
9
13 #tampilkan hasilnya
14 print('Anda harus membayar: Rp. ', bayar)
Program tersebut menghitung jumlah yang harus dibayarkan jika belanja sebesar Rp. 100.000
dan mendapat diskon 30%. Jika script tersebut dijalankan, hasilnya akan seperti pada Gambar
1.12. Saat script dijalankan, tidak ada hasil yang dikeluarkan karena terjadi kesalahan pada baris
ke-11. Ada keterangan jenis kesalahan, yaitu NameError. Kesalahan ini merupakan kesalahan
sintaks karena ada aturan penulisan yang tidak terpenuhi. Kesalahan terjadi pada variabel bernama
nominaldiskon yang belum didefinisikan tetapi nilainya sudah digunakan.
Jika anda perhatikan kode programnya, pada baris ke-8 ada variabel bernama nominal_diskon,
tetapi pada baris ke-11 dituliskan sebagai nominaldiskon. Terjadi kesalahan pengetikan (typo)
yang menyebabkan script tidak bisa dijalankan.
Jika anda menggunakan editor yang mendukung Python, biasanya sebelum dijalankan sudah
akan dilakukan pengecekan dan apabila ada kesalahan sintaks dapat diketahui lebih awal. Gambar
1.13 adalah contoh tampilan di Visual Studio Code untuk script tersebut
Untuk memperbaiki kesalahan tersebut, ganti baris ke-8 menjadi nominaldiskon, seperti pada kode
program berikut ini:
7 #besarnya diskon
8 nominaldiskon = (diskon/100) * belanja
9
12
13 #tampilkan hasilnya
14 print('Anda harus membayar: Rp. ', bayar)
Setelah diperbaiki, maka sekarang script dapat dijalankan dengan baik sampai selesai seperti yang
terlihat pada Gambar 1.14.
Gambar 1.14: Script sudah bisa dijalankan sampai selesai dengan baik.
Jika anda perhatikan dengan baik, script tersebut berjalan dijalankan dengan baik sampai selesai,
tetapi hasilnya tidak sesuai dengan yang diharapkan. Jika kita membeli barang Rp. 100.000 dan
mendapat diskon 30%, maka seharusnya yang harus dibayarkan adalah Rp. 70.000. Tetapi script
tersebut menghasilkan output -70000. Kesalahan ini adalah kesalahan jenis runtime error, yaitu
kesalahan yang muncul saat program dijalankan. Kesalahan jenis ini biasanya diakibatkan oleh
kesalahan algoritma, kesalahan logika atau kesalahan-kesalahan dalam mengatur langkah-langkah
dalam program.
Kesalahan terjadi pada baris ke-11, yaitu pada bagian perhitungan jumlah yang harus dibayar,
seharusnya jumlah yang harus dibayar adalah harga barang dikurangi diskon. Pada script tersebut
perhitungannya terbalik sehingga menjadi salah. Perbaiki script tersebut menjadi seperti berikut ini:
1 #jumlah belanja (dalam rupiah)
2 belanja = 100000
3
7 #besarnya diskon
8 nominaldiskon = (diskon/100) * belanja
9
14 #tampilkan hasilnya
15 print('Anda harus membayar: Rp. ', bayar)
Setelah diperbaiki, script tersebut akan menghasilkan hasil yang benar sesuai dengan yang diha-
rapkan. Hasilnya dapat dilihat pada Gambar 1.15.
Setelah proses instalasi berhasil, untuk menjalankannya ketikkan perintah jupyter notebook.
Biasanya akan terbuka browser yang mengarah langsung ke halaman pertama Jupyter Notebook,
seperti yang terlihat pada Gambar 1.18.
# Untuk menjalankan Jupyter Notebook, gunakan perintah jupyter notebook pada Anaconda
Prompt atau Terminal.
Untuk mengakhiri penggunaan Jupyter Notebook, tekan tombol Ctrl-C pada Anaconda
Prompt atau Terminal.
Script Python disimpan dalam sebuah file berekstensi *.pynb (Python Notebook). Untuk
membuat sebuah notebook baru, pilih menu New > Notebook Python 3. Selain Python Notebook,
Jupyter Notebook juga menyediakan fasilitas jika anda ingin membuat file teks atau mengorganisasi
Gambar 1.18: Tampilan awal Jupyter Notebook.
notebook-notebook dalam suatu folder. Menu untuk membuat notebook baru dapat dilihat pada
Gambar 1.19.
Sebuah notebook baru memiliki nama Untitled. Anda dapat mengubahnya sesuai dengan
keinginan anda. Kemudian anda diberi 1 Cell untuk menuliskan script Python anda. Setiap Cell
dapat dijalankan secara terpisah, maupun juga bisa dijalankan seluruh Cell yang ada sekaligus.
Tampilan awal sebuah notebook baru dapat dilihat pada Gambar
Gambar 1.20: Tampilan awal notebook baru di Jupyter Notebook.
Untuk menyelesaikan masalah yang pertama, langkah-langkah yang perlu dilakukan adalah sebagai
berikut:
1. Saldo awal Rp. 5 juta.
2. Di akhir tahun pertama, bunga yang didapat adalah 10% * 5.000.000 = 500.000.
3. Sehingga saldo di akhir tahun pertama adalah 5.000.000 + 500.000 = 5.500.000.
4. Di akhir tahun kedua, bunga yang didapat adalah 10% * 5.500.000 = 550.000. Ini yang
dinamakan sebagai compound interest.
5. Sehingga saldo di akhir tahun kedua adalah 5.500.000 + 550.000 = 6.050.000.
6. Di akhir tahun ketiga, bunga yang didapat adalah 10% * 6.050.000 = 605.000.
7. Sehingga saldo di akhir tahun ketiga adalah 6.050.000 + 605.000 = 6.655.000.
Setelah anda memahami permasalahan dan dapat menyusun langkah-langkah penyelesaiannya,
barulah anda dapat mulai menuliskan programnya menggunakan Python.
Jalankan Python mode interaktif, kemudian masukkan perintah-perintah seperti pada Gambar
1.22.
Dengan adanya rumus tersebut, langkah-langkah yang diperlukan akan lebih singkat, yaitu:
1. Tentukan saldo awal (P = 5.000.000).
2. Tentukan besarnya bunga (r = 10% = 0.1).
3. Tentukan berapa kali bunga didapatkan (n = 1, karena bunga dihitung satu kali per-tahun).
4. Tentukan periodenya (t = 3 tahun).
5. Masukkan dalam formula compound interest, kita dapatkan saldo akhirnya.
Secara umum dalam membuat program anda perlu terlebih dahulu menentukan langkah-langkah
yang diperlukan untuk memecahkan masalah. Jangan terburu-buru untuk langsung membuat
programnya. Perhitungan dengan formula compound interest dapat anda lihat pada Gambar 1.23.
# Sebelum membuat program dalam Python, pastikan anda sudah menyusun langkah-langkah
penyelesaiannya terlebih dahulu. Langkah-langkah penyelesaian suatu masalah biasa disebut
sebagai algoritma.
Latihan 1.3 Berkaitan dengan compound interest pada Contoh 1.2 dan 1.3, jika Erika memiliki
uang 200 juta rupiah dan ingin disimpan di deposito Pasti Cuan sampai uangnya menjadi
minimal 400 juta, berapa lama waktu yang dibutuhkan?
catatan: bunga 10% per-tahun.
2. Variable, Expression dan Statements
2.3 Materi
2.3.1 Values dan type
Value merupakan komponen utama dari program, seperti huruf atau angka. Value yang sering
kita kenal misalnya 1,2,’a’,’z’, dan "Hello Word". Value dibagi menjadi beberapa tipe yang berbeda,
misalnya 2 untuk sebuah nilai integer dan "Hello Word" untuk sebuah nilai string. Interpreter dapat
melakukan identifikasi terhadap string karena pada penulisannya ditutup menggunakan tanda petik
(quation mark).
Untuk mecoba memahami values dan type, silakan coba beberapa baris kode berikut ini
menggunakan python interactive mode seperti yang ditunjukkan pada potongan kode dibawah ini.
>>> print(4)
4
>>> print(10.876)
10.876
>>> print('Z')
Z
>>> print('True')
True
>>> print('False')
False
Perintah print juga bekerja untuk value selain string, seperti integer (bilangan bulat), float
(bilangan pecahan), character (huruf), atau bool (benar/salah). Untuk mencobanya kita dapat
menggunakan perintah python untuk menjalankan interpreter.
Setiap value yang pasti memiliki type untuk mengetahui tipe data tersebut. Python menyediakan
fungsu built-in untuk melakukan pegecekan tipe data pada value dengan menggunakan fungsi type()
>>> x=5
>>> print(x, "tipenya adalah ", type(x))
5 tipenya adalah <class int'>
>>> x = 2.0
>>> print(x, "tipenya adalah ", type(x))
2.0 tipenya adalah <class float'>
>>> x = 1+2j
>>> print(x, "tipenya adalah ",type(x))
(1+2j) tipenya adalah <class complex">
Ketika menggunakan bilangan bulat besar, beberapa model penulisan menggunakan tanda koma
(,) diantara kelompok tiga digit. Misalnya pada penulisan 1.000.000. Dalam python, akan dianggap
sebagai bilangan bulat.
>>> print(1,000,000)
1,0,0
Hal ini terjadi karena Python menganggap bahwa 1,000,000,000 merupakan kiriman parameter
sebanyak 3 parameter pada fungi print, yaitu 1, 0, dan 0.
2.3.2 Variabel
Salah satu fitur powerfull dalam bahasa pemrograman adalah kemampuannya untuk melakukan
manipulasi variable. Variable merupakan lokasi memori yang dicadangkan untuk menyimpan
nilai-nilai. Ini berarti bahwa ketika Anda membuat sebuah variable Anda memesan beberapa ruang
di memori. Variable menyimpan data yang dilakukan selama program dieksekusi, yang natinya isi
dari variabel tersebut dapat diubah oleh operasi - operasi tertentu pada program yang menggunakan
variable.
Variable dapat menyimpan berbagai macam tipe data. Di dalam pemrograman Python, variable
mempunyai sifat yang dinamis, artinya variablePython tidak perlu didekralasikan tipe data tertentu
dan variable Python dapat diubah saat program dijalankan.
Potongan kode diatas merupakan contoh penggunaan dari varibale. Contoh pertana adalah
variable pesan yang berisi string, contoh kedua adalah variale n yang berisi nilai integar 17 dan
contoh ketiga merupakan nilai dari pi (π). Untuk menampilkan nilai dari varibale, dapat digunakan
perintah print.
>>> print(n)
17
>>> print(ipk)
3.29
Python sendiri memiliki 35 keyword yang tidak boleh digunakan untuk memberi nama variabel.
2.3.4 Statements
Statements merupakan bagian dari code interpreter Python yang dapat dieksekusi. Misalnya
pada statement print, dapat berupa expression statements dan assignment.
Ketika menggunakan pyhton dalam mode interaktif, interpreter secara langsung akan melakukan
eksekusi dan menampilkan hasilnya. Hal ini tentu saja berbeda ketika menggunakan script mode.
Script biasanya berisi statements yang saling berhubungan secara sekuensial.
Beberapa contoh penggunaan operator artimatika pada Python dapat dilihat pada potongan
kode berikut ini
>>>32 + 30
62
>>> hour = 5
>>> print (hour-1)
4
>>> minute=60
>>> print (hour*6+minute)
90
>>> print (minute/60)
1.0
>>> 5**2
25
>>> (5+9)*(15-7)
112
2.3.6 Expressions
Expression merupakan representasi dari nilai dan dapat terdiri dari gabungan antara values,
variable dan operator. Values dengan sendirinya dapat dianggap sebagai expression dan juga
variabel. Secara umum, semuanya dapat disebut dengan expression.
17
x
x+17
Ketika menggunakan expression dalam model intercative, interpreter akan melakukan evaluasi
dan menampilkan hasilnya.
>>> 1 + 1
2
>>> 3 + 2
5
Jika terjadi keraguan, silakan letakkan tanda kurung di dalam ekspresi untuk memastikan bahwa
komposisinya sesuai dengan yang diinginkan.
2.3.8 Operator Modulus dan String
Modulus
Operator Modulus merupakan sisa hasil bagi dari bilangan pertama dengan bilangan kedua.
Operator ini hanya berlaku pada tipe data integer. Dalam python, operator modulus dilambangakan
dengan tanda persen (%).
>>> quotient = 7 // 3
>>> print(quotient)
2
>>> oprmomulus = 7 % 3
>>> print(oprmomulus)
1
>>> first = 10
>>> second = 15
>>> print(first+second)
25
>>> first = '100'
>>> second = '150'
>>> print(first + second)
100150
Operator * juga bekerja dengan string dengan melakukan perkalian antara content string dan
integer.
1. Masukkan kartu ATM. Masukkan PIN anda. Kartu ATM dan PIN adalah Input yang diper-
lukan supaya anda bisa mengambil uang.
2. Anda memilih menu Pengambilan Uang. Kemudian anda memasukkan nominal yang
diinginkan. Bagian ini juga merupakan Input.
3. Mesin ATM akan memproses transaksi anda dengan menghubungi server Bank yang ber-
sangkutan. Dilakukan berbagai macam pengecekan (misal: apakah saldonya cukup? apakah
kartunya masih berlaku? apakah ada blokir?). Bagian ini disebut Proses.
4. Mesin ATM mengeluarkan uang, bukti pengambilan uang dan kartu anda. Uang yang keluar
merupakan Output dari kegiatan ini. Selain itu, saldo anda juga berkurang. Pengurangan
saldo juga merupakan hasil dari kegiatan ini.
Python juga dapat menangani input dari pengguna. Input dalam hal ini dapat berupa input
text yang dimasukkan oleh pengguna. Untuk itu python menyediakan built-in fucntion yang
disebut input untuk mendapatkan input dari keyboard. Ketika fungsi ini dipanggil, program akan
berhenti dan menunggu pengguna untuk mengetik sesuatu. Ketika pengguna menekan tombol
Enter, program akan dilanjutkan dan input akan mengambalikan apa yang diketik oleh pengguna
sebagai string.
Sebelum mendapatkan input dari pengguna, lebih baik untuk mencetak prompt yang memberi-
tahu pengguna apa yang harus diinput. String tersebut dapat diteruskan ke input untuk ditampilkan
kepada pengguna sebelum berhenti untuk input.
Tanda \n pada akhir prompt mewakili baris baru atau ganti baris sehingga input pengguna muncul
dibawah prompt.
Ketika mengharapkan pengguna untuk mengetik bilangan bulat, dapat dilakukan dengan meng-
onversi nilai kembali ke int menggunakan fungsi int():
2.4 Komentar
Tanda pagar (#) digunakan untuk menandai komentar di python. Komentar tidak akan dip-
roses oleh interpreter Python. Komentar hanya berguna untuk programmer untuk memudahkan
memahami maksud dari kode.
# Komentar pertama
print("hai dunia!") # Komentar kedua
Outputnya
hai dunia
Python tidak memiliki fitur komentar multibaris. Kita harus mengomentari satu persatu baris
seperti berikut:
# Ini komentar
# Ini juga adalah komentar
# Ini juga masih komentar
Bagaimana dengan tipe data yang lain? Kita akan mencoba untuk membuat program dengan
menggunakan tipe data bilangan baik integer maupun float.
1 # CONTOH PROGRAM
2 # MENGHITUNG BILANGAN
3 #===================================
4
5 x1 = eval(input("X1 = "))
6 x2 = eval(input("X2 = "))
7 x3 = eval(input("X3 = "))
8 x4 = eval(input("X4 = "))
9
10 jumlah = x1+x2+x3+x4
11 kali = x1*x2*x3*x4
12 print('Hasil Penjumlah semua bilangan = ', jumlah)
13 print('Hasil Perkalian semua bilangan = ', kali)
14 jumlah = jumlah + 0.5
15 print('Jika ditambah 0.5 hasilnya = ',jumlah)
16 kali = kali * 0.5
17 print('Jika dikali 0.5 hasilnya = ',kali)
Dari gambar 2.4 dapat diketahui bahwa input/output pada tipe data bilangan dengan hasil yang
berbeda tipe bilangannya yaitu tipe integer (bilangan bulat) atau float (bilangan berkoma).
# eval() digunakan untuk melakukan konversi expression dari string menjadi integer.
1 total_hrg_brg= 0.0
2 kd_brg=input("Kode barang = ")
3 nama_brg=input("Nama barang = ")
4 harga_satuan=eval(input("Harga satuan barang =Rp. "))
5 jum_brg=eval(input("Jumlah barang yang dibeli = "))
6 harga_beli = harga_satuan * jum_brg
7 total_hrg_brg= harga_beli + 123total_hrg_brg
8 print("Total harga yang dibayar Rp",total_hrg_brg)
1 x=30
2 print(x)
3 type(x)
4
5 y = 4*int(x)
6 print(y)
7
10 z = y+float(x)
11 print("z",z)
12
17 P=True
18 L=False
19
20 P!=L
21 print("Tanda != artinya tidak sama dengan")
22
23 P==L
24 print("Tanda == artinya sama dengan")
1 Kode='AB123'
2 NamaBarang='Kaca Mata'
3 HargaSatuan=125000
4 Stok=10
5 print('Kode barang %s \n Nama Barang= %s \n Harga Satuan=Rp %d \n Stok Barang=%d' %
6 (Kode,NamaBarang,HargaSatuan,Stok))
7
8 HargaBarang=float(HargaSatuan)
9 print('Harga Satuan Barang= Rp. %.3f' %(HargaBarang))
Hasil dari potongan kode program diatas dapat dilihat pada gambar 2.6
Gambar 2.6: Tampilan Contoh print Tipe Data String, Integer dan Float.
Latihan 2.2 Menghitung nilai fungsi f(x) = 2x**3 + 2x + 15/x , jika x merupakan bilangan
bulat sembarang.
Latihan 2.3 Budi tertarik untuk melamar pekerjaan pada liburan semester yang akan berlang-
sung selama 5 minggu. Gaji yang diberikan adalah gaji per jam. Total pajak yang harus budi
bayarkan dari penghasilannya selama bekerja adalah 14%. Setelah membayar pajak, budi
menghabiskan 10% dari pendapatan bersihnya untuk membeli baju dan aksesoris yang akan
digunakan pada semester baru, dan 1% untuk membeli alat tulis. Setelah membeli baju, ak-
sesoris dan alat tulis, Budi menggunakan 25% dari sisa uangnya untuk disedekahkan. Setiap
Rp.1000 yang Budi sedekahkan 30% nya akan diserahkan kepada anak yatim, dan sisanya akan
diserahkan ke kaum dhuafa.
4 Modular Programming . . . . . . . . . . . . . . . 47
4.1 Tujuan Praktikum
4.2 Alat dan Bahan
4.3 Materi
4.3.1 Fungsi, Argument dan Parameter
4.3.2 Return Value
4.3.3 Optional Argument dan Named Argument
4.3.4 Anonymous Function (Lambda)
4.4 Kegiatan Praktikum
4.4.1 Mendefinisikan Fungsi
4.4.2 Argument dan Parameter
4.4.3 Anonymous/Lambda Function
4.5 Latihan Mandiri
3.3 Materi
3.3.1 Boolean Expression dan Logical Operator
Perhatikan kasus berikut: Voucher diskon 30% dapat dipakai jika minimum pembelian anda
adalah Rp. 100.000. Minimum pembelian adalah syarat yang harus dipenuhi untuk mendapatkan
diskon. Minimum pembelian tersebut dapat dinyatakan dalam Python sebagai berikut:
pembelian >= 100000
Bentuk tersebut dinamakan sebagai boolean expression, karena hasilnya hanya ada dua kemung-
kinan, yaitu True atau False, tergantung dari variabel pembelian. Jika anda masukkan perintah
tersebut ke dalam Python mode interaktif, hasilnya dapat dilihat pada Gambar 3.1.
Boolean expression dapat disusun menggunakan operator-operator perbandingan seperti pada Tabel
3.1.
Anda harus bisa menyusun bentuk boolean expression dan memilih operator yang tepat sesuai
dengan permasalahan yang dihadapi. Beberapa hal yang perlu anda perhatikan saat menyusun
bentuk boolean expression:
• Bentuk boolean expression pasti hasilnya hanya ada dua, yaitu True atau False.
• Perhatikan kata-kata khusus seperti minimum, maksimum, tidak lebih dari, tidak kurang
dari, tidak sama, tidak berbeda.
• Perhatikan dengan seksama dan tentukan variabel yang perlu dibandingkan dengan benar
sesuai dengan permasalahan.
Beberapa contoh permasalahan dan bentuk boolean expression-nya dapat dilihat pada Tabel 3.2.
Beberapa boolean expression dapat digabungkan dengan menggunakan logical operator. Logical
operator pada Python adalah and, or dan not. Sebagai contoh, misalnya wahana Rollercoaster
Tabel 3.2: Operator-operator perbandingan (comparison).
Contoh masalah Boolean expression
Untuk lulus dibutuhkan IPK minimum 2.25 ipk >= 2.25
Golden Button hanya diberikan untuk Youtuber dengan subscriber > 1000000
subscriber lebih dari 1 juta
Pengendara dengan kecepatan lebih dari 90 km/jam akan kecepatan > 90
mendapatkan tilang
Wahana Rollercoaster hanya bisa dinaiki oleh mereka yang tinggi > 110
tinggi badannya lebih dari 110 cm
Nilai ujian Hanna adalah 75 sedangkan Robby mendapatkan hanna is robby
nilai 75. Apakah nilai keduanya sama?
Junaedi memiliki 10 sepatu, Ricky punya 15 sepatu dan junaedi + ricky > arnold
Arnold punya 20 sepatu. Apakah gabungan sepatu Junaedi
dan Ricky lebih banyak dari sepatu milik Arnold?
hanya dapat dinaiki oleh penumpang dengan usia minimal 10 tahun dan tinggi badan minimal 110
cm. Kedua persyaratan tersebut dapat dinyatakan dalam bentuk sebagai berikut:
usia >= 10 and tinggi >= 110
Diskon diberikan kepada member atau jumlah pembelian lebih dari Rp. 500.000:
member == true or pembelian > 500000
Bentuk chained conditional digunakan jika kemungkinan langkah yang harus dijalankan berikutnya
lebih dari dua. Bentuknya secara umum adalah sebagai berikut:
if <kondisi 1>:
<lakukan A1>
<lakukan A2>
...
elif <kondisi 2>
<lakukan B1>
<lakukan B2>
...
elif <kondisi 3>
<lakukan C1>
<lakukan C2>
...
...
else
<lakukan ...>
<lakukan ...>
...
Sebagai contoh, misalnya sebuah toko pakaian memberi diskon yang besarnya ditentukan oleh nilai
pembelian anda. Untuk pembelian di atas Rp. 1.000.000 mendapatkan diskon 30%. Pembelian
lebih dari Rp. 500.000 sampai Rp. 1.000.000 mendapatkan diskon 20%. Pembelian dari Rp.
100.000 sampai Rp. 500.000 mendapatkan diskon 15%. Pembelian di bawah Rp. 100.000 tidak
mendapatkan diskon. Kemungkinan diskon yang diberikan ada 4, yaitu: 30%, 20%, 15% dan 0%
(tidak diskon). Bagaimana implementasinya? Perhatikan implementasi berikut ini:
Pernyataan "Pembelian lebih dari Rp. 500.000 sampai Rp. 1.000.000 mendapatkan diskon 20%"
diimplementasikan dalam bentuk gabungan dari dua boolean expression, yaitu:
Bentuk ternary tersebut merupakan bentuk lain dari if-else berikut ini:
Jika program tersebut dijalankan beberapa kali dengan input yang berbeda-beda, hasilnya telah
sesuai dengan yang diharapkan. Hasil dari program tersebut dapat dilihat pada Gambar 3.2.
Bagian dari program tersebut yang meminta pengguna memasukkan usianya ada di baris 1, yaitu:
Seperti yang telah dipelajari pada Bab sebelumnya, fungsi input() digunakan untuk membaca
masukan/input yang diberikan oleh pengguna. Fungsi input() akan menghasilkan string, sedangkan
usia seharusnya merupakan angka/bilangan sehingga perlu dikonversi menjadi bilangan bulat de-
ngan fungsi int(). Program tersebut akan berjalan dengan baik selama pengguna tidak memasukkan
input yang salah atau tidak sesuai yang diharapkan. Sebagai contoh, perhatikan Gambar 3.3 yang
menunjukkan pengguna memasukkan input yang tidak sesuai.
Gambar 3.3: Jika input tidak sesuai yang diharapkan, program akan berhenti.
Bagaimana cara menangani input yang tidak sesuai? Salah satu cara yang dapat digunakan adalah
menggunakan try dan except. Penggunaannya dalam kasus kategori usia dapat dilihat pada source
code program berikut ini:
Jika dijalankan dan diberi input yang tidak sesuai, program tidak mengalami kesalahan seperti
sebelumnya. Hasilnya jika dijalankan dapat dilihat pada Gambar 3.4.
Hal pertama yang perlu anda pikirkan adalah apa input/masukan yang diperlukan untuk masalah
ini? Dari deskripsi masalah kita bisa menentukan bahwa dibutuhkan informasi besarnya suhu tubuh
untuk bisa menentukan apakah seseorang mengalami demam atau tidak. Masalah demam atau
tidak ini memiliki dua kemungkinan hasil, yaitu demam (suhu >= 38) dan tidak demam. Berarti
kriteria untuk demam sudah diketahui yaitu suhu >= 38. Bagaimana dengan kriteria untuk tidak
demam? Karena kemungkinan hasilnya cuma dua, maka kriteria tidak demam merupakan kebalikan
dari kriteria demam, yaitu suhu < 38. Cara lain untuk menyusun kriterianya adalah dengan cara
menuliskan nilai-nilai yang memenuhi, seperti berikut:
• Demam: 38, 39, 40, 41, ... (dan seterusnya). Dapat dinyatakan dalam bentuk suhu >= 38.
• Tidak demam: 37, 36, 35, ... (dan seterusnya). Dapat dinyatakan dalam bentuk suhu < 38.
Bisa juga dalam bentuk suhu <= 37.
Program untuk memecahkan masalah ini adalah sebagai berikut:
4 else:
5 print("Anda tidak demam")
Program tersebut jika dijalankan dan dicoba dengan beberapa input, hasilnya dapat dilihat pada
Gambar 3.6.
Jika anda perhatikan kemungkinan hasil yang harus ditangani, maka ada tiga kemungkinan:
positif, negatif dan nol. Kriteria untuk masing-masing kemungkinan tersebut adalah:
• Positif jika input bilangan > 0
• Negatif jika input bilangan < 0
Tabel 3.3: Contoh input dan output yang diharapkan.
Input Output yang diharapkan
28 Positif
-90 Negatif
2000 Positif
0 Nol
Jika program tersebut dijalankan dan diberikan beberapa input yang berbeda, hasilnya sudah sesuai
dengan yang diharapkan seperti yang dapat anda lihat pada Gambar 3.7.
Untuk menangani masalah ini, kita andaikan terlebih dahulu ketiga bilangan tersebut adalah a,
b dan c. Bilangan yang terbesar berarti ada tiga kemungkinan, yaitu bisa a, bisa b atau bisa c. Dari
mana kita tahu bahwa a adalah yang terbesar? Kriterianya adalah sebagai berikut:
• A adalah yang terbesar jika a > b dan a > c.
• B adalah yang terbesar jika b > a dan b > c.
• C adalah yang terbesar jika c > a dan c > b.
Setelah kita berhasil menentukan ketiga kriteria tersebut, maka kita dapat menyusun programnya
sebagai berikut:
1 # input a, b dan c
2 a = int(input("Masukkan bilangan pertama: "))
3 b = int(input("Masukkan bilangan kedua: "))
4 c = int(input("Masukkan bilangan ketiga: "))
5
Jika program tersebut dijalankan dan dimasukkan beberapa macam input yang berbeda, hasilnya
sudah sesuai dengan yang diharapkan. Anda dapat melihat hasilnya pada Gambar 3.8
Latihan 3.3 Buatlah sebuah program yang dapat menampilkan jumlah hari dalam suatu bulan di
tahun 2020. Program meminta pengguna memasukkan nomor bulan (1-12), kemudian program
akan menampilkan jumlah hari pada bulan tersebut. Sebagai contoh, perhatikan input dan output
berikut ini:
Masukkan bulan (1-12): 7
Jumlah hari: 31
Lengkapi program tersebut dengan penanganan kesalahan jika pengguna memasukkan bulan
yang salah. Penanganan kesalahan dalam bentuk memunculkan pesan bahwa bulan yang
diinputkan oleh pengguna tersebut tidak valid.
Latihan 3.4 Sebuah program meminta pengguna memasukkan ketiga panjang sisi suatu segitiga
(berarti pengguna memasukkan tiga bilangan). Jika ketiga sisi segitiga tersebut semuanya sama,
tampilkan pesan: "3 sisi sama". Jika hanya ada dua sisi yang sama panjang, tampilkan pesan "2
sisi sama". Jika tidak ada yang sama maka tampilkan pesan: "Tidak ada yang sama". Sebagai
contoh, perhatikan input dan output berikut ini:
Masukkan sisi 1: 14
Masukkan sisi 2: 18
Masukkan sisi 3: 11
Tidak ada yang sama
Masukkan sisi 1: 22
Masukkan sisi 2: 22
Masukkan sisi 3: 22
3 sisi sama
Masukkan sisi 1: 8
Masukkan sisi 2: 9
Masukkan sisi 3: 8
2 sisi sama
Lengkapi program tersebut dengan penanganan kesalahan jika pengguna memasukkan input
yang tidak valid.
4. Modular Programming
4.3 Materi
4.3.1 Fungsi, Argument dan Parameter
Anda tentunya sudah mengerti tentang apa yang dilakukan oleh kode program berikut ini:
Fungsi tambah tersebut terdiri dari beberapa hal yang perlu diperhatikan:
• Keyword def digunakan untuk mendefinisikan sebuah fungsi.
• Nama fungsi yang dibuat adalah tambah().
• Isi dari fungsi harus anda tuliskan menjorok ke dalam 1 tab. Perhatikan bagian tambah(a,b):
sebagai penanda blok.
• Fungsi tambah() membutuhkan dua argument, yang nantinya akan dikenali sebagai parameter
a dan b.
• Fungsi tersebut akan menghasilkan hasil penjumlahan yang dapat ditampung di sebuah
variabel. Keyword return digunakan untuk mengembalikan/mengeluarkan nilai dari suatu
fungsi.
Penggunaan fungsi tersebut dapat dilihat pada kode program berikut ini:
Fungsi dapat dipanggil jika sudah didefinisikan sebelumnya. Jika anda memanggil fungsi yang
belum didefinisikan, atau jika fungsi tersebut didefinisikan di bawah, program anda akan mengalami
kesalahan. Contoh pemanggilan fungsi sebelum fungsi didefinisikan dapat dilihat pada Gambar 4.2.
print_twice("Hello World!")
Fungsi print_twice() membutuhkan 1 parameter yaitu message. Kemudian fungsi print_twice() akan
menampilkan nilai dari variabel message sebanyak 2 kali. Fungsi print_twice() tidak menghasilkan
suatu nilai yang dapat digunakan untuk proses berikutnya. Fungsi print_twice() sebenarnya
mengembalikan nilai None jika anda coba panggil dengan cara berikut:
def print_twice(message):
print(message)
print(message)
print(print_twice("Hello World!"))
Output yang dihasilkan adalah:
Hello World!
Hello World!
None
Berbeda halnya dengan fungsi tambah() berikut ini:
def tambah(a, b, c):
hasil = a + b + c
return hasil
Fungsi tambah() membutuhkan 3 parameter yaitu a, b dan c. Kemudian di dalam fungsi tambah()
didefinisikan suatu variabel hasil yang diisi oleh a+b+c. Kemudian variabel hasil tersebut dike-
luarkan dari fungsi sebagai hasil dari fungsi tambah() dengan keyword return. Keyword return
digunakan untuk:
• Mengeluarkan nilai yang merupakan hasil dari fungsi.
• Mengakhiri fungsi.
Fungsi tambah() tersebut bisa digunakan untuk mencari hasil penjumlahan tiga bilangan. Hasil
dari penjumlahan tiga bilangan tersebut dapat digunakan untuk proses/langkah berikutnya, seperti
contoh program untuk mencari rata-rata dari tiga bilangan berikut ini:
5 nilai1 = 70
6 nilai2 = 85
7 nilai3 = 55
8
Fungsi hitung_belanja() memiliki dua parameter yaitu belanja dan diskon. Parameter diskon
secara default memiliki nilai 0 (yang artinya 0%). Untuk memanggil fungsi hitung_belanja()
tersebut, anda dapat melakukan dengan beberapa cara seperti berikut ini:
print(hitung_belanja(100000))
print(hitung_belanja(100000, 10))
print(hitung_belanja(100000, 50))
100000.0
90000.0
50000.0
Pemanggilan pertama hanya menggunakan satu argument, sedangkan pemanggilan kedua dan
ketiga menggunakan dua argument.
Setiap parameter pada fungsi memiliki nama. Karena itu pada pemanggilan fungsi juga dapat
disertakan nama parameternya dan tidak perlu sesuai dengan urutan yang diberikan. Perhatikan
contoh berikut ini:
def cetak(a, b, c):
print("Nilai a: ",a)
print("Nilai b: ",b)
print("Nilai c: ",c)
Nilai a: 20
Nilai b: 30
Nilai c: 40
Anda juga dapat memanggil fungsi cetak() tersebut dengan cara berikut ini:
Pemanggilan fungsi cetak() dilakukan dengan menyebutkan nama argumentnya (named argument).
Jika anda menggunakan cara tersebut, maka urutan argument tidak harus sama dengan urutan
parameter pada fungsi, seperti pada contoh berikut ini:
print(tambah(10,20))
tambah = lambda a, b: a + b
print(tambah(10,20))
Setiap anonymous function pada Python terdiri dari beberapa bagian berikut ini:
• Keyword: lambda
• Bound variable: argument pada lambda function
• Body: bagian utama lambda, berisi ekspresi atau statement yang menghasilkan suatu nilai.
Ada beberapa hal yang perlu diperhatikan sebelum anda mendefinisikan fungsi untuk menghi-
tung tagihan listrik tersebut:
• Fungsi membutuhkan dua parameter, yaitu jumlah pemakaian dan golongan tarif.
• Jumlah pemakaian menggunakan tarif yang berbeda untuk 100 kwh pertama, dan setelah
100 kwh.
• Golongan tarif memiliki nilai default = 3, sehingga harus didefinisikan sebagai optional
argument.
Fungsi untuk menghitung tagihan listrik dan contoh penggunaannya dapat dilihat pada kode
program berikut ini:
15 print(tagihan_listrik(130))
16 print(tagihan_listrik(80, 4))
17 print(tagihan_listrik(golongan=1, pemakaian=175))
# Pada kode program tersebut ada beberapa konsep yang diterapkan: optional argument, named
argument dan ternary operator.
nilai1 = 20
nilai2 = 30
nilai3 = 40
abc(nilai1, nilai2, nilai3)
print(nilai1)
print(nilai2)
print(nilai3)
Pengiriman parameter pada Python menggunakan prinsip yang disebut sebagai Call-by-Object.
Perlakuan terhadap parameter tergantung dari apakah argument yang diberikan immutable atau
tidak. Jika argument yang dikirimkan bersifat immutable artinya argument tersebut tidak bisa
diubah oleh fungsi. Tipe data seperti integer, string dan tuple bersifat immutable.
Pada fungsi abc() dikirimkan 3 argument integer, yaitu nilai1, nilai2 dan nilai3. Karena itu dapat
dikatakan argument yang dikirimkan akan bersifat immutable, sehingga tidak akan terpengaruh
nilainya oleh perubahan nilai parameter dalam fungsi abc(). Output yang dihasilkan saat program
tersebut dijalankan adalah sebagai berikut:
20
30
40
Setiap lambda function pada Python terdiri dari beberapa bagian. Dalam kasus ini, bagian-
bagian tersebut adalah:
• Keyword: lambda
• Bound variable: angka
• Body: pengecekan apakah habis dibagi 9 atau tidak (kelipatan 9)
Sehingga bentuk lambda function-nya adalah sebagai berikut:
print(kelipatan_sembilan(81))
print(kelipatan_sembilan(2000))
Latihan 4.2 Buatlah sebuah fungsi yang dapat menentukan apakah minimal dua dari tiga
parameter yang diberikan memiliki digit paling kanan yang sama. Fungsi tersebut menghasilkan
nilai True jika memenuhi dan False jika tidak memenuhi. Gunakan fungsi tersebut untuk
mengecek beberapa test-case berikut ini:
• Input = 30, 20, 18. Output yang diharapkan = True
• Input = 145, 5, 100. Output yang diharapkan = True
• Input = 71, 187, 18. Output yang diharapkan = False
• Input = 1024, 14, 94. Output yang diharapkan = True
• Input = 53, 8900, 658. Output yang diharapkan = False
Ketiga bilangan tersebut diinputkan oleh pengguna, sehingga anda perlu membaca input dari
pengguna. Fungsi anda harus diberi nama cek_digit_belakang().
Latihan 4.3 Buatlah fungsi-fungsi konversi suhu menggunakan lambda function. Fungsi-fungsi
yang harus anda implementasikan:
• Celcius to Fahrenheit. F = (9/5) ∗C + 32
• Celcius to Reamur. R = 0.8 ∗C
Berikan contoh penggunaannya untuk test-case berikut ini:
• Input C = 100. Output F = 212.
• Input C = 80. Output R = 64.
• Input = 0. Output F = 32.
5. Struktur Kontrol Perulangan
5.3 Materi
5.3.1 Statement Kontrol Perulangan
Sebuah komputer akan sangat sering melakukan proses repetisi. Proses repitisi yaitu proses
yang akan dilakukan berulang-ulang. Proses perulangan ini akan sangat sering anda temui dalam
pembuatan sebuah program. Karena akan sering digunakan, bahasa python memiliki beberapa
bentuk statement kontrol perulangan, yaitu:
• Kontrol perulangan dengan While. Kontrol perulangan ini digunakan jika banyaknya peru-
langan belum diketahui secara pasti. Bentuk statement kontrol perulangan dengan While:
while <kondisi>:
<lakukan ini>
<lakukan itu>
...
Proses perulangan akan dijalankan selama kondisi bernilai benar. Perhatikan program berikut
beserta luaranya yang ditampilkan pada Gambar 5.1
1 nilai = 0
2 while nilai<=5:
3 print(nilai)
4 nilai=nilai+1
• Kontrol perulangan dengan For. Perulangan ini digunakan jika banyaknya perulangan sudah
diketahui secara pasti. Bentuk statement kontrol perulangan dengan For:
for <variabel> in <rentang yang diharapkan>:
<lakukan ini>
<lakukan itu>
...
Statement kontrol perulangan dengan For sama seperti sebuah pencacah atau counter. Se-
hingga rentang nilai yang diharapkan pada perulangan harus memiliki nilai awal cacahan,
nilai akhir cacahan, dan interval cacahan. Kontrol perulangan For memiliki beberapa type:
– (a). Perulangan pada sebuah List. Perulangan dengan menggunakan rentang pada
sebuah variabel dengan tipe data List akan mencacah setiap element pada variabel
tersebut.
buah = ['apel','mangga','pisang']
for x in buah:
print("Saya punya buah %s" % x)
Pada contoh di atas, perulangan akan dilakukan sebanyak 3 kali dengan setiap peru-
langan nilai variabel x akan terisi setiap element dari variabel list buah.
– (b). Perulangan pada sebuah String. Variabel dengan tipe data String dapat digunakan
untuk pencacahan atau proses iterasi, karena variabel ini terdiri dari urutan karakter.
Sehingga proses perulangan dilakukan dengan mencacah setiap elemen karakter pada
string tersebut.
nama = "Kuncoro"
print("Nama saya tersusun dari ",end='')
for karakter in nama:
print("%s+" % karakter,end='')
Pada contoh di atas, perulangan akan dilakukan sebanyak cacahan karakter yang ada
dalam variabel nama, dimana setiap kali proses perulangan dilakukan variabel karakter
akan berisi 1 karakter/ element dari string nama.
– (c). Perulangan dengan fungsi range() Fungsi range() digunakan untuk membuat
deretan angka sekuensial yang dimulai dari 0 (secara default), kenaikan nilai +1 (secara
default), dan berakhir pada angka tertentu. Penggunaan fungsi range():
Ketiklah program di bawah ini untuk mengetahui perbedaan setiap penggunaan fungsi
range.
for x in range(5):
print("%d "%x,end='')
for x in range(3,5):
print("%d "%x,end='')
for x in range(3,10,2):
print("%d "%x,end='')
memiliki kelemahan dalam menghitung cepat harga sejumlah donat kentang yang harus dibayar
oleh pembeli. Oleh karena itu, ia membutuhkan sebuah program yang dapat membuatkan daftar
harga donat kentang mulai dari 1 donat hingga N buah donat. Anda merupakan teman yang sangat
pintar bagi si Kentung, mari bantu Kentung untuk membuatkan program tersebut.
Hal yang harus anda pikirkan pertama ialah masukan apa yang harus anda dapatkan sebelum
memulai proses. Masukan yang harus ada ialah 1) Hingga harga berapa buah donat yang harus
dihitung, 2) Harga donat per buah. Langkah selanjutnya, anda harus dapat melihat apakah dari
proses perhitungan tersebut memiliki pola yang dapat diulang. Dari masalah ini dapat kita lihat
bahwa proses perkalian jumlah donat dengan harga per donat dapat dilakukan secara berulang,
hanya dengan mengganti nilai jumlah donat yang ada yang akan dicacah mulai dari 1 hingga N.
Lalu total harga setiap nilai jumlah donat ditampilkan.
Hasil program yang telah anda buat seperti pada Gambar 5.3.
Contoh 5.2 Jumlah dan Rerata Deret Bilangan. Tina anak SMA rintisan UKDW sedang belajar
deret angka. Dalam proses belajarnya, Tina berpikir untuk membuat program yang dapat menjum-
lahkan seluruh bilangan dalam sebuah deret dimulai dari 1 hingga bilangan ke N. Hasil program
yang dibuat Tina sebagai berikut:
Gambar 5.3: Hasil luaran program daftar harga donat kentang
Dalam kasus ini, pembuatan sebuah deret angka dapat menggunakan statement kontrol perulangan.
Pada dasarnya ialah program akan mencacah bilangan dari 1 hingga bilangan ke N. Pada setiap
proses cacahan, nilai bilangan akan selalu dijumlahkan. Hasil jumlahan total akan dibagi dengan N
untuk mendapatkan reratanya.
Hasil luaran dari program yang dibuat Tina seperti pada Gambar 5.4.
Gambar 5.4: Hasil luaran program jumlah dan rerata deret bilangan
Contoh 5.3 Tanya Terus. Pada hari ini anda sedang belajar perulangan. Anda diminta untuk
membuat sebuah program dimana program tersebut dapat menghitung berapa kali perulangan telah
dilakukan berdasarkan keinginan pengguna. Masukan ’ya’ pada program akan membuat proses
perulangan terus dilakukan, tetapi jika masukan ’tidak’ maka perulangan akan dihentikan, dan
program akan menampilkan banyaknya perulangan yang telah dilakukan.
1 jawab = 'ya'
2 hitung = 0
3
4 while(jawab == 'ya'):
5 hitung += 1
6 print("Proses %d"%hitung)
7 jawab = input("Ulang lagi tidak? ")
8
Hasil luaran dari program yang anda buat seperti pada Gambar 5.5.
Latihan 5.2 Buatlah sebuah program yang dapat menentukan bilangan terbesar dan terkecil dari
nilai bilangan yang dimasukkan oleh pengguna. Pengguna hanya memasukkan 1 nilai bilangan
di setiap proses perulangan. Program akan menghentikan perulangan jika user memasukkan
"stop". Di akhir proses, program akan menampilkan bilang terbesar dan terkecil dari beberapa
masukan pengguna. Tips: Modifikasilah potongan program pada Contoh 5.3
6.3 Materi
6.3.1 Struktur Percabangan Kompleks
Percabangan di mana kondisi pemilihan tidak hanya satu tetapi bisa terdiri atas banyak alternatif.
Perintah-perintah yang dikerjakan juga bisa lebih dari satu. Percabangan kompleks bentuk 1:
1 if kondisi1:
2 if kondisi2:
3 S
4 S
5 else:
6 S
7 S
1 if kondisi1:
2 if kondisi2:
3 S
4 S
5 else:
6 S
7 S
8 else:
9 S
10 S
1 if kondisi1:
2 S
3 if kondisi2:
4 S
5 S
6 else:
7 if kondisi3:
Gambar 6.2: Flowchart Percabangan Kompleks Bentuk 2
8 S
9 S
10 else:
11 S
12 S
1 if kondisi1:
2 S
3 if kondisi2:
4 S
5 S
6 else:
7 S
8 S
9 else:
10 if kondisi3:
11 S
12 S
13 else:
14 S
15 S
16 S
1 if kondisi1:
2 if kondisi2:
Gambar 6.3: Flowchart Percabangan Kompleks Bentuk 3
3 if kondisi3:
4 if kondisi4:
5 S
1 if kondisi1:
2 S
3 else:
4 if kondisi2:
5 S
6 else:
7 if kondisi3:
8 S
9 else:
10 if kondisi4:
11 S
12 else:
13 S
pada IF biasa semua kondisi IF pasti akan dicoba satu per satu walaupun mungkin pada akhirnya
hanya satu saja perintah IF yang terpenuhi. Hal ini tentu memperlambat proses. Contoh kasus
yang cocok untuk IF bertingkat adalah kasus konversi nilai angka menjadi nilai huruf dengan
Gambar 6.6: Flowchart Percabangan Kompleks Bentuk 6
1 if (kondisi1):
2 instruksi1
3 elif(kondisi2):
4 instruksi2
5 elif(kondisi3):
6 instruksi3
7 elif(kondisi4):
8 instruksi4
Bedakan dengan:
1 if (kondisi1):
2 instruksi1
3 if(kondisi2):
4 instruksi2
5 if(kondisi3):
6 instruksi3
7 if(kondisi4):
8 instruksi4
6.3.2 Struktur Perulangan Kompleks
Break
Perintah ini digunakan untuk menghentikan proses perulangan yang sedang terjadi. Biasanya
disebabkan oleh suatu kondisi tertentu yang diimple-mentasikan menggunakan perintah IF.
1 for i in range(1000):
2 print(i)
3 if i==10:
4 break
Output:
0
1
2
3
4
5
6
7
8
9
10
Program di atas akan menampilkan angka 1 sampai dengan 10 walaupun di perulangan sudah diset
dari 1 sampai dengan 1000. Hal ini karena perintah break yang diberikan pada saat kondisi i=10.
Angka 10 masih ditampilkan karena perintah untuk mencetak diletakkan sebelum perintah break.
Gambar break dari kode program demo break ada pada 6.7:
Contoh program break lain:
1 for i in range(1000):
2 if i==10:
3 break
4 print(i)
Output:
0
1
2
3
4
5
6
7
8
9
Program di atas akan menampilkan angka 1 sampai dengan 9 walaupun di perulangan sudah diset
dari 1 sampai dengan 1000. Hal ini karena perintah break yang diberikan pada saat kondisi i=10.
Angka 10 tidak ditampilkan karena perintah untuk mencetak diletakkan sesudah perintah break.
Gambar break dari kode program demo break ada pada 6.8:
Gambar 6.7: Flowchart Program Menggunakan Break
Continue
Perintah continue menyebabkan proses perulangan kembali ke awal mula, dengan mengabaikan
statement-statement berikutnya setelah continue. Biasanya perintah continue juga diimplementasik-
an menggunakan perintah IF.
Contoh program continue:
1 for i in range(10):
2 if i==5:
3 continue
4 print(i)
Output:
0
1
2
3
4
6
7
8
9
Program di atas tidak menampilkan angka 5 karena pada saat angka 5 akan ditampilkan, perintah
Gambar 6.8: Flowchart Program Menggunakan Break 2
continue dijalankan, sehingga perintah mencetak di bagian bawahnya tidak akan dikerjakan dan
langsung dilanjutkan ke perulangan berikutnya!
Gambar break dari kode program demo continue ada pada 6.9:
Perulangan Bertingkat
Yang dimaksud dengan struktur perulangan kompleks adalah bentuk per-ulangan di mana di
dalam suatu perulangan terdapat perulangan lain, sehingga terjadi perulangan bertingkat yang
mengakibatkan waktu proses semakin lama. Ada banyak algoritma tertentu yang tepat untuk
meng-gunakan struktur perulangan kompleks. Masalah yang dapat diselesaikan dengan perulangan
kompleks adalah masalah matriks yang menggunakan array 2 dimensi, masalah game board
seperti catur dan minesweeper, ataupun masalah pengolahan citra digital seperti algoritma untuk
mendeteksi tepi citra, algoritma untuk mengubah citra berwarna menjadi grayscale, atau berbagai
hal lain. Intinya, masalah yang dapat diselesaikan menggunakan perulangan kompleks biasanya
memiliki pola grid (kotak-kotak) yang memiliki lebar dan panjang. Berikut ini adalah sebuah
contoh perulangan kompleks:
Program 1:
1 for i in range(m):
2 <lakukan perintah ini>
3 <lakukan perintah itu>
Program 2:
1 for j in range(n):
Gambar 6.9: Flowchart Program Menggunakan Continue
1 for i in range(m):
2 for j in range(n):
3 <lakukan perintah ini di inner>
4 <lakukan perintah itu di inner>
5 <lakukan perintah lain di outer>
6 <lakukan perintah lain lagi di outer>
Bagian for i menjadi outer loop, sedangkan bagian for j menjadi inner loop. Alur pengerjaannya
adalah sebagai berikut: untuk setiap 1x s/d m outer loop dijalankan akan dikerjakan n kali inner
loop.
Untuk sintaks dalam bentuk sama saja. Perhatikan contoh berikut:
1 while(i<=m):
2 while(j<=n):
3 <lakukan perintah ini di inner>
4 <lakukan perintah itu di inner>
5 <lakukan perintah lain di outer>
6 <lakukan perintah lain lagi di outer>
Bagian while i menjadi outer loop, sedangkan bagian while j menjadi inner loop. Alur pengerja-
annya adalah sebagai berikut: untuk setiap 1x s/d m outer loop dijalankan akan dikerjakan n kali
inner loop.
n=5
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
Pembahasan: Untuk dapat membuat program seperti di atas logika adalah sebagai berikut:
• Karena n = misalnya 5 maka n digunakan sebagai jumlah baris, yang dalam perulangan
nested adalah outer loop, i=1 s/d n.
• Untuk inner loop kita perhatikan bahwa untuk baris i=1 maka dilakukan perulangan ke kanan
1x (atau sama dengan i x)
• Untuk setiap loop pada inner, dilakukan j=1 s/d i, dan tampilkan i nya. Untuk inner loop
jangan dilakukan enter, sehingga harus diperhatikan end=” pada printnya.
• Lakukan hal tersebut sampai selesai. Untuk setiap akhir j, lakukan enter (ganti baris)
Kode program dapat dibuat sebagai berikut:
1 n=int(input("Masukkan n = "))
2 for i in range(1,n+1):
3 for j in range(1,i+1):
4 print(i," ",end='')
5 print()
Contoh 6.2 Anda diminta untuk membuat suatu deret dengan tampilan sebagai berikut:
n=5
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
Pembahasan: Untuk dapat membuat program seperti di atas logika adalah sebagai berikut:
• Karena n = misalnya 5, maka n akan menjadi outer loop (baris). i=1 s/d n.
• Untuk inner loop kita juga akan melakukan perulangan smp dengan n atau turun dari n s/d 1,
tergantung barisnya genap atau ganjil. Jika ganjil inner loop bergerak naik, jika genap maka
inner loop bergerak turun, j=n s/d 0, step -1.
• Untuk setiap loop pada inner, setelah habis maka lakukan enter / ganti baris dari outer loop.
Kode program dapat dibuat sebagai berikut:
1 n=int(input("Masukkan n = "))
2 for i in range(1,n+1):
3 if i%2==1:
4 for j in range(1,n+1):
5 print(j," ",end='')
6 else:
7 for j in range(n,0,-1):
8 print(j," ",end='')
9 print()
Contoh 6.3 Anda diminta untuk membuat suatu deret dengan tampilan sebagai berikut:
n=6
X O X O X O
X O X O X
X O X O
X O X
X O
X
Pembahasan: Untuk dapat membuat program seperti di atas logika adalah sebagai berikut:
• Karena n = misalnya 6, maka n akan menjadi outer loop (baris). i=0 s/d n.
• Untuk inner loop kita juga akan melakukan perulangan dari 1 smp dengan n-i. Untuk setiap j
ganjil maka tampilkan ’X’, sedangkan jika genap maka tampilkan ’O’.
• Untuk setiap loop pada inner, setelah habis maka lakukan enter / ganti baris dari outer loop.
Kode program dapat dibuat sebagai berikut:
1 n=int(input("Masukkan n = "))
2 for i in range(0,n+1):
3 for j in range(1,n-i+1):
4 print("X",end='') if j\%2==1 else print("O",end='')
5 print()
Contoh 6.4 Anda diminta untuk membuat suatu deret dengan tampilan pada gambar 6.10.
Pembahasan: Untuk dapat membuat kode program seperti di atas, maka logikanya adalah
sebagai berikut:
• Karena n = misalnya 10, maka n akan menjadi outer loop (baris). i=n turun smp dengan 1.
• Untuk inner loop kita harus menuliskan terlebih dahulu spasi kosong sebanyak n-i-1. Setelah
itu digabungkan dengan menampilkan bintang (*) sebanyak sisanya (1 s/d n-i-1)
• Untuk setiap loop pada inner, setelah habis maka lakukan enter / ganti baris dari outer loop.
Kode program dapat dibuat sebagai berikut:
1 hasil = ""
2
5 # Looping Baris
6 while bar >= 0:
7
23 print (hasil)
Latihan 6.2 Buatlah program untuk menampilkan deret seperti di bawah ini. n diinputkan
secara dinamis
contoh: n = 6
720 6 5 4 3 2 1
120 5 4 3 2 1
24 4 3 2 1
6 3 2 1
2 2 1
1 1
Latihan 6.3 Buatlah program untuk menampilkan deret seperti di bawah ini. n diinputkan
secara dinamis
III
String dan File
7 Pengolahan String . . . . . . . . . . . . . . . . . . . 81
7.1 Tujuan Praktikum
7.2 Alat dan Bahan
7.3 Materi
7.3.1 Pengantar String
7.3.2 Pengaksesan String dan Manipulasi String
7.3.3 Operator dan Metode String
7.3.4 Parsing String
7.4 Kegiatan Praktikum
7.4.1 Pembahasan Soal 1
7.4.2 Pembahasan Soal 2
7.4.3 Pembahasan Soal 3
7.4.4 Pembahasan Soal 4
7.5 Latihan Mandiri
7.3 Materi
7.3.1 Pengantar String
String adalah untaian karakter-karakter yang menjadi satu kesatuan dan digunakan dalam
program komputer untuk menyimpan kalimat, baik panjang ataupun pendek. String adalah suatu
jenis data yang mampu menyimpan huruf / karakter dan disimpan dalam kode ASCII. Tidak semua
bahasa pemrograman memiliki tipe data String, seperti misalnya bahasa C. Tipe data ini merupakan
jenis tipe data yang bukan tipe data dasar, karena tipe data ini pada dasarnya menyimpan lebih dari
satu nilai tunggal sebagai satu kesatuan. Beberapa bahasa pemrograman ada yang menyebutkan
bahwa String pada dasarnya adalah kumpulan tipe data karakter / array of character / list of
character.
6 print(temansaya3)
7 print(namasaya[0]) #'A'
8 print(namasaya[9]) #'R'
9 print(temansaya1[1]) #'u'
10
11 huruf = temansaya2[0]
12 print(huruf) #'L'
Jadi string pertama kali dibuat dengan deklarasi variabel dan langsung diisi dengan data, string
dapat diakses sebagai satu kesatuan dengan menyebut nama variabelnya, atau per huruf dengan
menyebutkan indeksnya. Indeks pada string dimulai dari 0 seperti layaknya pada list. Indeks string
haruslah berupa bilangan bulat, bukan pecahan.
Pada memory komputer, string disimpan secara urut menggunakan list yang berisi huruf-huruf
dengan indeks yang dimulai dari nol. Gambar 7.1 menunjukkan string berisi "banana" yang
disimpan pada memory komputer.
6 if "dua" == "dua":
7 print("Sama") #Sama
FUNGSI len
Cara untuk mengetahui berapa panjang (berapa jumlah karakter) dari sebuah string adalah
dengan menggunakan operator len(<string>) Untuk menampilkan huruf terakhir dari sebuah string
kita harus menggunakan indeks string yang ke- len(<string>-1), sebab indeks dimulai dari 0.
Contoh program Python adalah:
4 terakhir = kalimat[len(kalimat)-1]
5 print(terakhir) #output 'a'
6
TRAVERSING STRING
Untuk dapat menampilkan string dengan cara ditampilkan huruf demi huruf adalah dengan
menggunakan loop yang dilakukan per huruf dengan 2 cara:
• Dilakukan dengan akses terhadap indeks
# String merupakan data yang bersifat immutable! Immutable adalah bahwa data tersebut tidak
bisa diubah saat program berjalan, hanya bisa diinisialisasi saja. Contoh:
1 kalimat = "satu"
2 kalimat[0] = "batu" #TypeError: 'str' object does not support item assignment
Agar bisa diubah, maka harus disimpan dalam variabel yang berbeda.
1 kalimat = "satu"
2 kalimat_baru = kalimat[0] + "alah" #salah
Dan masih banyak lainnya. Ingat semua fungsi/method di atas yang mengembalikan string,
mengembalikan string baru, tidak mengubah yang aslinya, karena string bersifat immutable. Daftar
lengkap dapat dilihat di https://docs.python.org/library/stdtypes.html#string-methods
Operator * dan + pada String
Pada Python operator + dan * memiliki kemampuan khusus. Operator + yang biasanya
digunakan untuk menjumlahkan bilangan bisa digunakan untuk menggabungkan dua buah string.
Sedangkan operator * yang bisa digunakan untuk mengkalikan bilangan bisa digunakan untuk
menampilkan string sejumlah perkaliannya. Perhatikan kode berikut:
1 kata1 = "saya"
2 kata2 = "makan"
3 kata3 = kata1 + " " + kata2
4 print(kata3) #hasil adalah penggabungan: saya makan
5 kata4 = "ulang"
6 print(kata4 * 4) #hasil adalah ulangulangulangulang
7 kata4 = "ulang "
8 print(kata4 * 2) #hasil adalah ulang ulang
1 a_string = "AnTonIus"
2 lowercase = a_string.lower()
3 total = 0
4 for x in "aiueo":
5 jml = lowercase.count(x)
6 total += jml
7 print(total) #hasil = 4
1 tgl = "2020-12-01"
2 hasil = tgl.split("-")
3 tgl2 = hasil[2]+"-"+hasil[1]+"-"+hasil[0]
4 print(tgl2)
4 satu = ''.join([i for i in satu if i.isalpha()]) #buang semua yang bukan alfabet
5
6 dua = satu[::-1]
7 if dua == satu:
8 print("palindrom")
9 else:
10 print("bukan")
7.4.4 Pembahasan Soal 4
Untuk mengambil beberapa kata dari kalimat, digunakan logika sebagai berikut:
• Ubah kalimat menjadi huruf kecil semua (lowercase)
• Pecah (split), kalimat dipisah berdasarkan spasi
• Untuk setiap kata yang sudah dipisah tersebut, maka ambil indeks kata per n buah, misal 1
buah jika n=1, 2 jika n=2. Indeks yang diambil adalah dimulai dari 0, jika n=2 maka ambil 0
dan 1, lalu ambil 1 dan 2, 2 dan 3, 3 dan 4, dst...dilakukan dalam perulangan.
1 #Kalimat
2 text = 'A quick brown fox jumps over the lazy dog.'
3
14 print(ambil_kata_kalimat(text, 2))
Hasil
Latihan 7.2 Buatlah suatu program yang dapat menghitung frekuensi kemunculan suatu kata
yang ada pada String. Misal terdapat kalimat "Saya mau makan. Makan itu wajib. Mau siang
atau malam saya wajib makan". Ditanyakan kata "makan". Output: makan ada 3 buah
Latihan 7.3 Buatlah suatu program yang dapat menghapus semua spasi yang berlebih pada
sebuah string, dan menjadikannya satu spasi normal! Misal: "saya tidak suka memancing ikan "
Output: "saya tidak suka memancing ikan"
Latihan 7.4 Buatlah suatu program mengetahui kata terpendek dan terpanjang dari suatu
kalimat yang diinputkan! Misal: "red snakes and a black frog in the pool" Output: terpendek: a,
terpanjang: snakes
8. Membaca dan Menulis File
8.3 Materi
8.3.1 Pengantar File
Program yang berjalan membutuhkan memory primer di dalam komputer. Semua data yang
ada di program tersebut disimpan di dalam memory dan ketika program selesai dijalankan dan
dimatikan, maka semua data di dalam program tersebut juga ikut hilang. Penyimpanan data di dalam
memory bersifat tidak permanen (volatile). Karena sifat tersebut, program yang menggunakan
memory primwer tidak akan dapat menyimpan data setelah program dimatikan.
Untuk bisa menyimpan data pada program harus digunakan penyimpanan tetap yaitu secondary
memory. Secondary memory dapat dilihat pada gambar 8.1
File disimpan pada secondary memory sehingga file dapat digunakan untuk menyimpan data
dari program dan tidak akan hilang walaupun komputer dimatikan. File pada dasarnya adalah bit-bit
data yang disimpan di dalam secondary memory secara permanen, berupa kumpulan informasi
yang saling berelasi satu sama lain sebagai satu kesatuan. File bisa berupa file system, file program
(binary), file multimedia, file teks, dan lain sebagainya. File memiliki property seperti nama file,
ukuran, letak di harddisk, owner, hak akses, tanggal akses, dan lain-lain. Contoh property sebuah
file dapat dilihat dari gambar 8.2
1 handle = open('mbox-short.txt')
2 print(handle)
Hasil adalah:
Pada file teks, biasanya file akan terdiri dari baris demi baris string. Cara pembacaan file teks
biasanya juga menggunakan model baca baris demi baris untuk setiap string yang ditemukan sampai
dengan EOF (End of File)
Contoh tampilan baris-baris dari sebuah file teks mbox-short.txt adalah pada gambar 8.4
1 handle = open('mbox-short.txt')
2 count = 0
3 for line in handle:
4 count = count + 1
5 print('Line Count:', count)
# Mengapa harus dibaca baris-perbaris? Untuk mengatasi kemungkinan sistem membuka file
yang besar sekali dalam satu waktu dan akhirnya hang / crash karena ukuran file yang sangat
besar.
Cara menampilkan ukuran file teks dalam bytes, dapat digunakan fungsi len dari string yang
ada pada file.
1 handle = open('mbox-short.txt')
2 hasil = handle.read()
3 print("Ukuran: " + len(hasil) + "bytes")
4 print("Huruf dari belakang sendiri mundur 16 huruf adalah: " + hasil[-16::1])
Program di atas akan membuka file mbox-short.txt, menampilkan ukuran berapa banyak huruf
yang ada pada file tersebut (catatan: kalau dianggap 1 karakter = 1 byte, maka bisa disebut juga
ukuran berapa banyak karakter = ukuran file tersebut dalam byte), dan terakhir menampilkan string
dari huruf paling belakang maju 16 huruf kedepan.
# Hati-hati! Perintah read() pada file sangat boros memory, sehingga jika ukuran file begitu
besar maka lebih baik tidak menggunakan read(), melainkan menggunakan teknik loop seperti
pada contoh di atas sebelumnya.
Selama dilakukan looping kita juga dapat melakukan manipulasi terhadap file tersebut, seperti
misalnya menangkap / menampilkan bagian dari string. Seperti pada contoh file mbox, saat
looping kita dapat menampilkan hanya kalimat yang diawali dengan "tanggal" saja, yaitu "Date :".
Perhatikan contoh program berikut:
1 handle = open('mbox-short.txt')
2 count = 1
3 for line in handle:
4 if line.startswith("Date:") and count <= 10:
5 count += 1
6 print(line)
1 handle = open('output.txt','w')
2 tulisan = "teks ini akan dituliskan ke file\n"
3 handle.write(tulisan)
4 handle.close()
Pembahasan Soal 1
Untuk dapat menerima input nama file digunakan perintah input, kemudian masukkan nama
file. File tersebut sebaiknya berada dalam satu folder yang sama agar mudah. Untuk menampilkan
baris-baris file yang mengandung string URL web yang mengandung domain berakhiran: ’*.ac.uk’
digunakan perintah find(). Untuk menampilkan jumlah baris digunakan counter untuk setiap baris
yang ditemukan. Berikut adalah kode programnya.
Latihan 8.2 Buatlah sebuah program untuk menampilkan soal sederhana yang diambil dari file
teks soal.txt yang memiliki format sebagai berikut:
1+1 = || 2
Bendera Indonesia? || Merah Putih
Kota gudeg adalah: || Yogyakarta
Komponen PC untuk penyimpanan file adalah... || harddisk
50 * 20 = || 1000
IV
Tipe Data Collection
9.3 Materi
9.3.1 Sifat-sifat List
List pada Python adalah rangkaian nilai-nilai yang dapat diakses menggunakan satu nama
tunggal. Apa bedanya dengan String? String adalah rangkaian dari karakter-karakter, sedangkan
list dapat berisi karakter, integer, float maupun tipe data lainnya. List juga bisa berisi list lainnya.
Rangkaian nilai-nilai tersebut dituliskan di dalam [] seperti contoh berikut ini:
nilai_ujian = [80,75,70,90,81,84,92,71,65,80,70]
nama_pahlawan = ['Sukarno', 'Diponegoro', 'Jend. Sudirman', 'Cut Nya Dhien']
nilai_campuran = ['Javascript', 20, 34.4, True]
list_dalam_list = [23, [22, 20], 45]
List juga memiliki perbedaan lain dengan String, yaitu list bersifat mutable, sedangkan String
bersifat immutable. Mutable artinya nilainya dapat diubah secara langsung, seperti yang ditunjukkan
pada kode program berikut ini:
Perbedaan berikutnya, jika ada dua string yang isinya sama, keduanya menunjuk (meru-
juk/mengacu) pada object yang sama. Sedangkan pada list jika ada dua list dengan isi yang
sama, keduanya menunjuk pada object yang berbeda. Hal tersebut dapat ditunjukkan dengan
Python shell berikut ini:
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
Praktikum ini membutuhkan perangkat komputer yang memiliki spesifikasi minimum sebagai
berikut:
1. Terkoneksi ke Internet dan dapat mengunduh package-package Python.
2. Mampu menjalankan sistem operasi Windows 10 atau Ubuntu Linux.
Perangkat lunak yang diperlukan untuk mendukung praktikum ini adalah sebagai berikut:
1. Python 3.7 atau 3.8 yang terinstall menggunakan Anaconda atau Installer Python lainnya.
2. Web Browser (Mozilla Firefox, Microsoft Edge atau Google Chrome).
3. Command Prompt (jika menggunakan Windows).
4. Terminal (jika menggunakan Linux).
5. Editor Python (Visual Studio Code, PyCharm, Spyder atau editor-editor lainnya yang mendu-
kung Python).
10.3 Materi
Dictionary mempunyai kemiripan dengan list, tetapi lebih bersifat umum. Dalam list, indeks
harus berupa integer sedangkan dalam dictionary indeks bisa dapat berupa apapaun.
Dictionarymemiliki anggota yang terdiri dari pasangan kunci:nilai. Kunci harus bersifat unik,
tidak boleh ada dua kunci yang sama dalam satu dictionary.
Dictionary dapat diartikan pula sebagai pemetaan antara sekumpulan indeks (yang disebut
kunci) dan sekumpulan nilai. Setiap kunci memetakan suatu nilai. Asosasi kunci dan nilai ter-
sebut disebut dengan pasangan nilai kunci (key-value pair) atau ada yang menyebutnya sebagai item.
Sebagai contoh, kita akan mengembangkan kamus yang memetakan dari kata-kata dalam
bahasa Inggris ke bahasa Spanyol, jadi bisa dikatakan yang menjadi kunci dan nilai adalah data
string. Asumsinya setiap kata dalam bahasa Inggris mempunyai satu arti dalam bahasa Spanyol.
Funsgi dict digunakan untuk membuat dictionary baru yang kosong. Karena dict merupakan
built-in function dari python, maka penggunaanya perlu dihindari sebagai nama variabel.
Jika kita perhatikan potongan kode diatas, dapat terlihat bahwa baris tersebut membuat item
yang memetakan dari kunci ’satu’ ke nilai ’uno’. Dan jika kita mencetak dictionary tadi, maka
akan terlihat pasangan nilai kunci antara kunci dan nilai.
>>> print(eng2sp)
{'one':'uno'}
Format output yang digunakan juga merupakan format input. Misalkan kita membuat dictionary
daru dengan tiga item. den melakukan pencetakan hasil yang didapatkan berupa keseluruhan data
dari dictionary tersebut.
Pengurutan pasangan kunci-nilai tidaklah sama. Secara umum ururtan item pada dictionary
tidak dapat diprediksi. Hal ini tidaklah menjadi masalah utama karena elemen dalam dictionary
tidak pernah diberikan indeks dengan indeks integer. Sebagai gantinya dapat menggunakan kunci
untuk mencari nilai yang sesuai (corresponding values).
>>> print(eng2sp['two'])
'dos'
Kunci ’two’ selalu dimappingkan dengan nilai "dos" jadi urutan pada item tidak terlalu berpe-
ngaruh. Jika menggunakan kunci yang tidak ada dalam dictionary, akan didapatkan pengecualian:
>>> print(eng2sp['four'])
KeyError: 'four'
Fungsi len pada dictionary digunakan untuk megembalikan jumlah pasangan nilai kunci:
>>> len(eng2sp)
3
Operator in dalam dictionary mengembalikan nilai benar (true) atau salah (false) sesuai dengan
kunci nyang ada dalam dictionary.
Untuk mengetahui nilai yang ada pada dictionary dapat menggunakan method values. Method
ini akan mengembalikan nilau sesuai dengan tipe datanya dan dikonversi kedalam list dan digunakan
dalam operator in.
Operator in menggunakan algoritma yang berbeda untuk list dan dictionary. Untuk list meng-
gunakan algoritma pencarian linear. Saat list bertambah, waktu pencarian yang dibutuhkan menjadi
lebih lama secara proprosional sesuai dengan panjang list. Dalam dictionary, Python menggunakan
algoritma yang disebut Hash Table dengan properties yang luar biasa, operator in membutuhkan
waktu yang sama tidak peduli dengan banyak item yang ada didalam dictionary.
1. Membuat 26 variable untuk tiap huruf pada alfabet, kemudian memasukkanya dalam string
untuk masing-masing karakter, menambah perhitungan yang sesuai dan mungkin menggu-
nakan kondisional berantai.
2. Membuat list dengan 26 elemen, kemudian nmelakukan konversi setiap karakter menjadi
angka (menggunakan fungsi bawaan), menggunakan angka sebagai indeks dalam list dan
menambah perhitungan yang sesuai.
3. Membuat dictionary dengan karakter sebagai kunci dan perhitungan sebagai nilai yang
sesuai, pada satu karakter dapat ditambahkan item kedalam dictionary. Setelah itu dapat pula
ditambahkan nilai dari item yang ada.
Dari 3 opsi diatas, kita akan melakukan perhitungan yang sama, akan tetapi dari masing-masing
opsi menerapkan proses perhitungan dengan cara yang berbeda-beda.
Model komputasi diatas disebut dengan histogram, yang mana merupakan istilah statistika dari
set perhitungan (atau frekuensi).
Perulangan for akan melewati string. Setiap kali terkadi looping, jika karakter c tidak ada dalam
dictionary maka akan dibuat item baru dengan kunci c dan nilai awal 1 (asumsinya telah muncul
sekali). Jika c sudah ada dalam dictionary secara otomatis akan melakukan penambahan d(c).
Dictionary memiliki metode yang disebut get yang mengambil kunci dan nilai default. Ji-
ka kunci muncul di dictionary, akan mengembalikan nilai yang sesuai; jika tidak maka akan
mengembalikan nilai default. Sebagai contoh:
Penggunaan get dapat dilakukan untuk menulis loop histogram secara lebih ringkas. Metode get
secara otomatis menangani case dimana kunci tidak ada dalam dictionary. Dengan menghilangkan
statement if, kita dapat meringkas empat baris menjadi satu baris saja.
1 word = 'brontosaurus'
2 d = dict()
3 for c in word:
4 d[c] = d.get(c,0) + 1
5 print(d)
Penggunaan metode get untuk menyederhanakan loop penghitungan ini akhirnya menjadi
"idiom" yang sangat umum digunakan dalam Python. Jika dibandingkan loop menggunakan
pernyataan if dan operator in dengan loop menggunakan metode get melakukan hal yang persis
sama, tetapi yang satu lebih ringkas.
10.3.2 Dictionary dan File
Salah satu kegunaan umum dictionary adalah untuk menghitung kemunculan kata-kata dalam
file dengan beberapa teks tertulis. Mari kita mulai dengan file kata yang sangat sederhana yang
diambil dari teks Romeo dan Juliet.
Sebagai contoh pertama, akan digunakan versi teks yang disingkat dan disederhanakan tanpa
tanda baca. Selanjutnya akan digunakan teks adegan dengan tanda baca yang disertakan.
Kita akan mencoba memnulis program Python untuk membaca baris-baris file, memecah setiap
baris menjadi daftar kata, dan kemudian melakukan perulangan melalui setiap kata dalam baris dan
menghitung setiap kata menggunakan dictionary.
Asumsikan kita menggunakan dua for untuk perulangan. Perulangan bagian luar untuk memba-
ca baris file dan perulangan pada dalam mekalukan iterasi melalui setiap kata pada baris tertentu.
Ini adalah contoh dari pola yang disebut nested loop karena salah satu perulangan adalah perulangan
bagian luar dan perulangan lainnya adalah perulangan bagian dalam.
Perulangan dalam melakukan eksekusi pada semua iterasi setiap kali perulangan bagian luar
membuat iterasi tunggal. Pada bagian ini, perulangan bagian dalam iterasi "lebih cepat", sedangkan
perulangan bagian luar iterasi lebih lambat.
Kombinasi dari dua perulangan bersarang memastikan bahwa ada proses perhitugnan setiap
kata pada setiap baris file input.
8 counts = dict()
9 for line in fhand:
10 words = line.split()
11 for word in words:
12 if word not in counts:
13 counts[word] = 1
14 else:
15 counts[word] += 1
16
17 print(counts)
Pada statement else digunakan model penulisan yang lebih singkat untuk menambhakan va-
riable. counts[word] += 1 sama dengan counts[word] = counts[word] + 1. Metode lain dapat
digunakan untuk mengubah nilai suatu variabel dengan jumlah yang diinginkan, misalnya dengan
menggunakan - =, * =, dan / =.
Ketika kita menjalankan program, akan didapatkan data dump jumlah semua dalam urutan hash
yang tidak disortir.
# file romeo.txt dapat diunduh melalui moodle atau dapat menggunakan menggunakan teks
Romeo Juliet pada bagian awal 10.3.2 Dictionary dan File yang kemudian disimpan dengan
nama romeo.txt
python count1.py
Enter the file name: romeo.txt
{'and': 3, 'envious': 1, 'already': 1, 'fair': 1,
'is': 3, 'through': 1, 'pale': 1, 'yonder': 1,
'what': 1, 'sun': 2, 'Who': 1, 'But': 1, 'moon': 1,
'window': 1, 'sick': 1, 'east': 1, 'breaks': 1,
'grief': 1, 'with': 1, 'light': 1, 'It': 1, 'Arise': 1,
'kill': 1, 'the': 3, 'soft': 1, 'Juliet': 1}
jan 100
chuck 1
annie 42
Output yang ditampilkan memperlihatkan bahwa kunci tidak berada dalam pola urutan tertentu.
Pola ini dapat diimplementasikan dengan berbagai idiom looping yang telah dideskripsikan pada
bagian sebelumnya. Sebagai contoh jika ingin menemukan semua entri dalam dictionary dengan
nilai diatas 10, maka kode programnya sebagai berikut :
Pada looping for yang melalui kunci dictionary, perlu ditambahkan opertor indeks untuk
mengambil nilai yang sesuai untuk setiap kunci. Outputnya akan terlhiat sebagai berikut :
jan 100
annie 42
Program diatas hanya akan menampilkan data nilai diatas 10.
Untuk melakukan print kunci dalam urutan secara alfabet, langkah pertama yang dilakukan
adalah membuat list dari kunci pada dictionary dengan menggunakan method kunci yang tersedia
pada object dictionary. Langkah selanjutnya adalah melakuan pengurutan (sort), list dan loop
melewati sorted list. Langkah terakhir dengan melihat tiap kunci dan pencetak pasangan nilai key
yang sudah diurutkan. Impelentasi dalam kode dapat dilihat dibawah ini:
Pertama-tama kita melihat list dari kunci dengan tidak berurutan yang didapatkan dari method
kunci. Kemudian kita melihat pasangan nilai kunci yang disusun secara berurutan menggunakan
loop for.
Python sendiri mempunyai functoin split dimana fungsi tersebut akan mencari spasi dan meng-
ubah kata-kata sebgau token yang dipisahkan oleh spasi. Misal pada kata "soft!" dan "soft"
merupakan dua kata yang berbeda dan dalam dictionary adakn dibuat terpisah untuk tiap kata
tersebut.
Hal tersebut juga berlaku pada penggunaan huruf kapital. Misal pada kata "who" dan "Who"
dianggap sebagai kata berbeda dan dihutng secara terpisah.
Model penyelesaian lain dapat juga dengan menggunakan method string lain seperti lower,
punctuation dan translate. Jika diperhatikan method string translate merupakan method string
yang paling stuble (hampir tidak kentara). Berikut ini merupakan dokumentasi dari method
translate.
Kita tidak akan menentukan tostr tetapi kita akan menggunakan parameter deletetr untuk
menghapus semua tanda baca. Secara otomatis Python akan memberitahu bagian mana yang
dianggap sebagai "tanda baca".
1 import string
2
10 counts = dict()
11 for line in fhand:
12 line = line.rstrip()
13 line = line.translate(line.maketrans('', '', string.punctuation))
14 line = line.lower()
15 words = line.split()
16 for word in words:
17 if word not in counts:
18 counts[word] = 1
19 else:
20 counts[word] += 1
21
22 print(counts)
Contoh:
Input Data = 5
Dcitionary = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Pembahasan Kasus 1
Untuk dapat menyelesaikan kasus pertama, langkah-langkah yang menjadi penyelesaiannya
adalah :
1. Membuat dan menentukan panjang dictionary nya.
2. Buat perulangan sepanjang dictionary
3. Input dictionary dengan key = x dan value = x*x.
4 for x in range(1,n+1):
5 kamus[x]=x*x
6
Perhatikan outputnya !!
Kasus 10.2 Buatlah program untuk mencetak semua nilai (value) unik yang ada didalam dictionary.
Contoh:
Data : [{"V":"S001"}, {"V": "S002"}, {"VI": "S001"}, {"VI": "S005"},
{"VII":"S005"}, {"V":"S009"},{"VIII":"S007"}]
Output : Unique Values: {'S005', 'S002', 'S007', 'S001', 'S009'}
Pembahasan Kasus 2
Untuk dapat menyelesaikan kasus kedua, kita dapat menggunakan fungsi values pada dictionary.
untuk mencari nilau unik kita ambil masing-masing nilai dari anggota dictionary, kemudiah kita
kumpulkan dalam satu variabel.
Perhatikan outputnya !!
Kasus 10.3 Dengan menggunakan file words.txt, buatlah program untuk menympan kunci (keys)
pada dictionary. Tambahkan pengecekan apakah suatu kata yang diinputkan ada didalam daftar
tersebut. Jika ada silakan cetak kata ditemukan, jika tidak ada silakan cetak kata tidak ditemukan.
Silakan cek bagian dibawah ini untuk contoh output dari programnya.
Daftar Kamus
{'Writing': 1, 'programs': 2, 'or': 3, 'programming':
4, 'is': 5, 'a': 6, 'very': 7, 'creative': 8, 'and':
9, 'rewarding': 10, 'activity': 11, 'You': 12,
'can': 13, 'write': 14, 'for': 16, 'many': 17,
'reasons': 18, 'ranging': 19, 'from': 20, 'making':
21, 'your': 22, 'living': 23, 'to': 24, 'solving':
25, 'difficult': 27, 'data': 28, 'analysis': 29, }
Pembahasan Kasus 3
Untuk dapat membuat program diatas, langkah-langkah yang harus dilakukan adalah :
1. Buat program untuk membaca file txt.
2. Input kata yang dicari.
3. Buat dictionary baru untuk menyimpan file yang sudah dibaca.
4. simpan file dalam dictionary, jangan lupa cek duplikasinya.
5. Cetak dictionary nya.
6. Lakukan pengecekan terhadap kata yang diinputkan.
7. Cetak hasilnya.
1 count = 0
2 dictionary_words = dict()
3 fname = input('Masukkan nama file : ')
4 fword = input('Kata yang dicari : ')
5 try:
6 fhand = open(fname)
7 except FileNotFoundError:
8 print('Fie tidak bisa dibuka !!', fname)
9 exit()
10
22 if fword in dictionary_words:
23 print('\nKata %s ditemukan dalam kamus' % fword)
24 else:
25 print('\nKata %s tidak ditemukan dalam kamus' % fword)
Kasus 10.4 Buat program yang dapat membagi kategori dari setiap email yang masuk dimana
pada hari itu perintah commit dilakukan. Kemudian hitunglah berapa banyak hari dimana perintah
commit itu sering dilakukan. Gunakan file mbox-short.tx untuk mendapatkan kategori dari setiap
email yang masuk tersebut.
Pembahasan Kasus 4
Untuk dapat menyelesaikan kasus, langkah-langkah yang harus dilakukan adalah :
1. Cek pola yang ada
2. Buat program untuk membaca file txt.
3. Buat dictionary
4. Cari baris yang dimulai dengan "From"
5. Cari kata ketiga, lakukan perhitungan berjalan untuk menghitung setiap hari dalam 1 minggu.
6. Simpan dalam dictionary.
7. Cetak dictionary nya.
Untuk melakukan pengecekan pola, silakan buka file mbox-short.txt. File tersebut merupakan
standart format yang berisi multiple mail message. Baris pertama dimulai dengan "From" untuk me-
misahkan antar message. Informasi mengenai format mbox silakan cek https://en.wikipedia.org/wiki/Mbox.
Pengecekan pola
Baris contoh :
From [email protected] Sat Jan 5 09:14:16 2008
Program:
python kasus4.py
Enter a file name: mbox-short.txt
{'Fri': 20, 'Thu': 6, 'Sat': 1}
Berdasarkan pengecekan yang telah kita lakukan diatas, dapat dibuat kode programmnya sebagai
berikut:
19 print(dictionary_days)
Contoh:
Dictionary : {1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}
Output:
key value item
1 10 1
2 20 2
3 30 3
4 40 4
5 50 5
6 60 6
Latihan 10.2 Bualah sebuah program untuk memetakan dua list mejadi satu dictionary.
Contoh:
Data List
Lista = ['red', 'green', 'blue']
Listb = ['#FF0000','#008000', '#0000FF']
Output
{'green': '#008000', 'blue': '#0000FF', 'red': '#FF0000'}
Latihan 10.3 Dengan menggunakan file mbox-short.txt, buatlah program yang dapat membaca
log email dan sajikan dalam histogram menggunakan dictionary. Kemudian hitung berapa
banyak pesan yang masuk dari email dan sajikan dalam bentuk dictionary.
Silakan cek bagian dibawah ini untuk contoh output dari programnya.
Masukkan nama file : mbox-short.txt
{'[email protected]': 1, '[email protected]': 3,
'[email protected]': 5, '[email protected]': 1,
'[email protected]': 2, '[email protected]': 3,
'[email protected]': 4, '[email protected]': 1,
'[email protected]': 4, '[email protected]': 2,
'[email protected]': 1}
Latihan 10.4 Dengan menggunakan file mbox-short.txt, buat program untuk mencatat data
nama domain pengirim pesan. Hitunglah jumlah pesan yang dikirim masing-masing domain.
sajikan dalam bentuk dictionary.
Silakan cek bagian dibawah ini untuk contoh output dari programnya.
11. Tipe Data Tuples
Praktikum ini membutuhkan perangkat komputer yang memiliki spesifikasi minimum sebagai
berikut:
1. Terkoneksi ke Internet dan dapat mengunduh package-package Python.
2. Mampu menjalankan sistem operasi Windows 10 atau Ubuntu Linux.
Perangkat lunak yang diperlukan untuk mendukung praktikum ini adalah sebagai berikut:
1. Python 3.7 atau 3.8 yang terinstall menggunakan Anaconda atau Installer Python lainnya.
2. Web Browser (Mozilla Firefox, Microsoft Edge atau Google Chrome).
3. Command Prompt (jika menggunakan Windows).
4. Terminal (jika menggunakan Linux).
5. Editor Python (Visual Studio Code, PyCharm, Spyder atau editor-editor lainnya yang mendu-
kung Python).
11.3 Materi
11.3.1 Tuple Immutable
Tuple bisa dikatakan menyerupai list. Nilai yang disimpan dalam tuple dapat berupa apapun
dan diberikan indeks bilangan bulat (integer). Perbedaan utama adalah sifat tuple yang immutable,
yaitu dimana anggota dalam tuple tidak bisa dirubah. Tuple sendiri dapat dibandingkan (compare)
dan bersifat hashable sehingga dapat dimasukkan dalam list sebagai key pada dictionary python.
# Sebuah objek disebut hashable jika memiliki nilai hash yang tidak pernah berubah selama
hidupnya (menggunakan method __hash__() ), dan dapat dibandingkan dengan benda-benda
lain (menggukanan method __eq__() atau __cm__() ). Obyek Hashable membandingkan
yang sama dengan memiliki nilai hash yang harus sama.
Hashability membuat sebuah objek yang dapat digunakan sebagai kamus kunci dan mengatur
anggota, karena struktur data ini menggunakan nilai hash secara internal.
Objek pada pyhton built-in biasanya hashable, sementara tidak bisa berubah wadah (seperti
daftar atau kamus) adalah. Objek yang merupakan instance dari kelas yang didefinisikan
pengguna yang hashable secara default; mereka semua membandingkan yang tidak sama,
dan mereka nilai hash adalah id().
selengkapnya : https://docs.python.org/3/glossary.html
>>> t = 'a','b','c','d','e'
>>> t = ('a','b','c','d','e')
>>> t1 = ('a',)
>>> type(t1)
<type 'tuple'>
>>> t2 = ('a')
>>> type(t2)
<type 'str'>
Model sintaks lain dengan menggunakan fungsi built-in tuple. Ketika tidak diisi dengan
argument apapun, secara langsung akan membentuk tuple kosong.
>>> t = tuple()
>>> pint(t)
()
Jika argumennya berupa urutan (string, list, atau tuple), akan mengembalikan nilai tuple dengan
elemen-elemen yang berurutan.
>>> t = tuple('dutawacana')
>>> pint(t)
('d','u','t','a','w','a','c','a','n','a')
Tuple merupakan nama dari constructor, kita tidak bisa menggunakannya sebagai nama variabel.
Sebagian besar operator yang bekerja pada list bekerja juga pada tupple. Tanda kurung kotak [ ]
menandakan indeks element dari tuple.
>>> print(t[1:3])
('b', 'c')
Tuple bersifat immutable artinya element pada tuple tidak dapat berubah. Jika anda berusaha
mengubah tuple, maka akan didapatkan error.
Element pada tuple tidak dapat dirubah tetapi dapat diganti dengan elemen lain.
Fungsi (sort) pada python bekerja dengan cara yang sama. Tahap pertama akan melakukan
pengurutan berdasarkan elemen pertama. Pada kasus tertentu akan mengurutkan berdasarkan
elemen kedua dan sebagainya. Fitur ini disebut dengan DSU – (Decorate, Sort, Undercorate)
1. Decorate – urutan (sekuensial) membangun daftar tuple dengan satu atau lebih key pengurut-
an sebelum eleman dari urutan (sekuensial).
2. Sort – list tuple menggunakan sort (fungsi bawaan di python).
3. Undercorate – melakukan ekstraksi pada elemen yang telah diurutkan pada satu sekuensial.
Untuk memahaminya, silakan perhatikan contoh dibawah ini. Kita mempunyai sebuah kalimat
dan akan melakukan pengurutan kata dalam kalimat tersebut dari yang paling panjang ke yang
paling pendek.
1 kalimat = 'but soft what light in yonder window breaks'
2 dafkata = kalimat.split()
3 t = list()
4 for kata in dafkata:
5 t.append((len(kata), kata))
6
7 t.sort(reverse=True)
8
9 urutan = list()
10 for length, kata in t:
11 urutan.append(kata)
12
13 print(urutan)
Looping yang pertama akan membuat daftar tuple, yang berisi daftar kata sesuai dengan pan-
jangnya. Fungsi sort akan membandingkan elemen pertama dari list dari panjang kata yang ada
dan kemudian akan menuju ke elemen kedua jika kondisi sesuai. Keyword reverse=True digunakan
untuk melakukan urutan secara terbalik (descending).
Looping kedua akan membangun daftar tuple dalam sesuai urutan alfabet diururtkan berda-
sarkan panjangnya. Pada contoh diatasm Empat kata dalam kalimat akan diurutkan secara alfabet
terbalik. Kata "what" akan muncul sebelum "soft" didalam list.
Kata-kata yang muncul diurutkan sebagai list dengan urutan panjang kata dari yang paling
panjang ke kata yang paling pendek.
Tuple yang digunakan pada contoh diatas menggunakan statement penugasan disebelah kiri dan
tidak menggunakan tanda kurung. Berikut ini merupakan contoh yang sama dengan menggunakan
tanda kurung (parentheses).
Tuple memungkinkan pula untuk menukar nilai variabel dalam satu statement.
>>>> a, b = b, a
Dari contoh diatas, dapat dilihat bahwa kedua statemnt merupakan tuple. Bagian kiri merupakan
tuple dari variable dan bagian kanan merupakan tuple dari expresions. Tiap nilai pada bagian kanan
diberikan/ditugaskan ke masing-masing variable di sebelah kiri. Semua expresions pada bagian kiri
dievaluasi sebelum diberikan penugasan.
Yang perlu diperhatikan adalah jumlah variabel antara sisi kiri dan sisi kanan harus sama.
>>> a, b = 1, 2, 3
ValueError: too many values to unpack
Pada sisi sebelah kanan biasanya terdapat data sekuensial string, list atau tuple. Sebagai contoh,
kita akan membagi alamat email menjadi user name dan domain seperti berikut ini.
Nilai yang dikembalikan dari split terdiri dari dua elemen yang dipisahkan tanda "@’, elemen
pertama berisi username dan elemen selanjutnya berisi domain.
>>> print(usernam)
didanendya
>>> print(domain)
ti.ukdw.ac.id
11.3.4 Dictionaries and Tuple
Dictionaries mempunyai metode yang disebut items untuk mengembalikan nilai list dari tuple
dimana tiap tuple-nya merupakan key-value pair (pasangan kunci dan nilai).
Seperti pada dictionary umumnya, item yang dikembalikan nilainya tidak berurutan. Bagaima-
napun juga, list dari tuple adalah list, dan tuple membandingkannya sehingga kita dapat melakukan
pengurutan (sort) pada tuple. Melakukan konversi dictionary dari list tuple merupakan cara untuk
menampilkan isi dictionary yang diurutkan berdasarkan kuncinya.
List yang muncul diurukan secara ascending berdasarkan alfabet dan key value.
Pada bagian looping ini, terdapat 2 iterasi variabel karena item mengembalikan list dari tuple
dan key. val merupakan penugasan tupple yang melakukan iterasi berulang melalui pasangan
key-value pada dictionary.
Pada setiap iterasi yang melalui loop, baik key dan value akan bergerak maju menuju pasangan
key-value berikutnya pada dictionary (masih dalam urutan hash).
Output dari looping diatas
10 a
22 c
1 b
Jika dilakuan penggabungan dari kedua teknik diatas, kita dapat melakukan pencetakan isi
dictionary yang diurutkan berdasarkan nilai yang disimpan di setiap pasangan key-value.
Untuk melakukannya langkah pertama dengan membuat list tuple di mana masing-masing
tuple beranggotakan (value,key). Method item akan memberikan list tupel (value,key) dan akan
melakukan pengurutan berdasarkan value, bukan key. Setelah daftar list dengan value-key tuple
terbentuk, langkah selanjutnya mengurutkan list tersebut dengan urutan terbalik dan melakukan
pencetakan list baru yang disortir.
>>> d = {'a':10, 'b':1, 'c':22}
>>> l = list()
>>> for key, val in d.items() :
... l.append( (val, key) ) ...
>>> l
[(10, 'a'), (22, 'c'), (1, 'b')]
>>> l.sort(reverse=True)
>>> l
[(22, 'c'), (10, 'a'), (1, 'b')]
>>>
Dengan melakukan penyusunan list dari tuple yang memiliki value sebagai elemen pertama,
akan mudah untuk mengurutkan list dari tuple tersebut dan mendapatkan isi dictionary yang
diurutkan berdasarkan nilainya.
1 import string
2 fhand = open('romeo-full.txt')
3 counts = dict()
4 for line in fhand:
5 line = line.translate(str.maketrans('', '', string.punctuation))
6 line = line.lower()
7 words = line.split()
8 for word in words:
9 if word not in counts:
10 counts[word] = 1
11 else:
12 counts[word] += 1
13
19 lst.sort(reverse=True)
20
Bagian pertama dari program digunakan untuk membaca file dan melalukan komputasi terhadap
dictionary yang memetakan tiap kata ke sejumlah kata dalam dokumen yang tidak berubah. Dengan
menambahkan print out counts, list tuple (val, key) dibuat dan diurutkan dalam list dengan urutan
terbalik.
Nilai pertama akan digunakan dalam perbandingan. Jika ada lebih dari satu tupel dengan nilai
yang sama, kemudian akan melihat ke elemen kedua (key), sehingga tuple di mana nilainya yang
sama akan diurutkan berdasarkan urutan abjad sesuai key.
Pada bagian akhir, ada looping yang melakukan iterasi penugasan ganda dan mencetak 10 kata
yang paling sering muncul dengan melakukan perulangan pada list lst[:10]:.
Secara lengkap output dari program diatas akan memampilkan kata yang sesuai untuk frekuesni
analisis.
61 i
42 and
40 romeo
34 to
34 the
32 thou
32 juliet
30 that
29 my
24 thee
Penguraian dan analisis data yang kompleks ini dapat dilakukan dengan 19 baris program
python dipahami. Hal tersebut merupakan salah satu alasan mengapa python adalah pilihan yang
baik sebagai bahasa untuk mengeksplorasi informasi.
Misalnya menggunakan composite key jika ingin membuat direktori telepon yang memetakan
dari pasangan last-name, first-name ke nomor telepon Dengan asumsi bahwa kita telah mendefi-
nisikan variabel last, first, dan nomor. Penulisan pernyataan penugasan dalam dictionary sebagai
berikut:
directory[last,first] = number
Expression yang ada didalam kurung kotak adalah tuple. Langkah selanjutnya dengan membe-
rikan penugasan tuple pada looping for yang berhubungan dengan dictionary.
Looping yang berhubungan dengan keys pada direktori diatas merupakan tuple. Elemen dari
masing-masing tuple ditetapkan pertama kali, kemudaian dilakukan pencetakan nama dan nomor
telepon yang sesuai.
Contoh:
str1: Jakarta
str2: Jogja
str3: Surabaya
tpl: ('B', 'e', 'l', 'a', 'j', 'a', 'r', ' ', 'P', 'y', 't', 'h', 'o', 'n')
tpl1: ('e', 'l', 'a', 'j', 'a', 'r', ' ', 'P', 'y', 't', 'h', 'o', 'n')
1 '''
2 1) Membuat dan mencetak tuple.
3 '''
4 kota = ("Jakarta", "Jogja", "Surabaya")
5 print("kota: ", kota)
6 print("kota[0]: ", kota[0])
7 print("kota[1]: ", kota[1])
8 print("kota[2]: ", kota[2])
9 print() # prints baris
10
11 '''
12 2) Membagi tuple kedalam string.
13 '''
14 str1, str2, str3 = kota
15 print("str1: ", str1)
16 print("str2: ", str2)
17 print("str3: ", str3)
18 print()
19
20 '''
21 3) Membuat tuple yang berisi string dari sebuah kata.
22 '''
23 tpl = tuple("Belajar Python")
24 print("tpl: ", tpl)
25 print()
26
27 '''
28 4) Membuat tuple yang berisi semua, kecuali huruf pertama dari sebuah string
29 '''
30 # direct string
31 tpl1 = tuple("Belajar Python"[1:])
32 print("tpl1: ", tpl1)
33
34
35 '''
36 5) Mencetak tuple secara terbalik
37 '''
38 name = ("Jaka", "Joko", "Jono")
39 # using slicing technique
40 rev_name = name[::-1]
41 rev2= name[::-2]
42 print("urutan: ", name)
43 print("urutan_terbalik: ", rev_name)
Kasus 11.2 Buatlah program yang dapat menghitung jumlah commit yang dilakukan oleh akun
email tertentu. Gunakan file mbox-short.txt atau mbox.txt
Contoh:
tA= (90, 90, 90, 90)
Output
True
Latihan 11.2 Buatlah program dengan menggunakan tuple yang dapat melalakukan proses
seperti pada kasus 11.1, Gunakan data diri anda masing-masing dan lakukan perubahan supaya
didapatkan output seperti contoh berikut ini :
Contoh:
Data: ('Matahari Bhakti Nendya', '22064091', 'Bantul, DI Yogyakarta')
NIM : 22064091
NAMA : Matahari Bhakti Nendya
ALAMAT : Bantul, DI Yogyakarta
Latihan 11.3 Buatlah program untuk menghitung distribusi jam dalam satu hari dimana ada
pesan yang diterima dari setiap email yang masuk. Gunakan file mbox-short.txt untuk sebagai
datanya. Berikut ini adalah contoh output dari programmnya.
Contoh:
Enter a file name: mbox-short.txt
04 3
06 1
07 1
09 2
10 3
11 6
14 1
15 2
16 4
17 2
18 1
19 1
12. Tipe Data Set
12.3 Materi
12.3.1 Pengenalan dan Mendefinisikan Set
Set adalah salah satu tipe data pada Python yang dapat digunakan untuk menyimpan sekumpulan
data yang semuanya unik. Biasa juga dikenal dengan istilah himpunan. Beberapa sifat Set pada
Python adalah:
• Isi dari Set disebut sebagai anggota (member).
• Anggota dari Set harus bersifat immutable. Beberapa tipe data immutable pada Python:
integer, float, string, tuple dan lain-lain. Dengan demikian list dan dictionary (mutable) tidak
dapat dimasukkan ke dalam Set.
• Set sendiri bersifat mutable, artinya anda dapat menambah atau mengurangi isi dari sebuah
Set. Karena itu Set tidak dapat dimasukkan ke dalam Set.
Untuk mendefinisikan Set, ada beberapa cara yang dapat dilakukan yaitu dengan menggunakan
notasi {} dan fungsi set() seperti contoh berikut ini:
# dengan menggunakan {}
bilangan_genap = {2, 4, 6, 8, 10, 12}
bilangan_ganjil = {1, 3, 5, 7, 9, 11}
Untuk mendefinisikan Set kosong anda tidak dapat menggunakan notasi {}, tetapi harus
menggunakan fungsi set() seperti contoh berikut:
3
71200214
71200195
71200120
Jika dicermati, output yang dihasilkan urutannya berbeda dengan deklarasi Set sebelumnya.
Hal ini disebabkan karena pada Set tidak ada indeks, sehingga tidak ada urutan posisi anggota.
Pada tipe data Set, posisi anggota tidaklah penting.
Set adalah tipe data mutable, artinya isinya bisa bertambah atau berkurang. Program berikut ini
menunjukkan bagaimana cara menambah anggota sebuah Set dengan fungsi add():
2
AD 6810 MT
AB 1890 XA
Set memiliki mekanisme untuk melakukan pengecekan apakah anggota baru yang akan dimasukkan
sudah ada di dalam Set (cek duplikasi). Jika belum ada, maka anggota tersebut bisa masuk ke
dalam Set. Tetapi jika ternyata di dalam Set sudah ada anggota dengan nilai yang sama, maka
pemanggilan fungsi add() tidak akan menambah anggota dari Set. Pengecekan duplikasi ini sudah
ada di dalam fungsi add(), sehingga anda tidak perlu melakukannya sendiri.
Untuk menghapus anggota dari sebuah Set, ada beberapa cara yaitu dengan fungsi discard(),
remove(), pop() dan clear(). Perbedaan dari empat fungsi tersebut dapat dilihat pada Gambar 12.1.
Berikut ini adalah contoh program yang mendemonstrasikan penghapusan anggota dari sebuah
Set:
# kosongkan set
bilangan_prima.clear()
print(bilangan_prima)
Fungsi discard() tidak akan menghasilkan error jika anggota yang ingin dihapus tidak ada di dalam
Set. Sedangkan fungsi pop() akan mengambil salah satu anggota (secara acak) dan mengeluarkannya
dari Set. Fungsi pop() akan berguna jika kita ingin memproses isi dari Set satu-persatu tanpa
memperdulikan urutan/posisi dari setiap anggota di dalam Set.
Bagaimana jika anda ingin mengubah nilai salah satu anggota di dalam Set? Pada Set anda
tidak bisa mengubah langsung nilai dari salah satu anggota di dalam Set. Yang dapat dilakukan
adalah melakukan operasi penggantian (replace) dengan cara menghapus anggota yang mau diubah,
kemudian memasukkan anggota baru yang nilainya sesuai dengan yang diinginkan. Contohnya
dapat dilihat pada program berikut ini:
Operator Union
Contoh penggunaan operator union dapat dilihat pada contoh program berikut ini:
Operator Intersection
Contoh penggunaan operator Intersection dapat dilihat pada program berikut:
Program tersebut akan menghasilkan output hasil operasi intersection dari Set renang dan tenis.
Intersection berarti anggota-anggota yang berada di dalam Set renang dan Set tenis sekaligus, yaitu
mail, upin dan ipin. Output yang dihasilkan dari program tersebut adalah:
Operator Difference
Contoh penggunaan operator difference dapat dilihat pada program berikut:
Operator difference akan menghasilkan Set yang anggotanya merupakan selisih dari kedua Set
yang dibandingkan. Pada contoh tersebut digunakan untuk mendapatkan anggota yang hanya
bisa berbahasa korea dengan cara mencari selisih antara Set korean dan Set english. Sedangkan
kebalikannya, jika ingin mengetahui siapa saja yang hanya bisa berbahasa English maka cari selisih
antara set English dan Set Korea. Output yang dihasilkan dari program tersebut adalah sebagai
berikut:
Operator symmetric difference akan menghasilkan Set baru yang merupakan gabungan dari dua
Set tetapi tidak termasuk irisannya. Contoh yang diberikan memanfaatkan operator symmetric
difference untuk mendapatkan siapa saja yang hanya dapat berbicara dalam satu bahasa (artinya
tidak termasuk irisannya). Secara umum dapat juga dihasilkan dari operasi berikut:
Diberikan sebuah list yang sudah berisi nilai-nilai integer, hitunglah jumlah seluruh elemen list
yang unik di dalam list tersebut! Buatlah dalam bentuk fungsi unique_sum(list)
Pada kasus ini anda diberi satu buah List yang di dalamnya sudah ada beberapa elemen-elemen
bertipe integer. Anda diminta untuk menghitung jumlah seluruh elemen yang unik di dalam list
tersebut. Sebagai ilustrasi, jika List tersebut sebagai berikut:
data = [2, 4, 3, 2, 7, 8, 6, 4, 5, 5]
Jumlah seluruh elemen yang unik adalah 2 + 4 + 3 + 7 + 8 + 6 + 5 = 35. Nilai 2, 4 dan 5 muncul
lebih dari sekali, tetapi hanya dihitung satu kali saja (unik). Untuk memecahkan masalah ini, kita
akan menggunakan bantuan Set. Solusi untuk kasus ini dapat dilihat pada program berikut ini:
def unique_sum(list):
# ubah dalam bentuk Set
data_set = set(list)
Anggota dari suatu Set dipastikan selalu unik, sehingga dalam kasus ini kita akan menggunakan
Set. Kita akan menggunakan operator in untuk mengecek apakah suatu karakter sudah ada di dalam
Set atau tidak. Solusi untuk kasus ini dapat dilihat pada program berikut ini:
def cek_duplikat(string):
# buat set kosong
karakter_set = set()
# test case
string1 = 'Alexander the Great' # duplikat
print(cek_duplikat(string1))
Untuk membuat program ini, langkah-langkah yang perlu diimplementasikan adalah sebagai
berikut:
• Minta jumlah kategori (n).
• Minta nama kategori, kemudian minta nama-nama aplikasi sebanyak 5 untuk kategori tersebut
• Setelah semua kategori selesai di-input, berikutnya tampilkan daftar nama aplikasi di setiap
kategori
• Dengan operasi intersection, tampilkan nama aplikasi yang muncul di semua kategori yang
ada.
Untuk permasalahan ini, kita akan menggunakan bantuan List, Dictionary dan Set. Solusi untuk
masalah tersebut dapat dilihat pada program berikut ini:
# input n kategori
n = int(input('Masukkan jumlah kategori: '))
daftar_aplikasi_list = []
# ambil semua daftar aplikasi dari setiap kategori
for aplikasi in data_aplikasi.values():
daftar_aplikasi_list.append(set(aplikasi))
print(daftar_aplikasi_list)
print(hasil)
Contoh output yang dihasilkan dari program tersebut adalah sebagai berikut:
Pada contoh tersebut, pengguna memasukkan 2 kategori, yaitu Finance dan Utilities. Daftar nama
aplikasi dari setiap kategori tersebut adalah sebagai berikut:
• Finance: RTI Saham, Mirae, IPOT, Poems, Calculator
• Utilities: Photos, Weather, Calculator, Camera, Notes
Dari input user tersebut, kemudian disusun dalam bentuk dictionary sebagai berikut:
{
'Finance': ['RTI Saham', 'Mirae', 'IPOT', 'Poems', 'Calculator'],
'Utilities': ['Photos', 'Weather', 'Calculator', 'Camera', 'Notes']
}
Kemudian dari setiap kategori dilakukan operasi intersection untuk mencari apakah ada nama
aplikasi yang muncul di semua kategori. Dari contoh tersebut didapatkan nama aplikasi Calculator
yang muncul di semua kategori.
Referensi . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
13. Fungsi Rekursif
13.3 Materi
13.3.1 Pengertian Rekursif
Fungsi rekursif adalah fungsi yang berisi dirinya sendiri atau fungsi yang mendefinisikan dirinya
sendiri. Fungsi ini sering disebut sebagai fungsi yang memanggil dirinya sendiri. Fungsi rekursif
merupakan fungsi matematis yang berulang dan memiliki pola yang terstruktur, namun biasanya
fungsi ini perlu diperhatikan agar fungsi ini dapat berhenti dan tidak menghabiskan memori. Fungsi
rekursif merupakan fungsi yang harus digunakan secara hati-hati karena fungsi ini dapat bersifat
unlimited loop sehingga menyebabkan program hang up.
Fungsi ini akan terus berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah
fungsi rekursif perlu terdapat 2 blok penting, yaitu blok yang menjadi titik berhenti dari sebuah
proses rekursif dan blok yang memanggil dirinya sendiri. Di dalam rekursif terdapat 2 bagian:
• Base Case adalah bagian dimana penentu bahwa fungsi rekursif itu berhenti
• Rekursif Case adalah bagian dimana terdapat statement yang akan terus diulang-terus
menerus hingga mencapai Base Case
1 def function_name(parameter_list):
2 ...
3 function_name(...)
4 ...
Sebenarnya semua fungsi rekursif pasti memiliki solusi iteratifnya. Misalnya pada contoh kasus
faktorial berikut: Faktorial adalah menghitung perkalian deret angka 1x2x3x ... x n. Algoritma
untuk menghitung faktorial adalah:
1. Tanyakan n
2. Siapkan variabel total untuk menampung hasil perkalian faktorial dan set nilai awal dengan 0
3. Loop dari i = 1 hingga n untuk mengerjakan:
4. total = total * i
5. Tampilkan total
Dengan menggunakan fungsi rekursif maka faktorial dapat dihitung dengan rumus pada gambar
13.1
Dari rumus 13.1 dapat dibuat pseudocode secara rekursif seperti pada gambar 13.2
Dari pseudocode, maka kode Python yang dapat dibuat adalah:
Gambar 13.2: Pseudocode rekursif faktorial
1 def faktorial(n):
2 if n==0 or n==1:
3 return 1
4 else:
5 return faktorial(n-1) * n
6
7 print(faktorial(4))
1 def perkalian(bil1,bil2):
2 if bil2==1:
3 print("%d = " %(bil1),end='')
4 return bil1
5 else:
6 print("%d + " %(bil1),end='')
7 return bil1 + perkalian(bil1,bil2-1)
8
9 print(perkalian(2,4))
Hasil: 2 + 2 + 2 + 2 = 8
1 def pangkat(bil1,bil2):
2 if bil2==1:
3 print("\%d = " \%(bil1),end='')
4 return bil1
5 else:
6 print("\%d * " \%(bil1),end='')
7 return bil1 * pangkat(bil1,bil2-1)
8
9 print(pangkat(2,4))
Hasil: 2 * 2 * 2 * 2 = 16
13.4.3 Problem dan Solusi 3
Kasus 13.3 Tini adalah anak yang pelupa, ia mendapatkan tugas untuk mencari bilangan pada
deret Fibonacci dengan urutan tertentu. Dari pada harus selalu menghitung dari awal, bantulah
Tono dengan membuatkan program yang menampilkan bilangan tertentu pada deret Fibonacci
sesuai dengan urutan yang diinputkan user. Yang perlu diingat, berikut ini adalah bentuk deret
Fibonacci. 1 1 2 3 5 8 13 21 34 ... n
Bilangan fibonacci adalah bilangan yang berasal dari penjumlahan 2 bilangan sebelumnya.
Secara iteratif dapat dibuat program sebagai berikut:
1 def fibo(n):
2 f1,f2=1,1
3 print(f1,", ",f2,", ",end='')
4 for i in range(2,n):
5 fib = f1+f2
6 f1 = f2
7 f2 = fib
8 print(fib,", ",end='')
9
10 fibo(7)
Output adalah: 1, 1, 2, 3, 5, 8, 13
Secara rekursif rumus fibonacci adalah:
1 def fibo(n):
2 if n==1 or n==2:
3 return 1
4 else:
5 return fibo(n-1) + fibo(n-2)
6
7 print(fibo(7))
Hasil adalah 13
Untuk bisa menyelesaikan masalah ini, anda harus tahu cara mengkonversi basis bilangan dari basis
10 ke basis tertentu. Misalnya diketahui angka adalah 7 dalam basis 10, untuk konversi ke basis 2
dilakukan cara seperti pada gambar 13.6
Sedangkan cara konversi ke basis 8 dilakukan sesuai gambar 13.7
Sedangkan cara konversi ke basis 16 dilakukan sesuai gambar 13.8
Program yang dibuat dapat ditulis secara rekursif sebagai berikut:
1 def toBasis(n,base):
2 convertString = "0123456789ABCDEF"
3 if n < base:
4 return convertString[n]
5 else:
Gambar 13.7: Desimal ke Oktal
Contoh Output:
Bilangan : 9
Basis : 8
11
Penjelasan:
• Program di atas dimulai dengan memasukkan parameter bilangan dan basisnya dalam integer
• Program akan menyiapkan string yang berisi angka seluruh basis bilangan, dari 0-9, A-F.
• Program akan memeriksa apakah n < basis, jika iya maka kembalikan posisi string[n]
• Program akan menjalankan rekursif case dengan cara membagi bilangan / basis dan ditam-
bahkan (dijejerkan) dengan string[n%basis]
Gambar 13.8: Desimal ke Hexa
Latihan 13.2 Buatlah fungsi rekursif mengetahui suatu kalimat adalah palindrom atau bukan!
Latihan 13.3 Buatlah fungsi rekursif untuk menghitung jumlah deret ganjil dari 1 + 3 + 7 + . . .
+ n!
Latihan 13.4 Buatlah fungsi rekursif untuk mengetahui jumlah digit dari suatu bilangan. Seperti
misalnya tulisan: "234" maka jumlah digitnya adalah 2+3+4 = 9!
14.3 Materi
14.3.1 Pengantar Regex
Pada bab String, kita sudah sedikit memperlajari mengenai teknik-teknik pengaksesan string,
manipulasi string, dan berbagai kasus-kasus pengolahan string lainnya, termasuk string yang
terdapat pada file. Dari pengalaman tersebut dapat dilihat bahwa kita cukup kesulitan untuk
melakukan pengolahan string dengan teknik biasa / standar. Terdapat teknik pengolahan string
yang lebih mudah dan cepat dengan menggunakan bantuan regular expression.
Regular expression adalah ekspresi pola yang berbentuk kumpulan karakter yang digunakan
untuk menemukan pola (pattern) yang sama dengan pola regex di dalam string lain yang ingin
dicari. Regex membantu kita dalam pencarian string dengan pola tertentu, mengganti string dengan
pola tertentu, dan menghapus string dengan pola tertentu. Intinya regex membantu dalam parsing
string yang selama ini biasanya hanya menggunakan perintah split() dan find() saja.
Regex sangat powerful dalam searching dan extracting pola namun memiliki pola yang cukup
rumit. Tidak semua bahasa pemrograman mendukung regular expression library. Python merupakan
salah satu bahasa yang mendukung library regex dengan cara import re. Salah satu fungsi yang
paling mudah digunakan dari library re adalah search().
Dengan menggunakn file mbox-short.txt, kita akan mencoba menampilkan semua string pada
file tersebut yang mengandung pola "From: ".
1 import re
2 handle=open('mbox-short.txt')
3 count = 0
4 for line in handle:
5 line=line.rstrip()
6 if re.search('From:', line):
7 count += 1
8 print(line)
9 print("Count: ",count)
Dari kode di atas kita dapat melihat bahwa re.search bisa saja diganti dengan menggunakan
perintah find() pada string biasa. Pola pada contoh di atas belum menggunakan kemampuan regex
yang seutuhnya.
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
Jumlah: 27
Jika diinginkan mencari baris yang diawali dengan pola "From", maka kita harus mengubah
parameter fungsi search pada re.search menjadi re.search("F̂rom").
1 import re
2 handle=open('mbox-short.txt')
3 count = 0
4 for line in handle:
5 line=line.rstrip()
6 if re.search('^From:', line):
7 count += 1
8 print(line)
9 print("Count: ",count)
14.3.2 Meta Character, Escaped Character, Set of Character, dan Fungsi Regex pada
Libary Python
Sebelum menggunakan fungsi regex perlu diketahui terlebih dahulu meta character / special
character dan kegunaannya pada pola regex seperti pada tabel 14.1
Pada Python terdapat beberapa special character (espcaped characters) seperti pada tabel 14.2
Pada Python terdapat beberapa penggunaan himpunan character dengan menggunakan simbol [],
pada tabel 14.3
Pada Python terdapat 4 buah fungsi yang bisa dipakai untuk menggunakan Regex seperti pada tabel
14.4
1 import re
2
3 txt = "Sang mata-mata sedang memata-matai kasus kaca mata di toko Matahari"
4 x = re.findall("mata", txt)
5 y = re.findall("saya", txt)
6 for i in x:
7 print(i)
8
9 if (y):
10 print("Ada yang cocok!")
Tabel 14.1: Special Character pada Python
Karakter Kegunaan Contoh Arti Contoh
[] Kumpulan karakter "[a-zA-Z]" 1 karakter antara a-z kecil atau
A-Z besar
\{} Karakter dengan arti khu- \{}d Angka / digit
sus dan escaped character
. Karakter apapun kecuali say.n. Tidak bisa diganti dengan karak-
newline ter apapun, misal "sayang" akan
valid
ˆ Diawali dengan ˆFrom Diawali dengan From
$ Dakhiri dengan this$ Diakhiri dengan kata this
* 0 s/d tak terhingga karak- \{}d* ada digit minimal 0 maksimal tak
ter terhingga
? ada atau tidak (opsional) \{}d? Boleh ada atau tidak ada digit se-
banyak
+ 1 s/d tak terhingga karak- \{}d+ Minimal 1 s/d tak terhingga ka-
ter rakter
{} Tepat sebanyak yang ada \{}d{2} Ada tepat 2 digit
para {}
() Pengelompokan karakter / (saya|kamu) saya atau kamu sebagai satu ke-
pola satuan
| atau \{}d|\{}s 1 digit atau 1 spasi
11 else:
12 print("Tidak ada yang cocok!")
Tabel 14.3: Himpunan Karakter pada Regex
[abc] Mencari pola 1 huruf a, atau b, atau c
[a-c] Mencari pola 1 huruf a s/d c
[ˆbmx] Mencari pola 1 huruf yang bukan b,m, atau x
[012] Mencari pola 1 huruf 0, atau 1, atau 2
[0-3] Mencari pola 1 huruf 0 s/d 3
[0-2][1-3] Mencari pola 2 huruf: 01, 02, 03, 11, 12, 13, 21, 22,
23
[a-zA-Z] Mencari pola 1 huruf a-Z
Hasil:
# Perhatikan bagian Matahari tidak muncul karena Matahari menggunakan huruf besar
1 import re
2 handle=open('mbox-short.txt')
3 for line in handle:
4 line=line.rstrip()
5 x=re.findall('\S+@\S+', line)
6 if len(x)>0:
7 print(x)
Hasil:
['[email protected]']
['<[email protected]>']
['<[email protected]>']
['<[email protected]>;']
['<[email protected]>;']
['<[email protected]>;']
['apache@localhost)']
['[email protected];']
['[email protected]']
['[email protected]']
....dst
# Ada beberapa format email yang tidak sesuai format, seperti mengandung karakter <, sehingga
kita perlu mengganti format regex nya menjadi: [a-zA-Z0-9]§*@§*[a-zA-Z. Silahkan ubah
dibagian baris ke-5.
1 import re
2
3 txt = "Sang mata-mata sedang memata-matai kasus kaca mata di toko Matahari"
4 x = re.search("\s", txt)
5 y = re.search("saya", txt)
6
Hasil:
4
None
Contoh lain fungsi search: Pada mbox kita ingin menemukan kata-kata:
X-DSPAM-Confidence: 0.847
5X-DSPAM-Probability: 0.0000
X-DSPAM-Confidence: 0.6178
X-DSPAM-Probability: 0.0000
Untuk melakukannya dapat digunakan regex: X̂-.*: [0-9.]+
1 import re
2 handle=open('mbox-short.txt')
3 for line in handle:
4 line=line.rstrip()
5 if(re.search('^X-.*: [0-9.]+', line)):
6 print(line)
Hasil:
X-DSPAM-Confidence: 0.8475
X-DSPAM-Probability: 0.0000
X-DSPAM-Confidence: 0.6178
X-DSPAM-Probability: 0.0000
X-DSPAM-Confidence: 0.6961
X-DSPAM-Probability: 0.0000
X-DSPAM-Confidence: 0.7565
X-DSPAM-Probability: 0.0000
dst...
14.4.3 Penggunaan split
Kita akan mencoba penggunaan fungsi split untuk memecah string sebagai berikut:
1 import re
2
Hasil:
['The','rain','in','Spain']
['The','rain in Spain']
1 import re
2
3 txt = "Sang mata-mata sedang memata-matai kasus kaca mata di toko Matahari"
4 x = re.sub("\s", "-", txt) #mengganti spasi dengan -
5 print(x)
6 y = re.sub("\s", "*", txt, 2) #mengganti spasi dengan * 2 saja
7 print(y)
Hasil:
Sang-mata-mata-sedang-memata-matai-kasus-kaca-mata-di toko-Matahari
Sang*mata-mata*sedang memata-matai kasus kaca mata di toko Matahari
[1] Severance, C.R. (2016) Python for Everybody. CreateSpace Independent Publishing
Platform
[2] Rachmat, A. (2011) Algoritma dan Pemrograman dengan Bahasa C. Penerbit Andi,
Yogyakarta
Indeks
A J
Anaconda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
K
B
keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
komentar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
L
C
Lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
C.......................................2 List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Logo Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
D
O
Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Operator dan Operand . . . . . . . . . . . . . . . . . . . 22
E
P
Ekspresi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Parsing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
F Percabangan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Percabangan Kompleks . . . . . . . . . . . . . . . . . . 65
File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Perulangan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Perulangan Bertingkat . . . . . . . . . . . . . . . . . . . 73
I Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
pustaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Interpreter Python . . . . . . . . . . . . . . . . . . . . . . . . 6 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
R
Regex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Rekursif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Tuple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
variabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
volatile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90