Tujuan dari programming adalah automation. Bahasa pemrograman itu ada 2 jenis, yaitu interpreter dan compiler. Maksud dari interpreter adalah bahasa pemrograman yang dapat di built meskipun masih ada error di dalamnya sehingga biasanya ketahuan ada error saat aplikasi digunakan. Sedangkan maksud dari compiler artinya bahasa yang harus benar terlebih dahulu atau tanpa error baru bisa di built menjadi aplikasi. Python berkategori bahasa pemrograman interpreter. Bahasa python dibuat oleh Guido van Rossum di Belanda yang merupakan kelanjutan dari bahasa ABC. Python ditujukan untuk general purpose sehingga memungkinkan pengembangan web, mobile, dan data science.
Kalau di JavaScript untuk melihat hasil kode dapat menggunakan syntax console.log() sedangkan di Python itu menggunakan print(). Istilah fundamental dalam bahasa Python ada 4, yaitu statements (satu baris kode), variables (penyimpan data), literals (data yang disimpan di dalam variabel), dan operators (pengoperasian data). Mirip seperti bahasa pemrograman high level lainnya variabel dalam Python tidak boleh dibuat sama dengan fungsi bawaan yang ada di Python. Dalam Python ada whitespace sehingga space atau tab itu memiliki makna. Untuk membuat comment dapat menggunakan (#..(comment)) dan ('''.(comment).''').
Khusus pada Python pembuatan variabel hanya boleh mengandung alfabet, angka, dan underscore (_). Seperti JavaScript awalan tidak boleh angka dan juga mengandung case sensitive. Yang penting untuk diketahui dala tipe data Python adalah integer(float), str, dan boolean. Tipe integer maksudnya adalah tipe data yang bersifat diskontinu atau bahasa mudahnya tidak desimal, sedangkan tipe fload adalah tipe data yang bersifat kontinu atau bahasa mudahnya desimal. Pada tipe data str atau string ini mirip dengan yang ada di JavaScript, begitu juga boolean yang mengandung true atau false.
Di aritmetika ada yang sedikit berbeda antara JavaScript dan Python seperti operator //, di JavaScript operator tersebut tidak ada sedangkan di python operator tersebut bermakna pembagian yang akan menghasilkan nilai integer atau pembulatan. Perhatikan contoh di bawah:
- print(8/3) -> 2.6666666
- print(8//3) -> 2
Dengan demikian operator // adalah pembagian dengan pembulatan ke bawah atau floor. Pada comparison atau perbandingan berbeda juga dengan JavaScript yang ada operator ===. Di Python sama dengan maksimum hanya 2. Untuk memudahkan di Python juga ada operator is not dan is.. Perhatikan contoh di bawah:
- print(8 is not 5) -> True
- print(8 is 5) -> False
Di logical Python mirip seperti di JavaScript, dan yang paling utama adalah or, and, dan not. Selain itu di python juga menganut konsep assignment, contohnya:
- angka = 1
- angka = angka + 1
- print(angka) -> 2
Pada kondisional statements di Python memiliki bentuk yang berbeda dengan JavaScript, perhatikan contoh:
- if(6 > 5):
- print('Benar')
- else:
- print('Salah')
Sedangkan untuk kondisional yang mengandung else if:
- if(6 > 5):
- print('Benar')
- elif(6 < 5):
- print('Salah')
- else:
- print('Aneh')
Kalau di JavaScript bukan elif melainkan else if. Walaupun demikian memiliki alur yang sama. Dengan demikian perbedaan dua bahasa ini ada pada cara penulisan syntaxnya. Selain di kondisional, perbedaan juga terlihat di looping. Di Python looping ada 2, yaitu for dan while. Perhatikan contoh di bawah:
- list_karyawan = []
- for karyawan in list_karyawan:
- if(karyawan == 'Ana'):
- print('Ana')
Penjelasan dari looping for di atas adalah, untuk karyawan di dalam list karyawan. Jika karyawan itu bernilai string ana maka print ana. Sedangkan format dari while looping adalah:
- data = 0
- while data < 10:
- print(data+1)
- data += 1
Penjelasan dari looping while di atas adalah, selama da lebih kecil dari 10, lakukan cetak data+1 kemudian setiap satu kali looping tambahkan data sebanyak 1. Karena looping ada 2, maka akan menjadi penting pemilihan looping. Dalam prakteknya looping while sebaiknya dihindari karena rentan terjadi looping yang bersifat infinite. Apabila hal ini terjadi kemudian tidak terdeteksi lebih dini maka ini akan terus melakukan programming dan pada akhirnya akan meningkatkan cost.
Selanjutnya di Python struktur data yang paling fundamental untuk diketahui ada 3, yaitu list, tuple, dan dictionary. Berbeda dengan JavaScript yang ada array dan object. List pada Python mirip dengan array pada JavaScript sedangkan dictionary pada Python mirip dengan Object, nah tuple ini yang sama sekali berbeda. Di JavaScript data object tidak akan berubah urutan sedangkan di Python data dictionary mungkin akan berubah urutannya. Oleh sebab itu data dictionary tidak menggunakan indeks tetapi menggunakan kata kunci atau key. Ini yang membedakan antara dictionary pada Python dan object pada JavaScript. Perhatikan contoh di bawah:
- # data list
- list = [1, 2, 3, 4]
- # data tuple
- tuple = (1, 2, 3, 4)
- # data dictionary
- dictionary = {'a' : 1, 'b' : 2, 'c' : 3}
- print(list[0])
- print(tuple[0])
- print(dictionary['a'])
Masing-masing akan menghasilkan 1. Lalu apa perbedaan antara list dan tuple. Bedanya adalah kalau list dapat ditambah dan dikurang, sedangkan tuple sifatnya adalah tetap setelah dideklarasikan. Sampai di sini sudah dipelajari data tipe, aritmatika, comparison, logical, assignment, conditional, looping serta data struktur. Kedelapan itu semua yang memungkinkan terbentuk sebuah function dalam Python. Lagi-lagi fungsi dalam Python memiliki perbedaan dengan fungsi yang ada di JavaScript. Perhatikan contoh di bawah:
- angka_satu = [1,2,3,4]
- angka_dua = (1,2,3,4)
- def pertambahan(a,b):
- return angka_satu[a] + angka_dua[b]
- print(pertambahan(1,3))
 |
sumber: anonim |
Lebih lanjut untuk membuat sebuah function biasanya akan dilakukan manipulasi dari data, baik itu tipe data maupun struktur data. Perhatikan daftar dibawah:
- # data list [1,2,3]
- .append() -> menambahkan elemen
- .clear() -> menghapus seluruh elemen
- .copy() -> menduplikasi seluruh elemen
- .count() -> menghitung jumlah elemen
- .extend() -> menggabungkan list
- .index() -> mengetahui index dari sebuah elemen
- .insert() -> memasukkan sebuah elemen ke dalam indeks tertentu
- .pop() -> menghapus elemen berdasarkan indeks tertentu
- .remove() -> menghapus elemen berdasarkan data tertentu
- .reverse() -> membalik urutan elemen
- .sort() -> mengurutkan elemen
- # data tuple ex. (1,2,3)
- .count() -> menghitung jumlah elemen
- .index() -> mengetahui index dari sebuah elemen
- # data set ex. {'a', 'b', 'c'}
- .add() -> menambahkan data ke dalam set
- .clear() -> menghapus seluruh elemen
- .copy() -> menduplikasi seluruh elemen
- .update() -> menggabungkan elemen
- .pop() -> menghilangkan satu elemen secara acak
- .remove() -> menghapus elemen berdasarkan data tertentu
- .union() -> menggabungkan dua data set tanpa duplikasi
- .isdisjoint() -> hasilnya boolean memeriksa apakah tidak ada elemen yang sama
- .issubset() -> hasilnya boolean memeriksa apakah x dikandung y
- .issuperset() -> hasilnya boolean memeriksa apakah y mengandung x
- .intersection() -> menampilkan elemen yang beririsan
- .difference() -> menampilkan elemen yang tidak sama dari satu set
- .symmetric_difference() -> menampilkan elemen yang tidak sama dari dua set
- # data dictionary ex {'a':1, 'b':2, 'c':3}
- .clear() -> menghapus seluruh elemen yang ada di data dictionary
- .copy() -> mengkopi data tanpa mengubah data yang dikopi
- .keys() -> untuk mendapatkan key apa saja yang ada di sebuah data dictionary
- .values() -> untuk mendapatkan value apa saja yang ada di sebuah data dictionary
- .update() -> untuk menambahkan key dan value baru di data dictionary
Selain fitur-fitur di atas ada 3 tips dan trik dalam melakukan manipulasi data, yaitu len(), set(), dan list(). Secara berturut-turut digunakan untuk mengetahui jumlah data, mengubah list menjadi set, dan mengubah set menjadi list. Fitur-fitur sebelumnya digunakan untuk memanipulasi data struktur sedangkan untuk memanipulasi data tipe, khususnya pada tipe data string dapat digunakan fitur:
- [1:] -> pemotongan data (slicing)
- operator + -> menggabnungkn string
- .strip() -> untuk menghilangkan spasi di awal dan di akhir kalimat
- .lstrip() -> menghilangkan spasi di kiri kalimat
- .rstrip() -> menghilangkan spasi di kanan kalimat
- .capitalize() -> merubah elemen pertama menjadi kapital
- .lower() -> merubah seluruh elemen menjadi huruf kecil
- .upper() -> merubah seluruh elemen menjadi huruf kapital
- .split() -> memecah string dengan suatu string ke dalam list
- .join() -> menggabungkan setiap elemen list dengan string ke dalam string
- .replace() -> mengganti string dengan string lain
- .find() -> untuk menemukan index dari data
- .count() -> menjumlahkan string yang ada di dalam string
- .startswith() -> hasilnya boolean mengecek awal dari string
- .endswith() -> hasilnya boolean mengecek akhir dari string
- # tipe data int(float) ex. 1, 2, 3.56
- import math
- math.ceil() -> pembulatan ke atas
- math.floor() -> pembulatan ke bawah
- math.fabs() -> mengabsolutkan nilai
- math.factorial() -> mencari faktorial
- math.fsum() -> menjumlahkan
- math.log() -> logaritma
- math.sqrt() -> akar kuadrat
- math.copysign()
Setiap function biasanya akan memuat manipulasi data baik itu tipe data maupun data struktur. Nah, function yang dibuat biasanya akan lebih dari satu. Karena banyaknya function maka munculah sebuah paradigma pemrograman yang disebut OOP atau object oriented programming. Di dalam OOP ini ada class yang memiliki serangkaian properti dan fungsi. Ada 3 hal penting dalam penerapan class, yaitu encapsulation (menyembunyikan sebagian detail dengan __ atau dengan kata lain tidak dapat diakses kecuali di dalam class tersebut), inheritance (menurunkan serangkaian fungsi yaitu parent class menurunkan ke child class), dan polymorphism (menggunakan fungsi dengan tujuan sama namun cara berbeda). Perhatikan cara mendefinisikan class di bawah:
- class Karyawan:
- nama_perusahaan = 'ABC'
- def __init__(self, nama, usia, pendapatan):
- self.nama = nama
- self.usia = usia
- self.pendapatan = pendapatan
Class di atas memiliki nama Karyawan kemudian ada nama perusahaan yang diinput, yaitu ABC. Selanjutnya dibuat sebuah fungsi inisialisasi dengan parameter self, nama, pendapatan. Parameter self ini digunakan untuk memanggil nantinya di luar fungsi tersebut. Begitu nama diinput misalnya 'Ana' maka self.nama otomatis akan bernilai 'Ana' dan siap dipanggil dengan self.nama. Begitu juga untuk usia dan pendapatan. Untuk membuat objek perhatikan kode di bawah:
- aksara = Karyawan('Aksara', 25, 8500000)
- senja = Karyawan('Senja', 28, 12500000)
Dengan kode di atas telah berhasil dibuat sebuah objek aksara yang dimasukkan ke dalam class Karyawan dengan data nama, usia, dan pendapatan. Saat ini class Karyawan hanya memiliki satu fungsi dasar. Fungsi di dalam class Karyawan bisa ditambah, perhatikan contoh di bawah:
- class Karyawan:
- nama_perusahaan = 'ABC'
- insentif_lembur = 250000
- def __init__(self, nama, usia, pendapatan):
- self.nama = nama
- self.usia = usia
- self.pendapatan = pendapatan
- self.pendapatan_tambahan = 0
- def lembur(self):
- self.pendapatan_tambahan += self.insentif_lembur
- def tambahan_proyek(self, insentif_proyek):
- self.pendapatan_tambahan += insentif_proyek
- def total_pendapatan(self):
- return self.pendapatan + self.pendapatan_tambahan
Sekarang sudah ada 3 fungsi baru yaitu lembur, tambah_proyek, dan total_pendapatan. Nah, khusus di fungsi tambah_proyek ada parameter insentif_proyek secara otomatis ada input tambahan. Untuk memanggil fungsi-fungsi tersebut perhatikan contoh di bawah:
- # Aksara melaksanakan lembur
- aksara.lembur()
- # Senja memiliki proyek tambahan
- senja.tambahan_proyek(2500000)
- # Cetak pendapatan total Aksara dan Senja
- print('Pendapatan Total Aksara: ' + str(aksara.total_pendapatan()))
- print('Pendapatan Total Senja: ' +str(senja.total_pendapatan()))
Untuk memahami konsep class secara komprehensif maka pahami studi kasus di bawah:
- # Definisikan class Karyawan sebagai parent class
- class Karyawan:
- def __init__(self, nama, usia, pendapatan, insentif_lembur):
- self.nama = nama
- self.usia = usia
- self.pendapatan = pendapatan
- self.pendapatan_tambahan = 0
- self.insentif_lembur = insentif_lembur
- def lembur(self):
- self.pendapatan_tambahan += self.insentif_lembur
- def tambahan_proyek(self,jumlah_tambahan):
- self.pendapatan_tambahan += jumlah_tambahan
- def total_pendapatan(self):
- return self.pendapatan + self.pendapatan_tambahan
- # Definisikan class TenagaLepas sebagai child class dari class Karyawan
- class TenagaLepas(Karyawan):
- def __init__(self, nama, usia, pendapatan):
- super().__init__(nama, usia, pendapatan, 0)
- def tambahan_proyek(self, nilai_proyek):
- self.pendapatan_tambahan += nilai_proyek * 0.01
- # Definisikan class AnalisData sebagai child class dari class Karyawan
- class AnalisData(Karyawan):
- def __init__(self, nama, usia = 21, pendapatan = 6500000,
- insentif_lembur = 100000):
- super().__init__(nama, usia, pendapatan, insentif_lembur)
- # Definisikan class IlmuwanData sebagai child class dari class Karyawan
- class IlmuwanData(Karyawan):
- def __init__(self, nama, usia = 25, pendapatan = 12000000,
- insentif_lembur = 150000):
- super().__init__(nama, usia, pendapatan, insentif_lembur)
- def tambahan_proyek(self, nilai_proyek):
- self.pendapatan_tambahan += 0.1 * nilai_proyek
- # Definisikan class PembersihData sebagai child class dari class TenagaLepas
- class PembersihData(TenagaLepas):
- def __init__(self, nama, usia, pendapatan = 4000000):
- super().__init__(nama, usia, pendapatan)
- # Definisikan class DokumenterTeknis sebagai child class dari class TenagaLepas
- class DokumenterTeknis(TenagaLepas):
- def __init__(self, nama, usia, pendapatan = 2500000):
- super().__init__(nama, usia, pendapatan)
- # Definisikan class Perusahaan
- class Perusahaan:
- def __init__(self, nama, alamat, nomor_telepon):
- self.nama = nama
- self.alamat = alamat
- self.nomor_telepon = nomor_telepon
- self.list_karyawan = []
- def aktifkan_karyawan(self, karyawan):
- self.list_karyawan.append(karyawan)
- def nonaktifkan_karyawan(self, nama_karyawan):
- karyawan_nonaktif = None
- for karyawan in self.list_karyawan:
- if karyawan.nama == nama_karyawan:
- karyawan_nonaktif = karyawan
- break
- if karyawan_nonaktif is not None:
- self.list_karyawan.remove(karyawan_nonaktif)
- def total_pengeluaran(self):
- pengeluaran = 0
- for karyawan in self.list_karyawan:
- pengeluaran += karyawan.total_pendapatan()
- return pengeluaran
- def cari_karyawan(self, nama_karyawan):
- for karyawan in self.list_karyawan:
- if karyawan.nama == nama_karyawan:
- return karyawan
- return None
- # Create object karyawan sesuai dengan tugasnya masing-masing
- # seperti yang dinyatakan dalam tabel.
- ani = PembersihData('Ani', 25)
- budi = DokumenterTeknis('Budi', 18)
- cici = IlmuwanData('Cici')
- didi = IlmuwanData('Didi', 32, 20000000)
- efi = AnalisData('Efi')
- febi = AnalisData('Febi', 28, 12000000)
- # print(ani.total_pendapatan())
- # print(budi.total_pendapatan())
- # print(cici.total_pendapatan())
- # print(didi.total_pendapatan())
- # print(efi.total_pendapatan())
- # print(febi.total_pendapatan())
- # Create object perusahaan
- perusahaan = Perusahaan('ABC', 'Jl. Jendral Sudirman, Blok 11', '(021) 95812XX')
- # Aktifkan setiap karyawan yang telah didefinisikan
- perusahaan.aktifkan_karyawan(ani)
- perusahaan.aktifkan_karyawan(budi)
- perusahaan.aktifkan_karyawan(cici)
- perusahaan.aktifkan_karyawan(didi)
- perusahaan.aktifkan_karyawan(efi)
- perusahaan.aktifkan_karyawan(febi)
- # Cetak keseluruhan total pengeluaran perusahaan
- print(perusahaan.total_pengeluaran())
Dengan memahami data tipe, aritmatika, comparison, logical, assignment, conditional, looping, data structure, function, dan class maka sudah cukup memiliki dasar dalam memulai penggunaan bahasa Python.
ref:
https://www.w3schools.com/python/default.asp
luqman-hakim