Dasar Dasar Python
Dasar Dasar Python
Argument
Bilangan Kompleks
Class
Class Variable
Dictionary
Duck Typing
Sebuah konsep, tipe atau kelas dari sebuah objek tidak lebih penting
daripada metode yang menjadi perilakunya.
Dynamic Typing
Konsep dalam bahasa pemrograman yang hanya mengetahui tipe variabel
saat program berjalan dan dilakukan assignment.
Expression
Function
Immutable
Inheritance
List
List atau urutan adalah tipe data bawaan pada Python yang digunakan
untuk menyimpan kumpulan data atau item. List ditulis menggunakan
kurung siku.
Method
Mutable
Parameter
Set
Daftar Referensi
[1] Python 3.8.8 Documentation. Tersedia: tautan.
Pengenalan Python
Python adalah bahasa pemrograman multifungsi yang dibuat oleh
Guido van Rossum dan dirilis pada tahun 1991. GvR, begitu ia
biasa disebut di komunitas Python, menciptakan Python untuk
menjadi interpreter yang memiliki kemampuan penanganan
kesalahan (exception handling) dan mengutamakan sintaksis yang
mudah dibaca serta dimengerti (readability). Didesain untuk
memudahkan dalam prototyping, Python menjadi bahasa yang
sangat mudah dipahami dan fleksibel.
http://docs.python.org/release/3.0.1/whatsnew/3.0.html .
Versi terbaru Python pada saat pembaruan modul ini adalah 3.8
yang dirilis pada 14 Oktober 2019. Pada saat tulisan ini dibuat,
Python 3.9 sedang dikembangkan dan berstatus 3.9.0 alpha 1.
Sejarah / Overview
Mengapa Python
Efektivitas Python cukup terbukti dengan banyaknya jumlah
pengguna Bahasa Pemrograman ini. Berbagai survei memasukkan
Python dalam top-3 sebagai bahasa dengan penggunaan
terbanyak, bersaing dengan Java dan PHP. Python dapat
digunakan dalam mengakomodasi berbagai gaya pemrograman,
termasuk structured, prosedural, berorientasi-objek, maupun
fungsional. Python juga dapat berjalan pada berbagai sistem
operasi yang tersedia. Beberapa pemanfaatan bahasa Python di
antaranya:
Saat ini, Python juga menjadi salah satu bahasa pilihan untuk
masuk ke dunia Data Science. Tiga hal utama pada Data Science -
machine learning, data analysis, dan data visualization banyak
disediakan berbasis Python. Sejumlah pustaka paling banyak
digunakan dalam machine learning berbasis Python, misalnya:
Scikit-Learn, Tensorflow, dan PyTorch.
1. python --version
atau
1. python3 --version
Jika telah terinstal, maka akan tampil versi Python yang terinstal
sebagai berikut (Klik tab pada tabel untuk melihat tampilan di
masing-masing sistem operasi).
Semua contoh dan tutorial pada kelas ini akan menggunakan versi
3.7.3 atau lebih tinggi. Python versi terbaru dapat diakses
di https://www.python.org/downloads/. Apabila pada komputer
anda terinstal Python 2.x, Anda umumnya dapat menginstal versi
3.x secara berdampingan tanpa mengubah konfigurasi apapun.
Untuk konfigurasi lanjut yang memungkinkan Anda menggunakan
lebih dari satu versi python secara bergantian, silakan merujuk
ke https://docs.python.org/id/3.8/library/venv.html .
Windows
Ubuntu (Update)
Mac (Update)
Jupyter
Selain itu Anda juga dapat memanfaatkan notebook lain misalnya
Jupyter atau sejenisnya. Instalasi Jupyter Notebook dapat
dilakukan dengan beberapa cara. Silakan ikuti panduan
di https://jupyter.readthedocs.io/en/latest/install.html untuk lebih
detailnya. Instalasi notebook ini tidak wajib. Anda juga dapat
menggunakan notebook yang bersifat gratis misalnya IBM Watson
Studio dan Google Colab.
Google Colab
Untuk mulai menggunakan Google Colab, Anda dapat langsung
mengunjungi tautan
berikut: https://colab.research.google.com/notebooks/
Pengenalan IBM Watson Studio
IBM Watson Studio adalah salah satu layanan dari IBM yang
banyak digunakan oleh analis data dan Data Scientist. Anda juga
dapat menjalankan kode secara online pada layanan seperti IBM
Watson Studio tanpa perlu meng-install perangkat lunak apapun
pada komputer Anda. Berikut adalah tutorial bagaimana
menggunakan Notebook pada Watson Studio untuk menulis dan
menjalankan kode Python.
Interactive
Berbeda dengan bahasa pemrograman lainnya, bahasa Python
yang berbasis interpreter memungkinkan kita untuk menjalankan
perintah secara interaktif. Mode ini dapat diakses di bagian bawah
PyCharm atau dengan memanggil perintah python di command
prompt/terminal.
InteractiveExample: Print
Script
RunnableExample: Print
Notebook
Alternatif
Watson Studio
Glot.io
Repl.it
Anda dapat menggunakan yang mana saja dalam proses
pembelajaran ini. Di industri, teknik yang dipilih adalah yang paling
efisien (misalnya untuk research, kebanyakan menggunakan
notebook), sementara untuk backend atau infrastructure
management, dipilih script.
Indentasi
1. Statement tingkat 1:
Baris Lanjutan
Disarankan:
1. # Opsi 1
4. var_three, var_four)
5.
6. # Opsi 2
7. # Tambahkan indentasi ekstra - (level indentasi baru) untuk memisahkan
8. def long_function_name(
10. var_four):
11. print(var_one)
12.
13. # Opsi 3
Tidak Disarankan:
1. # Contoh kesalahan 1
5.
6. # Contoh kesalahan 2
8. def long_function_name(
10. var_four):
11. print(var_one)
2. foo = long_function_name(
3. var_one, var_two,
4. var_three, var_four)
Kondisional (If)
Bagian ini hanya memberikan gambaran mengenai standar
penulisan, pembahasan mengenai kondisional ada di modul
Percabangan.
4. lakukanSesuatu()
5.
6. # Tambahkan komentar
10. lakukanSesuatu()
11.
15. lakukanSesuatu()
Kurung/Siku Penutup
1. my_list = [
2. 1, 2, 3,
3. 4, 5, 6,
4. ]
5.
6. result = some_function_that_takes_arguments(
1. my_list = [
2. 1, 2, 3,
3. 4, 5, 6,
4. ]
5.
6. result = some_function_that_takes_arguments(
9. )
3. file_2.write(file_1.read())
1. income = (gross_wages +
2. taxable_interest +
3. (dividends - qualified_dividends) -
4. ira_deduction -
5. student_loan_interest)
1. income = (gross_wages
2. + taxable_interest
3. + (dividends - qualified_dividends)
4. - ira_deduction
5. - student_loan_interest)
Baris Kosong
File Encoding
Import
1. Yes: import os
2. import sys
3.
1. Standard Library
2. Library Pihak Ketiga
3. Local/Library spesifik
1. import mypkg.sibling
1. import myclass
2. import foo.bar.yourclass
Tanda Petik
Petik tunggal (‘) dan petik ganda (“) dianggap sama oleh Python,
dan tidak memiliki preferensi khusus untuk penggunaannya. Hal
ini dikarenakan ada kemungkinan string yang memuat salah
satunya. Anda disarankan untuk menggunakan salah satunya
secara konsisten.
1. Yes: if x == 4: print x, y; x, y = y, x
1. Yes:
4. ham[lower+offset : upper+offset]
5. ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
7.
8. No:
1. Yes: spam(1)
1. Yes:
2. x = 1
3. y = 2
4. long_variable = 3
5.
6. No:
7. x = 1
8. y = 2
9. long_variable = 3
Rekomendasi Lainnya
1. Assignment (=),
2. Augmented assignment (+=, -=etc.),
3. Comparisons (==, <, >, !=, <>, <=, >=, in, not in, is, is not),
4. Booleans (and, or, not).
1. Yes:
2. i = i + 1
3. submitted += 1
4. x = x*2 - 1
6. c = (a+b) * (a-b)
7.
8. No:
9. i=i+1
11. x = x * 2 - 1
12. hypot2 = x * x + y * y
13. c = (a + b) * (a - b)
Komentar
Dalam sebuah kode Python, Anda diajak untuk memastikan kode
Anda terbaca oleh programmer lain. Salah satu caranya adalah
dengan menggunakan fitur komentar untuk memberitahu fungsi
atau informasi lain terkait kode Anda. Pastikan komentar Anda ter-
update dan tidak mengalami kontradiksi dengan kode yang ada.
Blok Komentar
Blok komentar umumnya digunakan untuk menjelaskan fungsi
utuh atau sub-fungsi yang mengikuti/berada di bawahnya. Blok
komentar diindentasi setara dengan kode yang dijelaskan. Setiap
barisnya diawali dengan # dan sebuah spasi serta setiap
paragrafnya dimulai pada baris baru.
Komentar Inline
Komentar Inline pada Python umumnya diletakkan pada baris
yang sama dengan kode. Umumnya dipisahkan dan dirapikan
dengan jarak dua spasi dari kode yang dimaksud, diawali # dan
sebuah spasi. Komentar inline dapat juga digunakan di atas baris
yang ingin diberikan komentar, agar tidak mengurangi jumlah
karakter yang dapat dituliskan dalam sebuah baris. Untuk semua
jenis komentar, jangan menuliskan komentar untuk hal yang
sudah langsung dapat dibaca dari kodenya, seperti contoh berikut:
Tidak disarankan:
1. x = x + 1 # Tambahkan x
Disarankan (kontekstual):
Dokumentasi
1. """Return a foobang
3. """
Untuk docstring satu baris, Anda disarankan untuk meletakkan
penutup """ - nya pada baris yang sama.
Numbers
1. a = 10
3. b = 1.7
5. c = 1+3j
6. print(c, " Bertipe bilangan kompleks? ", isinstance(1+3j,complex))
Output seharusnya:
2. x[1]=1; #x[1]=1
3.
4. for j in range(2,10001):
5. x[j]=x[j-1]+x[j-2] # Fibonacci
6. print(x[10000])
Output:
1. 3364476487643178326662161200510754331030214846068006390656476997468008
1442166662368155595513633734025582065332680836159373734790483865268263
0408924630564318873545443695598274916066020998841839338646527313000888
3026923567361313511757929743785441375213052050434770160226475831890652
7890855154366159582987279682987510631200575428783453215515103870818298
9697916131278562650331954871402142875326981879620469360978799003509623
0229102636813149319527563022783762844154036058440257211433496118002309
1208287046088923962328835461505776583271252546093591128203925285393434
6209042452489294039017062338889910858410651831733604374707379085526317
6432573399371287193758774689747992630583706574283016163740896917842637
8624212835258112820516370298089332099905707920064367426202389783111470
0540749984592503606335609338838319233867830561364353518921332797329081
3373264265263398976392272340788292817795358057099369104917547080893184
1056146322338217465637321248226383092103297701648054726243842374862411
4530938122065649140327510866433945175121615265453613331113140424368548
0510676584349352383695965342807176877532834823434555736671973139274627
3629108210679280784718035329131176778924659089938635459327894523777674
4061922403376386740040213303432974969020283281459334188268176838930720
0363479562311710310129195316979460763273758925353077255237594378843450
4067715555779056450443016640119462580972216729758615026968443146952034
6149322911059706762432685159928347098912847067408620085871350162603120
7190317208609408129832158107728207635318662461127824553720853236530577
5956430072517744315051539600905168603220349163222640885248852433158051
5348496224348482993809050704834824493274537326245677558790891871908036
6205800959474315005240253270974699531877072437682590741993963226598414
7498193609285223945039707165443156421328157688908058783183404917434556
2705202235648464951961124602683139709750693826487066132645076650746115
1267752274862159864253071129844118262266105716351506926002986170494542
5047491378115154139941550671256271197133252763631939606902895650288268
608362241082050562430701794976171121233066073310059947366875
1. b = 0.1234567890123456789
2. print(b)
Output:
0.12345678901234568
1. a = 1234567890123456789
2. print(a)
Output:
1234567890123456789
1. c = 1+5j
2. print(c)
Output:
(1+5j)
Strings
Bool/Boolean
Ada fungsi bawaan bool() yang dapat mengubah nilai menjadi nilai
Boolean, apabila nilai tersebut dapat direpresentasikan sebagai
nilai kebenaran (truth values).
Nilai kebenaran adalah sebuah nilai yang dapat diuji sebagai benar
atau salah, untuk digunakan di sintaksis kondisi if atau while atau
sebagai operan dari operasi Boolean.
Operasi Boolean
Operasi dan fungsi bawaan yang memiliki hasil Boolean akan
selalu mengembalikan 0 atau False untuk yang bernilai salah,
serta 1 atau True untuk yang bernilai benar, kecuali dinyatakan
berbeda dalam dokumentasi.
List
List adalah jenis kumpulan data terurut (ordered sequence), dan merupakan salah satu
variabel yang sering digunakan pada Python. Serupa, namun tak sama dengan array
pada bahasa pemrograman lainnya. Bedanya, elemen List pada Python tidak harus
memiliki tipe data yang sama. Mendeklarasikan List cukup mudah dengan kurung siku
dan elemen yang dipisahkan dengan koma.
Setiap data di dalamnya dapat diakses dengan indeks yang dimulai dari 0.
Python mengenal slicing operator [] yang dapat melakukan ekstraksi sebuah item atau
beberapa item yang berada dalam range tertentu pada tipe data urutan (sequences),
misalnya list, string dan tuple. Beberapa tipe urutan juga mendukung "extended slicing"
dengan parameter ketiga berupa "step".
1. x = [5,10,15,20,25,30,35,40]
2. print(x[5])
3. print(x[-1])
4. print(x[3:5])
5. print(x[:5])
6. print(x[-3:])
7. print(x[1:7:2])
Output:
30
40
[20, 25]
[5, 10, 15, 20, 25]
[30, 35, 40]
[10, 20, 30]
Elemen pada list dapat diubah atau ditambahkan. Misalnya untuk melakukan perubahan
kemudian penambahan:
1. x = [1,2,3]
2. x[2]=4
3. print (x)
Output:
[1, 2, 4]
1. x = [1,2,3]
2. x[2]=4
3. x.append(5)
4. print(x)
Output:
[1, 2, 4, 5]
Untuk menghapus item pada list, gunakan fungsi del. Ingat bahwa Indeks Python
dimulai dari 0:
2. del binatang[2]
3. print(binatang)
Output:
2. print(binatang)
['kucing', 'rusa']
1. s = "Hello World!"
5. s = "Halo Dunia!" #ubah isi string s menjadi "Halo Dunia!", seharusnya berhasil
karena mutable
6. print (s)
Output:
'o'
'World'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
'Halo Dunia!'
Tuple
Tuple adalah jenis dari list yang tidak dapat diubah elemennya. Umumnya tuple
digunakan untuk data yang bersifat sekali tulis, dan dapat dieksekusi lebih cepat. Tuple
didefinisikan dengan kurung dan elemen yang dipisahkan dengan koma.
1. t = (5,'program', 1+3j)
Seperti list, kita dapat melakukan slicing, namun pada tuple kita tidak dapat melakukan
perubahan:
1. t = (5,'program', 1+3j)
2. print(t[1])
3. print(t[0:3])
4. print(t[0]=10)
Output:
'program'
(5, 'program', (1+3j))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
Set
Set adalah kumpulan item bersifat unik dan tanpa urutan (unordered collection).
Didefinisikan dengan kurawal dan elemennya dipisahkan dengan koma. Pada Set kita
dapat melakukan union dan intersection, sekaligus otomatis melakukan penghapusan
data duplikat.
1. a = {1,2,2,3,3,3}
2. print(a)
Output:
{1, 2, 3}
Karena set bersifat unordered, maka kita tidak bisa mengambil sebagian data / elemen
datanya menggunakan proses slicing.
1. a = {1,2,3}
2. print(a[1])
Output:
Dictionary
Dictionary pada Python adalah kumpulan pasangan kunci-nilai (pair of key-value) yang
bersifat tidak berurutan. Dictionary dapat digunakan untuk menyimpan data kecil
hingga besar. Untuk mengakses datanya, kita harus mengetahui kuncinya (key). Pada
Python, dictionary didefinisikan dengan kurawal dan tambahan definisi berikut:
1. d = {1:'value','key':2}
2. print(type(d))
Output:
<class 'dict'>
1. d = {1:'value','key':2}
2. print(type(d))
3. print("d[1] = ", d[1]);
Output:
<class 'dict'>
d[1] = value
d['key'] = 2
Dictionary bukan termasuk dalam implementasi urutan (sequences), sehingga tidak bisa
dipanggil dengan urutan indeks. Misalnya dalam contoh berikut dicoba dengan indeks
2, tetapi menghasilkan error (KeyError) karena tidak ada kunci (key) 2:
1. d = {1:'value','key':2}
2. print(type(d))
5.
6. # Generates error
Output:
<class 'dict'>
d[1] = value
d['key'] = 2
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-7-4b566e677ca2> in <module>()
1 d = {1:'value','key':2}
----> 2 print("d[2] = ", d[2]);
KeyError: 2
Kita dapat melakukan konversi tipe data bawaan dengan menggunakan fungsi konversi
tipe bawaan (standard type) misalnya: int(), float(), str(), dll.
1. print(float(5))
Output:
5.0
Konversi float ke int akan bersifat floor/truncating atau menghilangkan nilai di belakang
koma.
1. print(int(10.6))
Output:
10
1. print(int(-10.6))
Output:
-10
1. print(float('2.5'))
Output:
2.5
1. print(str(25))
Output:
'25'
1. print(int('1p'))
Output:
Anda juga dapat melakukan konversi kumpulan data (set, list, tuple).
1. print(set([1,2,3]))
Output:
{1, 2, 3}
1. print(tuple({5,6,7}))
Output:
(5, 6, 7)
1. print(list('hello'))
Output:
['h', 'e', 'l', 'l', 'o']
List dari beberapa List yang isinya pasangan nilai menjadi Dictionary.
Serta konversi List dari beberapa Tuple yang isinya pasangan nilai menjadi Dictionary.
1. print(dict([[1,2],[3,4]]))
Output:
{1: 2, 3: 4}
1. print(dict([(3,26),(4,44)]))
Output:
Setelah sebelumnya mempelajari tipe data, selanjutnya Anda akan belajar tentang
variabel. Variabel adalah sebuah tempat (di memori komputer) untuk menyimpan nilai
dengan tipe data tertentu.
Untuk memberikan nilai pada sebuah variabel, kita menggunakan operator "=", antara
nama variabel dengan nilai yang ingin disimpan.
Misalnya: x = 1.
Seperti dicontohkan dalam beberapa sample code sebelumnya, fungsi print() adalah cara
output langsung ke konsol/layar.
1. print("Hello, World!")
Output:
Hello, World!
Untuk memasukkan nilai variabel pada string, Python memiliki dua cara. Cara yang
pertama adalah langsung menggabungkan variabel pada statement print().
1. x = 100
2. print('Nilai x adalah', x)
Output:
1. print('hai {}'.format('bro'))
Cara yang kedua mirip dengan sintaks C/C++, yakni menggunakan operator “%” yang
ditambahkan dengan "argument specifiers", misalnya "%s" and "%d". Contohnya saat
kita ingin menambahkan nama kita pada string hello:
1. nama = "Dicoding"
Halo, Dicoding!
1. nama = "Dicoding"
2. umur = 5
Output:
Output:
1. %s - String
2. %d - Integers
3. %f - Bilangan Desimal
1. a, b = 10, 11
2. a, b
Output:
(10, 11)
a: a and b: B
https://docs.python.org/id/3.8/library/string.html#format-specification-mini-language
Input
input()
Untuk memungkinkan user memberikan input pada program Anda, gunakan fungsi
input(), dengan argumen dalam kurung () adalah teks yang ingin ditampilkan (prompt)
dan variabel sebelum tanda sama dengan (=) adalah penampung hasil dari input
pengguna:
Output:
Masukkan angka : 90
1. print(nilai)
Output:
'90'
Secara default, input dari user adalah string (walaupun pada contoh di atas, 90
sebenarnya dimaksudkan sebagai integer) yang ditandai dengan petik. Untuk itu
diperlukan fungsi konversi yang akan dibahas pada modul-modul selanjutnya, misalnya
int() dan float().
1. print(int(nilai))
Output:
90
1. print(float(nilai))
Output:
90.0
Jika input merupakan string berisi ekspresi matematika, maka konversi dengan int() atau
float() akan menghasilkan error. Anda dapat menggunakan fungsi eval() yang sekaligus
juga berfungsi menyelesaikan ekspresi matematika. Anda akan mempelajari lebih jauh
mengenai fungsi pada modul Fungsi.
1. print(int('90+10'))
Output:
1. print(eval('90+10'))
Output:
100
Command-line arguments
Python memungkinkan Anda untuk membuat sebuah "skrip" berupa deretan kode
program kemudian disimpan dalam sebuah berkas dengan nama akhiran .py (misal:
skrip.py).
Berkas ini dapat dipanggil sebagai skrip di konsol atau command prompt, serta dapat
ditambahkan parameter tambahan saat memanggil skrip tersebut.
Hal ini difasilitasi oleh module sys yang telah dibawa secara default pada Python. Untuk
menggunakannya, jangan lupa lakukan import terlebih dahulu:
1. import sys
Utamanya fungsi yang akan digunakan adalah sys.argv yang memuat seluruh argumen
yang diterima. Anda juga dapat menggunakan len(sys.argv) untuk mengetahui
banyaknya argumen yang ditampung.
1. import sys
4. print(sys.argv[1])
Output:
Contoh:
2. x = 6
3. print(type(x))
5. x = 'hello'
6. print(type(x))
Output:
<class 'int'>
<class 'str'>
1. if False:
TypeError
3. else:
4. 9 + 1
Output:
10
1. 9 + "satu"
Output:
2. print(type(contoh))
Output:
<class 'str'>
1. contoh = 19.7
2. print(type(contoh))
Output:
<class 'float'>
“if it walks like a duck and it quacks like a duck, then it must be a duck”
Duck typing adalah sebuah konsep, tipe atau kelas dari sebuah
objek tidak lebih penting daripada metode yang menjadi
perilakunya. Duck typing ini tidak terkait langsung dengan dynamic
typing atau static typing, ini hanya memberikan keleluasaan pada
developer untuk tidak perlu mencemaskan tentang tipe atau kelas
dari sebuah objek, yang lebih penting adalah kemampuan
melakukan operasinya. Sehingga untuk memeriksa dan
mengetahui tipe sebuah objek, Anda cukup memastikan
metode/fungsi/behavior dari objek tersebut. Misalnya fungsi len()
untuk mengetahui panjang string, yang tidak berlaku pada variabel
numerik (misalnya integer).
1. x=546
2. print(len(x))
Output:
upper()
Pembahasan pertama kita mulai dari upper(). Metode upper() dapat
digunakan untuk mengonversi karakter atau string dari huruf kecil
ke huruf besar. Namun, jika huruf asalnya adalah huruf besar,
maka huruf tersebut tidak berubah. Perhatikan contoh kode di
bawah ini:
1. kata = 'dicoding'
2. kata = kata.upper()
3. print(kata)
Output:
DICODING
lower()
Selanjutnya kita akan membahas lower(). Metode ini kebalikan
dari upper() yang dapat mengonversi karakter atau string dari
huruf besar ke huruf kecil. Namun jika huruf asalnya adalah huruf
kecil, maka huruf tersebut tidak berubah.
1. kata = ‘DICODING’
2. kata = kata.lower()
3. print(kata)
Output:
dicoding
rstrip()
Metode pertama yang kita bahas dari kategori awalan dan akhiran
adalah rstrip(). Metode ini akan menghapus whitespace pada
sebelah kanan string atau akhir string. Berikut contoh penerapan
kode pada rstrip().
1. print('Dicoding '.rstrip())
Output:
Dicoding
lstrip()
Selanjutnya kita bahas tentang lstrip() yang bertugas untuk
menghapus whitespace pada sebelah kiri atau awal string. Berikut
contoh penerapan kodenya:
1. print(' Dicoding'.lstrip())
Output:
Dicoding
strip()
Metode strip() akan menghapus whitespace pada bagian awal atau
akhir string.
Output:
Dicoding
Anda juga bisa menentukan mana karakter atau bagian yang ingin
dihilangkan, misalnya:
1. kata = 'CodeCodeDicodingCodeCode'
2. print(kata.strip('Code'))
Output:
Dicoding
startswith()
Metode startswith() akan mengembalikan nilai True jika string
diawali dengan kata awalan tertentu yang kita inginkan, jika tidak
maka akan mengembalikan nilai False.
1. print('Dicoding Indonesia'.startswith('Dicoding'))
Output:
True
endswith()
Metode endswith() ini kebalikannya dari metode startswith(),
metode ini akan mengembalikan nilai True jika string diakhiri
dengan kata akhiran tertentu yang kita inginkan, jika tidak maka
akan mengembalikan nilai False.
1. print('Dicoding Indonesia'.endswith('Indonesia'))
Output:
True
join()
Metode join() adalah metode yang dipakai untuk menggabungkan
sejumlah string.
Output:
Dicoding Indonesia !
Contoh lain:
'Dicoding123Indonesia123!'
split()
Sebaliknya, metode split() adalah metode yang memisahkan
substring berdasarkan delimiter tertentu (defaultnya
adalah whitespace, tab, atau newline).
Output:
1. print('Dicoding123Indonesia123!'.split('123'))
Output:
1. print('''Halo,
2. aku ikan,
Output:
['Halo,', 'aku ikan,', 'aku suka sekali menyelam', 'aku tinggal di perairan.', 'Badanku licin dan renangku cep
berkenalan denganmu.']
Kali ini kita masuk dalam kategori mengganti elemen string yang di
dalamnya terdapat metode replace(). Seperti apakah contoh kode
dari metode replace()? Yuk, simak penjelasannya di bawah ini.
replace()
Metode replace() dapat mengembalikan string baru dalam kondisi
substring telah tergantikan dengan parameter yang dimasukkan.
Berikut contoh kodenya.
2. print(string.replace("Coding", "Pemrograman"))
Output:
1. string = "Ayo belajar Coding di Dicoding karena Coding adalah bahasa masa depan"
Output:
Ayo belajar Pemrograman di Dicoding karena Coding adalah bahasa masa depan
Pengecekan String
isupper()
Metode isupper() akan mengembalikan nilai True jika semua huruf
dalam string adalah huruf besar, dan akan mengembalikan
nilai False jika terdapat satu saja huruf kecil di dalam string
tersebut.
1. kata = ‘DICODING’
2. kata.isupper()
Output:
True
1. kata = ‘Dicoding’
2. kata.isupper()
Output:
False
islower()
Metode islower() adalah kebalikan dari metode isupper(), metode
ini akan mengembalikan nilai True jika semua huruf dalam string
adalah huruf kecil, dan akan mengembalikan nilai False jika
terdapat satu saja huruf besar di dalam string tersebut.
1. kata = ‘dicoding’
2. kata.islower()
Output:
True
1. kata = ‘Dicoding’
2. kata.islower()
Output:
False
Contoh:
1. print('Dicoding'.upper().lower())
2. print('Dicoding'.lower().upper())
3. print('DICODING'.upper().lower().islower())
4. print('DICODING'.upper().lower().isupper())
Output:
‘dicoding’
‘DICODING’
True
False
isalpha()
Metode ini akan mengembalikan nilai True jika semua karakter
dalam string adalah huruf alfabet, jika tidak maka akan
mengembalikan nilai False.
1. ‘dicoding’.isalpha()
Output :
True
isalnum()
Metode ini akan mengembalikan nilai True jika karakter dalam
string adalah alfanumerik yaitu hanya huruf atau hanya angka atau
berisi keduanya, jika tidak maka akan mengembalikan nilai False.
1. ‘dicoding123’.isalnum()
Output :
True
isdecimal()
Metode ini akan mengembalikan nilai True jika karakter dalam
string berisi hanya angka/numerik, jika tidak maka akan
mengembalikan nilai False.
1. ‘12345’.isdecimal()
Output :
True
isspace()
Metode ini akan mengembalikan nilai True jika string berisi hanya
karakter whitespace, seperti spasi, tab, newline, atau
karakter whitespaces lainnya, jika tidak maka akan mengembalikan
nilai False.
1. ‘ ’.isspace()
Output :
True
istitle()
Metode ini akan mengembalikan True jika string berisi huruf
kapital di setiap kata dan dilanjutkan dengan huruf kecil
seterusnya, jika tidak maka akan mengembalikan nilai False.
1. ‘Dicoding Indonesia’.istitle()
Output :
True
Buatlah file baru pada notepad atau IDE, dan pastikan Anda
menggunakan Python 3 untuk mencobanya (akan ada error saat
menggunakan Python 2.7).
1. while True:
2. print('Masukkan nama Anda:')
3. name = input()
4. if name.isalpha():
5. print("Halo", name)
6. break
Output:
dicoding123
dicoding
Halo dicoding
Dengan cara ini, Anda dapat melakukan validasi input user. Anda
bisa bereksplorasi lebih lanjut dengan menambahkan
metode isdecimal(), isalnum(), istitle(), dan lain lain.
Kategori terakhir yang akan kita bahas pada modul kali ini
adalah formatting pada string. Dalam kategori ini terdapat
beberapa metode yaitu zfill(), rjust(), ljust(), center(), dll. Semua
metode yang akan dijelaskan secara detail di bawah ini, simak
baik-baik ya.
zfill()
Selain metode-metode yang telah kita pelajari di atas, ada juga
metode yang dapat menambahkan nilai numerik berupa 0 di
sebelah kiri sebuah angka atau string menggunakan metode zfill().
Penggunaan metode zfill() ini bisa diterapkan untuk nomor nota
atau nomor antrian. Anda akan menemui kebutuhan untuk
menambahkan awalan 0 misalnya seperti, 0001 untuk angka
awalan 1, 0101 untuk angka awalan 101, dan sebagainya.
Penerapan zfill pada Angka
Jika kita ingin menerapkan zfill pada data berupa angka, maka kita
harus mengonversinya terlebih dahulu ke dalam bentuk string
menggunakan str() seperti di bawah ini:
2. angka = 5
3. print (str(angka).zfill(5));
5. angka = 300
6. print (str(angka).zfill(5));
8. angka = -0.45
9. print (str(angka).zfill(5));
10. # Contoh 4: Penggunaan zfill 7 pada angka desimal negatif (memiliki koma)
00005
00300
-0.45
-000.45
Namun, bagaimana jika pada contoh ketiga nilai zfill kita ubah
menjadi 7 sehingga tertulis zfill(7). Maka semuanya akan terjawab
di contoh keempat yang menghasilkan -000.45 yang
menambahkan dua nilai ‘nol’ pada sebelah kiri data angka. Zfill
otomatis mendeteksi tanda negatif (“-”) pada sebuah nilai sehingga
otomatis nilai ‘nol’ ditempatkan setelah tanda negatif.
Penerapan zfill pada String
Lain halnya ketika data yang ingin kita tambahkan nilai 0 berupa
string. Kita tidak perlu mengonversi data tersebut ke dalam bentuk
string karena memang asalnya sudah dalam bentuk string. Untuk
memperjelas pernyataan tersebut perhatikan contoh di bawah ini.
1. # Contoh 1
2. kata = 'aku'
3. print (kata.zfill(5));
4. # Contoh 2
5. kata = 'kamu'
6. print (kata.zfill(5));
7. # Contoh 3
8. kata = 'dirinya'
9. print (kata.zfill(5));
00aku
0kamu
dirinya
Masing-masing contoh di atas menghasilkan output yang berbeda-
beda. Kita akan membahasnya satu per satu.
1. 'Dicoding'.rjust(20)
Output:
' Dicoding'
1. 'Dicoding'.ljust(20)
Output:
'Dicoding '
1. 'Dicoding'.ljust(20, '!')
Output:
'Dicoding!!!!!!!!!!!!'
center()
Metode center() seperti namanya akan membuat teks menjadi rata
tengah.
1. 'Dicoding'.center(20)
Output:
Contoh lain:
1. 'Dicoding'.center(20, '-')
Output:
'------Dicoding------'
String Literals
Umumnya, string ditulis dengan mudah di Python, diapit oleh
tanda petik tunggal. Tetapi, dalam kondisi tertentu, dibutuhkan
petik tunggal di tengah string (misalnya struktur kepemilikan
dalam Bahasa Inggris - Dicoding’s Cat atau penyebutan Jum’at
pada hari dalam bahasa Indonesia).
Apabila kita menuliskannya sebagai berikut,
1. st1 = ‘Jum’at’
1. st1 = "Jum’at"
1. st1 = 'Jum\'at'
lalu.")
Output:
Halo!
multi_line = """Halo!
Kapan terakhir kali kita bertemu?
Kita bertemu hari Jum’at yang lalu."""
print(multi_line)
Output:
Halo!
1. print(r'Dicoding\tIndonesia')
Output:
Dicoding\tIndonesia
Seharusnya, perintah \t akan membuat tab dan menghasilkan
Dicoding Indonesia, tapi karena kita menggunakan raw strings,
maka kalimat tersebut secara mentah tercetak apa adanya.
len()
Sebelumnya, Anda sudah mengetahui bahwa slicing digunakan untuk urutan. Salah satu
fungsi yang paling bermanfaat untuk List atau String adalah len() yang akan
menghitung panjang atau banyaknya elemen dari List (untuk String menjadi
menghitung jumlah karakternya).
1. contoh_list = [1, 3, 3, 5, 5, 5, 7, 7, 9]
2. print(contoh_list)
3. print(len(contoh_list))
4.
6. print(contoh_set)
7. print(len(contoh_set))
8.
10. print(contoh_string)
11. print(len(contoh_string))
1. Output:
[1, 3, 3, 5, 5, 5, 7, 7, 9]
{1, 3, 5, 7, 9}
Belajar Python
14
Selain menghitung panjang atau banyaknya elemen, Anda juga dapat mengetahui
berapa nilai minimum dan maksimum dari suatu list menggunakan fungsi min() dan
max(). Berikut contohnya.
2. print(min(angka))
3. print(max(angka))
Output:
5
96
Count
Untuk mengetahui berapa kali suatu objek muncul dalam list, Anda dapat menggunakan
fungsi count().
2. print(genap.count(6))
4. substring = "a"
5. print(string.count(substring))
Output:
Pada List juga dimungkinkan adanya penggabungan (+) dan replikasi (*).
1. angka = [2, 4, 6, 8]
4. print(gabung)
Output:
2. replikasi = learn * 2
3. print(replikasi)
Output:
['P', 'Y', 'T', 'H', 'O', 'N', 'P', 'Y', 'T', 'H', 'O', 'N']
1. tujuh = [7]*7
2. print(len(tujuh))
3. print(tujuh)
Output:
[7, 7, 7, 7, 7, 7, 7]
Range
Fungsi range() memberikan deret bilangan dengan pola tertentu. Untuk melakukan
perulangan (misalnya for) dalam mengakses elemen list, Anda dapat menggunakan
fungsi range() pada Python. Lebih detail mengenai operasi perulangan akan dibahas
pada modul Perulangan dan Kontrol Perulangan.
2. print(i)
Output:
4
2. Range dengan 2 parameter n,p: membuat deret bilangan yang dimulai dari n,
hingga sebelum p (bilangan p tidak ikut). Sering disebut sebagai inklusif n (deret
dimulai bilangan n) dan eksklusif p (deret tidak menyertakan bilangan p).
1. for i in range(1, 11):
2. print(i)
Output:
10
3. Range dengan 3 parameter n,p,q: membuat deret bilangan yang dimulai dari n,
hingga sebelum p (bilangan p tidak ikut), dengan setiap elemennya memiliki
selisih q.
1. print([_ for _ in range(0,20,5)])
Output:
in dan not in
Untuk mengetahui sebuah nilai atau objek ada dalam list, Anda dapat menggunakan
operator in dan not in. Fungsi ini akan mengembalikan nilai boolean True atau False.
Contohnya adalah sebagai berikut:
2. print('Dicoding' in kalimat)
3. print('tidak' in kalimat)
Output:
True
False
False
True
Anda kadang memiliki beberapa variabel dan perlu memberikan nilai pada variabel-
variabel tersebut. Secara konvensional, Anda bisa menandai variabel-variabel dengan
nilai yang Anda inginkan, satu per satu. Python memiliki cara yang lebih praktis! Anda
dapat memberikan nilai untuk beberapa variabel sekaligus dari
elemen List atau Tuple tanpa perlu menandai satu per satu seperti:
1. data = ['shirt', 'white', 'L']
2. apparel = data[0]
3. color = data[1]
4. size = data[2]
Tentu saja, jumlah variabel dan jumlah item pada List/Tuple harus sama. Jika tidak,
Python akan memberikan ValueError. Bagian ini hanya memberikan gambaran tentang
operasi pada List/Tuple, Anda akan mempelajari lebih jauh tentang kesalahan (Error) di
modul Penanganan Kesalahan.
Output:
<ipython-input-60-de8a162c18fd> in <module>
----> 2 apparel, color, size, price = list
Catatan : Penggunaan assignment pada multi variabel ini dapat Anda gunakan untuk
menukar nilai dua atau lebih variabel:
4. print(color)
Output:
white
shirt
Sort
Jika Anda ingin mengurutkan angka atau urutan huruf, maka Anda bisa menggunakan
metode sort(). Metode sort() ini bisa mengurutkan List. Perhatikan contoh di bawah:
Contoh:
2. angka.sort()
3. print(angka)
Output:
Contoh lain:
2. kendaraan.sort()
3. print(kendaraan)
Output:
3. print(kendaraan)
Output:
2. urutan.sort()
3. print(urutan)
Output:
Anda akan mengalami eror seperti berikut:
urutan.sort()
Bagian ini hanya memberikan gambaran tentang operasi sort, Anda akan
mempelajari lebih jauh tentang kesalahan (Error) di modul Penanganan
Kesalahan.
2. kendaraan.sort()
3. print(kendaraan)
Output:
Contoh:
5. kendaraan.sort(key=str.lower)
6. print(kendaraan)
Output:
1. print(2 + 3)
Output:
5
1. print(3 * 5)
Output:
15
Jenis-jenis operator
Simak di bawah ini beberapa operator yang ada di Python.
+ (tambah)
o Menambahkan dua objek.
o 3 + 5 menghasilkan 8
o 'a' + 'b' menghasilkan 'ab'.
- (kurang)
o Mengurangkan operand kedua dari operand pertama.
Jika hanya satu operand, diasumsikan nilai operand
pertama adalah 0.
o -5.2 adalah expression yang sama dengan 0 - 5.2
menghasilkan -5.2.
o 50 - 24 menghasilkan 26.
o Tidak berlaku untuk string, akan menghasilkan
error unsupported operand.
* (perkalian)
o Mengembalikan hasil perkalian angka atau
mengembalikan string yang diulang sejumlah tertentu.
o 2 * 3 menghasilkan 6.
o 'la' * 3 menghasilkan 'lalala'.
** (pangkat)
o Mengembalikan operand pertama pangkat operand
kedua.
o 3 ** 4 menghasilkan 81 (sama dengan 3 * 3 * 3 * 3).
/ (pembagian)
o Mengembalikan hasil pembagian operand pertama
dengan operand kedua (float).
o 13 / 3 menghasilkan 4.333333333333333.
// (pembagian habis dibagi / div)
o Mengembalikan hasil pembagian operand pertama
dengan operand kedua (bilangan bulat), kecuali jika
salah satu operand adalah float, akan menghasilkan
float.
o 13 // 3 menghasilkan 4.
o -13 // 3 menghasilkan -5.
o 9//1.81 menghasilkan 4.0.
% (modulo)
o Mengembalikan sisa bagi.
o 13 % 3 menghasilkan 1.
o -25.5 % 2.25 menghasilkan 1.5.
Operasi Bit
Perbandingan
2. hijau = 5
3. kuning = 10
Output:
Kelereng Hijau = 5
Kelereng Kuning = 10
lt(hijau, kuning): True
le(hijau, kuning): True
eq(hijau, kuning): False
ne(hijau, kuning): True
ge(hijau, kuning): False
gt(hijau, kuning): False
Boolean Operator
1. a = 2
2. a = a * 3
1. a = 2
2. a *= 3
Operator Description
lambda Lambda expression
if - else Conditional expression
or Boolean OR
and Boolean AND
Operator Description
not x Boolean NOT
in, not in, is, is not, <, <=, >, >=, !=, == Comparisons, including membership tests and identity tests
| Bitwise OR
^ Bitwise XOR
& Bitwise AND
<<, >> Shifts
+, - Addition and subtraction
*, @, /, //, % Multiplication, matrix multiplication, division, floor division, re
+x, -x, ~x Positive, negative, bitwise NOT
** Exponentiation
await x Await expression
x[index], x[index:index], x(arguments...), Subscription, slicing, call, attribute reference
x.attribute
(expressions...), [expressions...], {key: Binding or tuple display, list display, dictionary display, set disp
value...},{expressions...}
Tip: Gunakan kurung untuk memudahkan keterbacaan dan
memastikan urutan secara tepat. 2 + (3 * 4) akan lebih mudah
dibaca daripada 2 + 3 * 4, meskipun hasilnya sama
Lint
Lint adalah proses pengecekan kode atas kemungkinan terjadi
kesalahan (error), termasuk dalam proses ini adalah mengecek
kesesuaian terhadap arahan gaya penulisan kode (style guide)
PEP8. Aplikasi yang digunakan untuk proses ini disebut linter.
Integrasi linter dengan editor kode Anda akan membuat efisien
dalam menulis kode Python. Pertimbangan ini karena keluaran
dari aplikasi linter hanya berupa teks singkat berupa keterangan
dan kode Error atau Warning atau Kesalahan Konvensi Penamaan
(Naming Conventions), akan dicontohkan selanjutnya.
Pylint
Flake8
1. pycodestyle kal.py
1. pylint kal.py
1. flake8 kal.py
2. kal.py:5:5: E301 expected 1 blank line, found 0
1. """kalkulator"""
2.
3. class Kalkulator:
6. self.i = _i
7.
9.
Memformat Kode
Jika proses lint atau linting hanya melakukan pengecekan, terkait
arahan gaya penulisan kode Anda bisa menggunakan aplikasi
tambahan untuk memformat kode agar sesuai PEP8. Sehingga
untuk Anda yang menggunakan editor kode yang sangat ringan
dan ringkas fitur sekalipun, misalnya tanpa fasilitas lint, tetap bisa
menghasilkan kode sesuai konvensi PEP8.
Black
Autopep8
1. class Kalkulator:
7. return self.i - _i
1. class Kalkulator:
3.
5. self.i = _i
6.
8. return self.i + _i
9.
1. class Kalkulator:
4. self.i = _i
5.
7. return self.i + _i
8.
1. class Kalkulator:
3.
4. def __init__(self, _i=0):
5. self.i = _i
6.
8.
Statement gabungan
1. if foo == 'blah':
2. do_blah_thing()
3. do_one()
4. do_two()
5. do_three()
Tidak disarankan:
Tidak disarankan:
2. else: do_non_blah_thing()
3. try: something()
4. finally: cleanup()
Disarankan:
1. FILES = ('setup.cfg',)
Tidak disarankan:
1. FILES = 'setup.cfg',
Disarankan:
1. FILES = [
2. 'setup.cfg',
3. 'tox.ini',
4. ]
5. initialize(FILES,
6. error=True,
7. )
Tidak disarankan:
2. initialize(FILES, error=True,)
Anotasi Fungsi
1. Yes:
4.
5. No:
7. def munge()->PosInt: …
Tidak menggunakan tanda sama dengan (=) untuk
mengindikasikan keyword argumen atau nilai dasar/default pada
parameter fungsi tanpa menggunakan anotasi.
1. Yes:
4.
5. No:
1. Yes:
4.
5. No:
Prinsip Overriding
1. cariJalan()
1. aStarSearch()
Penggunaan frase atau huruf pada awal fungsi ini tidak disarankan
pada Python, atau lebih tepatnya tidak dibutuhkan, karena
struktur pada Python:
Nama Kelas
Gunakan CamelCase atau CapWords convention. Pastikan semua
akronim (misal HTTP) ditulis keseluruhan dengan huruf besar.
1. T, AnyStr, Num
Konstanta
Konstanta umumnya didefinisikan pada bagian atas modul dengan
huruf besar, misalnya MAX_OVERFLOW dan TOTAL.
Interface
Umumnya, garansi backward compatibility hanya diaplikasikan
pada interface publik. Untuk itu pengguna harus dapat
membedakan dengan jelas, interface publik dan internal/non-
publik. Interface yang didokumentasikan umumnya dianggap
sebagai interface publik, kecuali dijelaskan secara eksplisit.
Sebaliknya, setiap interface yang tidak terdokumentasi, umumnya
dianggap bersifat internal.
1. kelerengku = 10
2. if kelerengku:
4. print (kelerengku)
Output:
1. if kerelengku: hitung()
Else
Statement Else dapat dikombinasikan dengan IF Statement,
sebagai jalan keluar saat kondisi / hasil evaluasi bernilai False. Else
bersifat opsional dan tunggal. Mari kita implementasikan dalam
kasus pengecekan tinggi badan pengunjung di suatu wahana.
2. if tinggi_badan>=160:
4. else:
Output 1:
1. bilangan = 4
2. if bilangan % 2 == 0:
3. print('Bilangan {} adalah genap'.format(bilangan))
4. else:
Output:
2. if nilai>80:
4. print("Pertahankan!")
5. elif nilai>70:
7. print("Tingkatkan!")
8. elif nilai>60:
11. else:
Output 1:
if nilai>80: if nilai>0:
print("Selamat! Anda mendapat nilai A") print("Selamat! Anda mendapat nilai A")
print("Pertahankan!") print("Pertahankan!")
elif nilai>70: elif nilai<80:
print("Hore! Anda mendapat nilai B") print("Hore! Anda mendapat nilai B")
print("Tingkatkan!") print("Tingkatkan!")
elif nilai>60: elif nilai<70:
print("Hmm.. Anda mendapat nilai C") print("Hmm.. Anda mendapat nilai C")
print("Ayo semangat!") print("Ayo semangat!")
else: else:
print("Waduh, Anda mendapat nilai D") print("Waduh, Anda mendapat nilai D")
print("Yuk belajar lebih giat lagi!") print("Yuk belajar lebih giat lagi!")
1. bilangan = -3
2. if bilangan > 0:
3. print('Bilangan {} adalah positif'.format(bilangan))
6. else:
Output:
Ternary Operators
Ternary operator lebih dikenal sebagai conditional expressions
pada Python. Operator menentukan sesuatu berdasarkan kondisi
True atau False. Jika statement atau klausa if Anda cukup
sederhana, maka ternary Operators akan sangat membantu.
IF Ternary
if (condition): condition_if_true if condition else condition_if_false
condition_if_true
else:
condition_if_false
lulus = True lulus = True
if (lulus): kata = "selamat" if lulus else "perbaiki"
kata = ”selamat”
else:
kata = “perbaiki”
Opsi lain dari ternary operators melibatkan tuples. Contoh
kodenya berikut:
IF Ternary_Tuples
if (condition): (condition_if_false, condition_if_true)[condition]
condition_if_true
else:
condition_if_false
lulus = True nice = True
if (lulus): kata= ("perbaiki", "selamat")[lulus]
kata=”selamat”
else:
kata=“perbaiki”
Pada tuple ini, dimanfaatkan nilai [0] sebagai False dan [1] sebagai
True.
1. kondisi = True
3. #Output is 2
4.
5. print((1/0, 2)[kondisi])
1. hasil = None
3. print(pesan)
Output:
Perulangan
For
2. print('Huruf: {}'.format(huruf))
3.
6. print('Flower: {}'.format(flower))
Output:
Huruf : D
Huruf : i
Huruf : c
Huruf : o
Huruf : d
Huruf : i
Huruf : n
Huruf : g
Flower: mawar
Flower: melati
Flower: anggrek
Output:
Flower : mawar
Flower : melati
Flower : anggrek
While
Contoh:
1. count = 0
4. count = count + 1
Output:
Hitungannya adalah: 0
Hitungannya adalah: 1
Hitungannya adalah: 2
Hitungannya adalah: 3
Hitungannya adalah: 4
Hitungannya adalah: 5
Hitungannya adalah: 6
1. var = 1
5.
6.
Potongan kode di atas tidak akan pernah bernilai False karena nilai
var tidak pernah berubah. Untuk menghentikan infinite loop,
gunakan CTRL (atau CMD⌘) - C untuk menghentikannya dan
keluar dari program.
Anda juga dapat menyingkat penulisan blok statement While jika
statement Anda cukup terwakili oleh satu baris.
Perulangan Bertingkat
******
*****
****
***
**
*
Anda dapat melakukannya dengan kode berikut:
3. print('*', end='')
4. print()
Kesalahan Sintaksis
Kesalahan sintaksis biasanya sering terjadi saat Anda masih baru
memulai belajar Python, misalnya contoh berikut adalah
penempatan indentasi (spasi di awal) yang tidak sesuai.
1. print('salah indentasi')
3. print('salah indentasi')
4. ^
4. ^
1. python contoh_salah_sintaksis.py
4. ^
Pengecualian
Meski pernyataan atau ekspresi dari Python sudah Anda tulis
dengan benar, ada kemungkinan terjadi kesalahan ketika perintah
tersebut dieksekusi. Kesalahan yang terjadi saat proses sedang
berlangsung disebut pengecualian (exceptions) dan akan berakibat
fatal jika tidak ditangani. Kebanyakan pengecualian di Python tidak
ditangani oleh aplikasi, sehingga aplikasi terhenti kemudian
muncul pesan kesalahan seperti contoh berikut.
1. print(angka)
1. bukan_angka = '1'
2. bukan_angka + 2
Penanganan Pengecualian
Pada aplikasi Python yang Anda buat bisa dilengkapi dengan
penanganan terhadap pengecualian (exceptions handling) dari
kelompok (tipe) kesalahan yang Anda tentukan. Proses
penanganan pengecualian menggunakan pernyataan try yang
berpasangan dengan except.
1. >>> z = 0
2. >>> 1 / z
3.
7.
8. >>> try:
9. ... x = 1 / z
13.
14. tidak bisa membagi angka dengan nilai nol
1. >>> try:
3. ... print(file.read())
6. ...
2. >>> try:
8. ...
16. ...
22. ...
23. penangan kesalahan: invalid literal for int() with base 10: '10.0'
Menghasilkan Pengecualian
Dalam membuat aplikasi, ada kemungkinan Anda butuh untuk
menghasilkan pengecualian (raise exceptions), salah satu caranya
bisa dengan menggunakan pengecualian yang sudah ada, hanya
ditambahkan informasi detailnya saja.
4. ...
Fungsi
Mendefinisikan fungsi
2. "dokumentasi fungsi"
4. return [expression]
2. print(param1)
3. return
Sintaksis return tanpa ekspresi atau return None dapat juga tidak
dituliskan. Fungsi di atas akan sama seperti di bawah ini.
2. print(param1)
Memanggil Fungsi
2. print(param1)
3. return
4.
5. #panggil
6. cetak("Panggilan Pertama")
7. cetak("Panggilan Kedua")
Output:
Panggilan Pertama
Panggilan Kedua
Return
1. return None
5. return hasil
6.
Saat dipanggil:
1. def kuadrat(x):
2. return x*x
3. a = 10
4. k = kuadrat(a)
Contohnya:
1. def ubah(list_saya):
2. list_saya.append([1, 2, 3, 4])
4.
7. ubah(list_saya)
1. def ubah(list_saya):
2. "Deklarasi Variabel list_saya berikut hanya dikenali (berlaku) di dalam fungsi ubah"
3. list_saya = [1, 2, 3, 4]
5.
8. ubah(list_saya)
9. print('Nilai di luar fungsi: {}'.format(list_saya))
2. #lakukansesuatudenganabc
Sebagai nilai yang akan dimasukkan pada saat fungsi dipanggil, ada dua jenis argumen:
Contoh:
Keyword Argument
Positional Argument
1. daftar(1,'Januari',2020)
2. for a in args:
6.
7.
8. # Panggil printinfo
9. printinfo()
10. printinfo(1, 2, 3)
Output:
argumen posisi 1
argumen posisi 2
argumen posisi 3
argumen posisi 1
argumen posisi 2
argumen kata kunci j:8
argumen kata kunci k:9
argumen posisi 2
argumen posisi 3
argumen kata kunci i:7
argumen kata kunci j:8
Fungsi Anonim
Fungsi Anonim (anonymous) tidak dideklarasikan seperti halnya fungsi pada umumnya
dengan kata kunci def, melainkan menggunakan kata kunci (keyword) lambda. Sebuah
fungsi lambda dapat menerima argumen dalam jumlah berapa pun, namun hanya
mengembalikan satu nilai expression. Fungsi Lambda tidak dapat memuat perintah atau
ekspresi lainnya, misalnya tidak bisa melakukan print.
Fungsi lambda bersifat mandiri, memiliki namespace-nya sendiri, dan tidak dapat
mengakses nilai apapun selain yang berada dalam parameter list dan variabel global.
Meskipun mirip, Lambda tidak dapat disamakan dengan inline statement pada bahasa
C/C++.
Sintaks:
Contoh penggunaannya jika kita bandingkan dengan fungsi kali yang berada di modul
sebelumnya
Hasilnya
Hasil : 231
Hasil : 4
Menulis Modul
hello.py
1. # Define a function
2. def world():
3. print("Hello, World!")
Jika hello.py dijalankan, maka program tidak akan menjalankan
apapun karena world() hanya berupa definisi fungsi, kita belum
memanggilnya. Jika kita biasanya memanggil sebuah fungsi dari
berkas yang sama di bagian main, kali ini kita akan membuat
berkas lain main.py yang seolah mengimpor hello.py. Pastikan
hello.py dan main.py berada dalam satu direktori agar dapat
diimpor dan dipanggil.
main.py
1. #impor
2. import hello
3.
4. #panggil
5. hello.world()
Saat memanggil sebuah fungsi dari modul yang kita impor, jangan
lupa untuk menambahkan nama modulnya diikuti tanda titik, baru
fungsi yang akan kita panggil. Dalam hal ini karena kita mengimpor
hello.py, maka cukup kita tulis import hello, dan saat
memanggilnya dengan hello.world(). Selain itu, kita juga dapat
menggunakan from ... import ..., dalam hal ini adalah from hello
import world dan memanggil fungsinya langsung yakni world().
Hello, World!
Menambahkan variabel
Menambahkan variabel pada modul hello, tambahkan variabel
nama, misalnya Dicoding.
hello.py
1. def world():
2. print("Hello, World!")
3.
4. nama = "Dicoding"
main.py
1. #impor
2. import hello
3.
4. #panggil
5. hello.world()
6.
7. #cetak
8. print(hello.nama)
Saat Dijalankan:
Hello, World!
Dicoding
Menambahkan kelas
Contoh yang lain, mari tambahkan kelas di modul hello. Kita akan
membuat kelas Reviewer dengan atribut nama dan kelas, serta
fungsi review() yang akan mencetak atribut yang telah
didefinisikan.
hello.py
1. def world():
2. print("Hello, World!")
3.
4. nama = "Dicoding"
5.
6. class Reviewer:
8. self.nama = nama
9. self.kelas = kelas
10.
main.py
1. #impor
2. import hello
3.
4. #panggil
5. hello.world()
6.
7. #cetak
8. print(hello.nama)
9.
10. #review
12. diko.review()
Output:
Hello, World!
Dicoding
Reviewer Diko bertanggung jawab di kelas Python
Implementasi Kode
hello2.py
1. # Definisi
2. def world():
3. print("Hello, World!")
4.
5. # Panggil disini
6. world()
main.py
1. import hello2
Hello, World!
1. import sys
2. sys.path.append('/home/dicoding')
3.
4. import hello
5. …
1. print(sys.path)
'/home/dicoding/my_env/lib/python3.5/site-packages'
1. import hello
Pastikan path yang Anda assign tepat untuk menghasilkan
pemanggilan yang tepat. Modul yang tersebar pada beberapa
folder mungkin akan menghasilkan galat. Usahakan peletakan
yang se-sederhana mungkin.
Kelas atau dalam bahasa Inggris disebut class, merupakan sebuah konsep
satu kesatuan. Membuat sebuah kelas artinya membuat sebuah tipe baru,
objek baru dari tipe tersebut. Setiap objek (hasil instance dari kelas tersebut)
dapat memiliki atribut untuk mengelola status dari objek tersebut, juga dapat
Catatan:
Definisi dari kelas menggunakan sintaksis class seperti hanya definisi fungsi
1. class NamaKelas:
1. class Kalkulator:
3. i = 12345
4.
5. def f(self):
akan mengembalikan nilai integer dan fungsi. Pada proses mengacu atribut
bilangan bulat lain ke Kalkulator.i akan mengubah nilai yang ada saat ini.
1. Kalkulator.i = 1024 # maka nilai atribut i dalam Kalkulator berubah dari 12345
menjadi 1024
variabel k
Sebagai hasil instance sebuah class, suatu objek memiliki atribut dan metode
yang didapatkan dari class. Sebuah metode atau dalam bahasa Inggris disebut
method, adalah sebuah fungsi khusus yang menjadi "milik" suatu objek.
Lebih detail mengenai konvensi ini akan dibahas pada bagian metode
dari class.
selanjutnya.
Class’ Constructor
Kembali membahas proses instantiation dari class, sering ditemui kebutuhan
mengeset nilai awal atau kondisi awal dari atribut yang dimiliki oleh class
tersebut, sehingga untuk kebutuhan ini digunakan sebuah fungsi khusus yang
underscore init". Pada saat dilakukan instantiation dari class, metode __init__
menggunakan constructor.
1. class Kalkulator:
3.
4. def __init__(self):
5. self.i = 12345
6.
7. def f(self):
misalnya list dan dictionary.
referensi: https://docs.python.org/id/3.8/tutorial/classes.html#class-and-
instance-variables
1. class KeranjangBelanja:
3. isi = [] # menggunakan list di sini akan terbagi untuk semua instance. JANGAN
DILAKUKAN
1. k = Kalkulator() # membuat instance dari kelas jadi objek, kemudian disimpan pada
variabel k
jika diperlukan.
Pada contoh berikut ini, constructor memiliki parameter i yang bersifat
1. class Kalkulator:
3.
5. self.i = i # i adalah variabel pada constructor, self.i adalah variabel dari class
6.
7. def f(self):
Metode (Method)
Pembahasan lebih detail mengenai metode, selain yang dibahas sebelumnya,
Pertama kita membahas metode dari objek, seperti yang sempat dijelaskan
secara singkat di atas mengenai metode, atau dalam bahasa Inggris disebut
method, secara umum metode adalah sebuah fungsi khusus yang menjadi
Salah satu hal khusus yang dimiliki oleh metode dengan adanya argumen
bernama self, Anda tentu bertanya-tanya tentang argumen self pada metode-
Argumen pertama dari metode-metode dalam class, biasa diberikan nama self
sebagai suatu konvensi atau standar penamaan, meskipun Anda bisa juga
menggunakan nama lain. Bahkan dalam Python tidak ada arti khusus tentang
sintaksis self ini, namun sangat disarankan menggunakan konversi ini agar
program Python yang Anda buat akan lebih mudah dimengerti oleh
pemrogram lainnya.
1. k.f()
ekuivalen dengan
1. Kalkulator.f(k)
Kalkulator.
Sebelum kita membahas yang kedua dan ketiga, yakni metode dari class dan
metode secara static, Anda tentu mengingat bahwa sebelumnya sudah belajar
dan sejumlah lainnya. Terkait metode, ada dua fungsi bawaan yang akan kita
bahas, yakni classmethod dan staticmethod.
Catatan:
sintaksis @wrapper.
Referensi: https://docs.python.org/id/3.8/glossary.html#term-decorator .
dari class (class method). Dalam penggunaannya, fungsi ini dijadikan sebagai
fungsi decorator @classmethod, kemudian pemanggilannya bisa langsung
Metode dari class (class method) menerima masukan class secara implisit
Berdasar contoh yang sama dengan class sebelumnya, berikut adalah metode
dari class.
1. class Kalkulator:
3.
4. def f(self):
6.
7. @classmethod
Nampak pada kode, sesuai konvensi ada metode yang menggunakan argumen
pertama cls.
Untuk melakukan pemanggilan dari class, dilakukan seperti berikut, dimana
1. k = Kalkulator()
2. print(k.tambah_angka(1, 2))
secara implisit.
Untuk Anda yang pernah memrogram Java atau C++, metode statis ini mirip
statis.
1. class Kalkulator:
2. """contoh kelas kalkulator sederhana"""
3.
4. def f(self):
6.
7. @staticmethod
Nampak pada kode, tidak ada argumen pertama yang implisit seperti halnya
1. a = Kalkulator.kali_angka(2, 3)
2. print(a)
Metode statis (static method) juga dapat dipanggil dari objek, hasil
1. k = Kalkulator()
2. a = k.kali_angka(2, 3)
3. print(a)
Dalam contoh ini, kelas A disebut sebagai kelas dasar, yakni kelas
yang memberikan warisan atau biasa juga disebut kelas yang
diturunkan.
Kemudian kelas B disebut sebagai kelas turunan, yakni kelas yang
mendapatkan warisan.
Jika di kelas B memiliki metode dengan nama yang sama dengan
yang dimiliki kelas A, maka metode tersebut akan menimpa
metode yang diwariskan dari kelas A.
Catatan:
Referensi: https://docs.python.org/id/3.8/tutorial/classes.html#mul
tiple-inheritance
1. class Kalkulator:
2. """contoh kelas kalkulator sederhana. anggap kelas ini tidak boleh diubah!"""
3.
5. self.nilai = nilai
6.
1. class KalkulatorKali(Kalkulator):
3.
6. return self.nilai
Dengan pemanggilan class KalkulatorKali sebagai berikut.
1. kk = KalkulatorKali()
3. print(a)
4.
Kalkulator
6. print(b)
1. class KalkulatorKali(Kalkulator):
3.
6. return self.nilai
7.
1. kk = KalkulatorKali()
2.
4. print(b)
Pemanggilan Metode Kelas Dasar dari Kelas Turunan dengan
Sintaksis Super
1. class KalkulatorTambah(Kalkulator):
3.
5. if angka1 + angka2 <= 9: # fitur ini sudah oke di kelas dasar, gunakan yang ada
saja
isi nilai
7. else: # ini adalah fitur baru yang ingin diperbaiki dari keterbatasan kelas dasar
9. return self.nilai
1. class Pegawai:
3.
5.
8. don.bagian = 'IT'
9. don.gaji = 999
Unit Testing
Sampai di tahap ini, sudah banyak modul pemrograman Python
yang kita dipelajari. Kita telah mengenal operasi-operasi dasar di
Python seperti perulangan, fungsi, hingga OOP pada Python.
1. import unittest
2.
3. class TestStringMethods(unittest.TestCase):
4.
5. def test_strip(self):
6. self.assertEqual('www.dicoding.com'.strip('c.mow'), 'dicoding')
7.
8. def test_isalnum(self):
9. self.assertTrue('c0d1ng'.isalnum())
10. self.assertFalse('c0d!ng'.isalnum())
11.
12. def test_index(self):
13. s = 'dicoding'
14. self.assertEqual(s.index('coding'), 2)
16. with self.assertRaises(ValueError):
17. s.index('decode')
18.
19. if __name__ == '__main__':
20. unittest.main()
1. def test_isalnum(self):
Berikut penjelasannya:
1. import unittest
2.
3. def koneksi_ke_db():
4. print('[terhubung ke db]')
5. def putus_koneksi_db(db):
8. class User:
9. username = ''
15.
16. class TestUser(unittest.TestCase):
18. db = koneksi_ke_db()
21. putus_koneksi_db(db)
22.
27. self.assertTrue(dicoding.aktif)
28. putus_koneksi_db(db)
29.
30. if __name__ == '__main__':
31. unittest.main()
1. class TestUser(unittest.TestCase):
2. def setUp(self):
3. self.db = koneksi_ke_db()
5.
6. def tearDown(self):
7. putus_koneksi_db(self.db)
8.
9. def test_user_default_not_active(self):
11.
String
Dokumentasi: https://docs.python.org/3/library/string.html .
String merupakan salah satu modul bawaan Python yang tidak
perlu dideklarasikan. Modul yang sudah bawaan dari Python
disebut modul built-in
(https://docs.python.org/3/library/stdtypes.html ). Termasuk di
dalam modul built in antara lain adalah string, list, range, boolean
operator, dan sebagainya. Pada modul string terdapat fungsi-
fungsi yang dapat dioperasikan pada variabel bertipe string seperti
di bawah.
OS
Dokumentasi: https://docs.python.org/3/library/os.html
1. import os
2. print(os.getcwd())
File Input/Output
Dokumentasi: https://docs.python.org/3/tutorial/inputoutput.
html.
Pickle
Dokumentasi: https://docs.python.org/3/library/pickle.html .
1. import pickle
3. pickle_keluar = open("dict.pickle","wb")
4. pickle.dump(contoh_dictionary, pickle_keluar)
5. pickle_keluar.close()
1. pickle_masuk = open("dict.pickle","rb")
2. contoh_dictionary = pickle.load(pickle_masuk)
JSON
Dokumentasi: https://docs.python.org/3/library/json.html .
1. import json
2.
3. # contoh JSON:
4. x = '{ "nama":"Buchori",
5. "umur":22,
6. "Kota":"New York"}'
7.
8. # parse x:
9. y = json.loads(x)
10.
11. print(y["umur"])
Scrapper
Dokumentasi
urllib: https://docs.python.org/3/library/urllib.html .
Dokumentasi
beautifulsoup4: https://www.crummy.com/software/Beautiful
Soup/bs4/doc/.
1. url = "http://python.org/"
2. page = urlopen(url)
3. html = page.read().decode("utf-8")
4. start_index = html.find("<title>") + len("<title>")
5. end_index = html.find("</title>")
6. title = html[start_index:end_index]
7. title
1. url = "http://python.org/"
2. page = urlopen(url)
3. html = page.read().decode("utf-8")
4. soup = BeautifulSoup(html, "html.parser")
5. soup.title
Regex
Dokumentasi: https://docs.python.org/3/library/re.html .
1. import re
2.
3. pola= '^a...s$'
4. string_tes= 'abyss'
6.
7. if hasil:
8. print("Pencarian berhasil.")
9. else:
Argument Parser
Dokumentasi
Getopt: https://docs.python.org/3.8/library/getopt.html .
Dokumentasi
ArgParse: https://docs.python.org/3.8/library/argparse.html .
1. python panggildicoding.py -o
file: panggildicoding.py
1. import argparse
2.
3. parser = argparse.ArgumentParser()
5. args = parser.parse_args()
6.
7. if args.output:
1. import argparse
2.
3. parser = argparse.ArgumentParser()
5. args = parser.parse_args()
6.
7. print("Terima kasih telah menggunakan panggildicoding.py, "+args.nama)