Python
Python
PEMROGRAMAN PYTHON
Contents
1 Pendahuluan 7
3 Triks 41
4 Bibliography 45
Pengantar
operasi, kemungkinan ada hal-hal yang agak berbeda. Jika hal itu
terjadi, gunakan internet untuk mencari jawabannya.
1.1 Instalasi
1.3 Memulai
$ python
Python 2.7.12 (default, Nov 20 2017, 18:23:56)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Dari tampilan di atas dapat kita ketahui bahwa Python yang saya
gunakan adalah versi 2.7.121 . 1
Pada awal penulisan buku ini, versi
bahasa Python Yang stabil digunakan
adalah versi 2. Saat ini versi 3 meru-
% python3 pakan versi yang dianggap sebagai
Python 3.9.10 (main, Jan 15 2022, 11:40:53) versi stabil. Untuk itu buku ini sedikit
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin demi sedikit akan diperbaharui dengan
menggunakan Python versi 3.
Type "help", "copyright", "credits" or "license" for more information.
>>>
print("Hello, world!")
Hello, world!
$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(10):
... print(i)
File "<stdin>", line 2
print(i)
^
IndentationError: expected an indented block
>>>
$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(10):
... print(i)
...
0
1
2
3
4
5
6
7
8
pemrograman python 11
9
>>>
$ python hello.py
Hello, world!
$ ipython3
In [1]: print("Hello World")
Hello World
In [3]:
for n in range(10):
print(n, end=" ")
Pada contoh di atas, variabel a dan b dibuat dan langsung diisi den-
gan angka (7 dan 5) dalam kasus ini. Kemudian kedua variabel terse-
but disampaikan sekaligus. Perhatikan bahwa dengan menggunakan
pemrograman python 13
tanda koma (,) nilai dari kedua variabel tersebut ditampilkan dengan
spasi.
7 5
a = 7
b = 5
c = a + b
print ("a = ", a)
print ("b = ", b)
print ("a+b = ", c)
a = 7
b = 5
a+b = 12
Hal yang sangat berbeda dari bahasa Python dengan bahasa pem-
rograman lainnya adalah masalah block dari kode. Bahasa pemro-
graman C misalnya menggunakan tanda kurung kurawal “{” untuk
menyatakan blok. Sementara itu Python menggunakan indentation
untuk menyatakan satu blok. Lihat contoh di bawah ini.
for i in range(5):
for j in range(3):
print(i,j)
nama1 = "budi"
nama2 = "rahardjo"
nama3 = nama1 + nama2
print(nama3)
a = 7
b = 5
c = a/b
print(c)
Keluarannya adalah nilai “1.4”. Jenis atau tipe data dari “a” dan
“c” adalah berbeda. Tipe data “a” adalah integer, sementara itu tipe
data “c” adalah floating point.
>>> a=7
>>> type(a)
<class ’int’>
>>> b=5
>>> c=a/b
>>> type(c)
<class ’float’>
d = a+c
print(d)
1.6 Kompleksitas
jalan ketika jumlah datanya 1000 atau lebih. Nah jumlah data terse-
but (100 atau 1000) merupakan sebuah paramter yang menjadi fungsi
dari sumber daya yang digunakan. Biasanya ini kita sebut n. Kom-
pleksitas kemudian menjukkan seberapa besar sumber daya sebagai
fungsi dari n itu.
Ada algoritme yang lama komputasinya bergantung liner ter-
hadap jumlah data (n) itu. Jadi misalnya untuk 100 data dibutuhkan
100 detik, maka untuk 1000 data dibutuhkan waktu 1000 detik.
Bagaimana jika jumlah datanya 10000? Maka dapat diperkirakan
waktu yang dibutuhkan adalah 10000 detik. Kompleksitas yang
sepert ini disebuh O(n).
Ada juga algoritme yang lama perhitungannya berbanding kuadratis
(pangkat dua) terhadap jumlah datanya. Kompleksitas yang model
seperti ini disebut O(n2 )
n=1000
import time
start_time = time.time()
a = 0
for x in range(n):
a = a + 0
_
end time = time.time()
elapsed = end_time - start_time
print("elapsed %s seconds ..." % elapsed)
n=1000
import time
start_time = time.time()
a = 0
for x in range(n):
16 budi rahardjo
for y in range(n):
a = a + 0
_
end time = time.time()
elapsed = end_time - start_time
print("elapsed %s seconds ..." % elapsed)
n=1000
import time
start_time = time.time()
a = 0
for x in range(n):
for y in range(n):
for z in range(n):
a = a + 0
end_time = time.time()
elapsed = end_time - start_time
print("elapsed %s seconds ..." % elapsed)
1.7 List
Python memiliki struktur data list, yang sama dengan array (larik)
di bahasa pemrograman lainnya. Untuk membuat list kita menggu-
nakan tanda siku kotak. Contoh berikut ini menunjukkan penggu-
naan struktur data list.
[7, 1, 5, 3, 2, 4, 6, 8, 3, 5]
list memiliki 10 elemen
daftar[0] = 7
[7, 1, 5, 3, 2, 4, 6, 8, 3, 5, 7, 9]
del daftar[3]
print(daftar)
[7, 1, 5, 2, 4, 6, 8, 3, 5, 7, 9]
daftar.pop()
print(daftar)
[7, 1, 5, 2, 4, 6, 8, 3, 5, 7]
18 budi rahardjo
urut = sorted(daftar)
print(urut)
List juga dapat digunakan untuk tipe data lain, bukan hanya
angka. Sebagai contoh, kita dapat membuat list dari kata (yang
menggunakan tipe data string.) Perhatikan bahwa kita dapat meng-
gunakan huruf kecil dan besar.
def all_lower(my_list):
return [x.lower() for x in my_list]
print(all_lower(people))
Bagaimana jika kita ingin membuat huruf awal dari setiap nama
(kata) memiliki huruf besar? Ini caranya.
1.8 Input
a = input("a = ")
b = input("b = ")
c = a+b
print("c =", c)
print(int(a)+int(b))
# text processing
# memecah kalimat menjadi kata-kata
kalimat = raw_input("Masukkan kalimat yang cukup panjang.\n")
# pisahkan menjadi kata
kata = kalimat.split()
for k in kata:
print(k)
Ada banyak cara untuk membaca berkas teks seperti itu. Untuk
berkas yang ukurannya kecil, kita dapat membaca keseluruhan
berkas dalam satu perintah. Ini biasanya dikenal dengan istilah
“slurp”. Ada pro dan kontra soal itu. Ada sebuah artikel yang men-
gatakan bahwa kalau kita melakukan slurping, maka memori akan
digunakan untuk data (betul) dan pembacaan akan membutuhkan
waktu yang lebih lama2 . 2
Saya baru tahu ini ketika menulis
Kode untuk membaca berkas di atas, menyimpan topk dalam ben- buku ini. Link menyusul.
tuk list, dan menampilkan salah satu topik tersebut secara random
adalah sebagai berikut3 . 3
Kode ini ada di
https://github.com/rahard/BRcoding
topicfile = "topics.txt"
# rangkuman
print("There are", len(topics), "topics")
Kode ini dapat dijalankan dari CLI dan akan memilihkan salah
satu topik secara random. Pada pembahasan yang lain, kita akan
menggunakan kode ini dan menempatkannya dalam sebuah web
dalam bentuk API.
1.11 Python3
source ~/.bashrc
$ program filename.pdf
import sys
# periksa jumlah argumennya
numberargs = len(sys.argv)
# tanpa argumen, hasilnya akan 0 (nol)
# nama skrip adalah sys.argv[0]
for i in range(numberargs):
print(i, sys.argv[i])
if (numberargs) < 4:
print("Usage: " + sys.argv[0] + " data1 data2 data3")
exit(1)
2.2 Numpy
1 2 3 3 3 3
A = 4 5 6 B = 5 5 5 C = A+B D = A×B
7 8 9 5 3 1
pemrograman python 27
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
b = np.array([[3,3,3],[5,5,5],[5,3,1]])
print(b)
c = a+b
print(c)
d = np.matmul(a, b)
print(d)
[1 2 3]
[4 5 6]
[7 8 9]]
[[3 3 3]
[5 5 5]
[5 3 1]]
[[ 4 5 6]
[ 9 10 11]
[12 11 10]]
[[ 28 22 16]
[ 67 55 43]
[106 88 70]]
import numpy as np
berat = np.random.randint(low=50, high=100, size=20)
print(berat)
[98 84 72 57 61 98 60 96 75 86 95 81 62 77 67 52 73 96 95 71]
28 budi rahardjo
2.3 Matlplotlib
Salah satu aplikasi yang cukup sering dibutuhkan ketika kita mem-
buat program untuk keperluan penelitian adalah membuat grafik
(plot). Salah satu library yang baik untuk digunakan adalah mat-
plotlib. Pada sistem Linux, paket ini membutuhkan paket lain, yaitu
python-tk. Untuk itu python-tk ini harus dipasang dulu. Di bawah
ini adalah contoh pemasangan python-tk di sistem Linux (berbasis
Debian) dengan menggunakan perintah apt-get.
x1 = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
plt.plot(x1, y1, c=’blue’, label=’Dataset 1’)
plt.legend()
plt.show()
pemrograman python 29
# dataset pertama
x1 = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
# dataset kedua
x2 = [1, 2, 3, 4, 5]
y2 = [3, 1, 7, 5, 6]
import numpy as np
import matplotlib.pyplot as plt
# plt.hist(berat)
plt.hist(berat, bins=range(50, 101), align=’left’)
plt.xlabel(’Berat’)
plt.ylabel(’Jumlah orang’)
plt.show()
Contoh dari tampilan kode di atas dapat dilihat pada Gambar 2.3.
Gambar ini sangat sederhana dan dapat dimodifikasi tapilannya,
warna, legend, label, dan seterusnya. Untuk melihat pilihan-pilihan
apa saja yang tersedia dapat dilakukan dengan membaca dokumen-
tasi dan melihat contoh-contoh. Misal, jika kita ingin mengganti
warna dari bar chart tersebut menjadi warna merah, tambahkan
"Color=’Red’" pada baris yang dimulai dengan plt.hist.
pemrograman python 31
import numpy as np
import matplotlib.pyplot as plt
# persamaan y = a*x + b
a = 0.25
b = 0.75
jumlah_titik = 300
for i in range(jumlah_titik):
x = np.random.normal(0.0,0.4)
y = a*x + b + np.random.normal(0.0,0.1)
x_point.append([x])
32 budi rahardjo
y_point.append([y])
plt.plot(x_point,y_point,’o’,label=’Random Data’)
plt.legend()
plt.show()
%matplotlib notebook
Data di atas dapat dibaca kembali dari berkas CSV dan dilakukan
perhitungan (linear regression) untuk mencari faktor gradient (faktor
pemrograman python 33
import numpy as np
import matplotlib.pyplot as plt
jumlah_data=100
x_point = []
y_point = []
# cluster pertama, centroid di (10, 4,5)
34 budi rahardjo
buat_list(10.0, 4.5)
# cluster kedua, centroid di (3.5, 2.5)
buat_list(3.5, 2.5)
# cluster ketiga, centroid di (4.5, 8.5)
buat_list(4.5, 8.5)
# simpan dalam bentuk CSV
np.savetxt("cluster.csv", np.column_stack([x_point, y_point]), fmt=’%.5f’, delimiter=’, ’)
plt.plot(x_point,y_point, ’x’)
plt.show()
gunakan variabel global, yang mana ini adalah contoh yang kurang
baik.
2.4 Pandas
import numpy as np
import matplotlib.pyplot as plt
# create series
ser = pd.Series([1,3,5,7,np.nan,9,11])
print(ser)
0 1.0
1 3.0
2 5.0
3 7.0
4 NaN
5 9.0
6 11.0
dtype: float64
Pandas dapat membaca data dalam bentuk CSV. Berikut ini adalah
contoh kode yang membaca data dari berkas ’cluster.csv’ (yang se-
belumnya pernah kita buat).
import pandas as pd
df = pd.read_csv(’cluster.csv’, header=None)
# tambahkan label di kolomnya (tidak harus)
36 budi rahardjo
import pandas as pd
import matplotlib.pyplot as plt
Hasil dari kode di atas adalah tampilan grafik yang mirip dengan
yang sudah kita lakukan dengan menggunakan Matplotlib. (Lihat
gambar 2.6.)
Mari kita lanjutkan dengan melakukan clustering. Hal ini da-
pat kita lakukan dengan menggunakan pustaka (library) lain, yaitu
Sklearn. Tambahkan kode berikut ini ke kode sebelumnya.
Hasil dari kode di atas adalah tampilan tiga cluster beserta cen-
troidnya. (Lihat gambar 2.7.) Anda dapat mengubah-ubah jumlah
cluster-nya dengan mengubah variabel n_clusters. Misal, Anda dapat
menggantikan angka 3 menjadi 4 untuk membuatnya menjadi 4 clus-
ter. Pemilihan jumlah kluster yang paling optimal dapat dilakukan,
tetapi ini akan menjadi pembahasan yang terpisah. Perlu diingat juga
bahwa algoritma k-means yang kita gunakan ini akan menghasilkan
pemrograman python 37
2.5 OpenCV
import cv2
38 budi rahardjo
img = cv2.imread(’../graphics/br-pixel.png’)
grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow(’Gambar Asli’, img)
cv2.imshow(’Gambar grey’, grey)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.6 Kriptografi
library tersebut.
Salah satu pemanfaatan “baru” dari fungsi hash ini adalah pada
algoritma Blockchain yang digunakan pada Bitcoin. Sedikit cerita
tentang hal ini ada di blog saya 3 . 3
https://rahard.wordpress.com/2018/03/10/berburu-
hash/
3
Triks
Ada beberapa hal menarik dari Python. Pada bagian ini akan dita-
mpilkan berbagai trik tersebut.
Python dapat kita gunakan sebagai server web sederhana yang dapat
memerikan list direktori. Fitur ini sering saya gunakan untuk transfer
berkas antar mesin. Misalnya saya ingin mengambil sebuah berkas
dari satu komputer ke komputer yang lain. Maka komputer dimana
berkas tersebut berada saya jalankan perintah ini (pada direktori
dimana berkas tersebut berada).
SERVER = ’192.168.4.29’
NAMA = ’jabar’
GEMBOK = ’juara2020’
ftp = FTP(SERVER)
ftp.login(user=NAMA, passwd=GEMBOK)
ftp.dir()
ftp.quit()
Berkas ini dapat dibaca dari aplikasi dengan cara berikut, den-
gan asumsi bahwa berkas “config.ini” berada dalam direktori yang
sama dengan aplikasi ini. Untuk lebih meningkatkan keamanan, ser-
ingkali letak berkas konfigurasi berada di luar struktur direktori ini
(di atasnya). Jadi variabel CONF dapat diisi dengan “../config.in”.
CONF=’config.ini’
config = ConfigParser()
# return filename
config.read(CONF)
SERVER = config.get(’aplikasiku’,’server’)
NAMA = config.get(’aplikasiku’,’user’)
GEMBOK = config.get(’aplikasiku’,’password’)
ftp = FTP(SERVER)
ftp.login(user=NAMA, passwd=GEMBOK)
ftp.dir()
ftp.quit()
https://www.youtube.com/watch?v=jze3DC6ohRc
hexdump budi-unicode.txt