Pendahuluan

Program python sederhana. Dunia menuju pada zaman AI, ML, dan Data science yang merupakan teknologi dominan pada saat ini. Seluruh teknologi yang disebutkan itu bergantung pada bahasa pemrograman Python dalam beberapa hal. Oleh sebab itu, menjadi master pada pemrograman Python akan membuka kesempatan dalam berkarir dan mendapatkan banyak peluang terbaik di seluruh planet ini.

Harapannya, Anda sebagai pembaca di sini dapat mulai belajar menggunakan atau berlatih untuk menjadi ahli atau mungkin menantang keterampilan Anda dengan masalah yang lebih sulit untuk dikerjakan dengan Python. Tidak perlu khawatir posisi Anda pada saat ini dalam hal keterampilan menggunakan Python. Dengan cara mencoba untuk mengerjakan proyek Python, Anda sudah pasti akan meningkatkan keterampilan dan membangun profil terbaik untuk menghadapi dunia yang kompetitif di luar sana. Meskipun tutorial Python cukup membantu dan memberikan pengetahuan yang cukup rinci dalam proses pembelajaran Anda. Pada suatu saat, akan datang kemampuan Anda untuk membuat kode dan sesuatu yang bermanfaat secara mandiri.

Sebelum memulai pada ide-ide atau contoh program Python sederhana, mari kita baca terlebih dahulu bagaimana proyek ini dapat membantu Anda sebagai Python developer serta platform mana yang harus Anda pertimbangkan sebelum memulai segala macam proyek Python.

Bagaimana Proyek Program Python  Sederhana Dapat Membantu Anda?

Membangun proyek Python dapat membantu Anda dalam berbagai hal, beberapa di antaranya tercantum pada poin-poin di bawah ini:

Meningkatkan kepercayaan diri

Melakukan berbagai hal secara mandiri dengan cara Anda menggunakan alat dan teknologi akan membangun kepercayaan diri Anda. Jika Anda membuat konten pada platform youtube, maka, hal ini akan membantu youtube menilai keahlian Anda sebagai Python developer, sehingga pemeringkatan konten video Anda akan tampil lebih baik. 

Menjelajah dan bereksperimen

Proyek membuat sesuatu akan memberikan kesempatan untuk memperkenalkan diri Anda dengan alat dan teknologi yang sedang tren yang diperlukan untuk menyelesaikan suatu proyek. Anda dapat memilih keterampilan Anda dalam bidang server, database, konsep UI, dan masih banyak lagi.

Menguasai keterampilan mengoding

Proyek adalah nama lain untuk latihan, kita pun tahu bahwa latihan adalah resep untuk unggul dalam segala hal. Setelah Anda mahir dalam menulis kode dengan bahasa pemrograman Python serta mengetahui dependensi - dependensi lain yang dibutuhkan. Maka, Anda akan merasakan efisiensi pembelajaran Anda dalam menaiki anak tangga untuk mengerjakan proyek yang lebih menantang.

Mempelajari mengenai siklus pengembangan software

Langkah ini penting untuk dipelajari ketika Anda merasa sudah siap menuju industri dan Anda telah mampu melakukan proyek pada kehidupan nyata. Sehingga, Anda harus belajar mengembangkan proyek dengan cara yang optimal dan terorganisir sebagai paradigma SDLC (Software Development Life Cycle).

Proyek Apa Yang ingin Anda Kerjakan?

Setelah Anda siap dan termotivasi untuk mengerjakan suatu proyek, Anda harus memikirkan apa yang akan dibangun dan pada platform mana untuk membangun proyek Python tersebut. Anda harus memulai dari minat terlebih dahulu, terlepas dari apakah hal tersebut sedang ngetren atau tidak. Lalu, apakah membutuhkan tingkat keahlian ngoding yang sedikit atau masif. Akan sulit untuk bertahan pada suatu proyek atau bahkan menyelesaikannya jika Anda memulai dengan sesuatu yang tidak menarik menurut Anda.

Ada tiga platform utama dimana Anda dapat memulai membangun proyek Anda. Blog ini akan memberikan gambaran umum mengenai tiga platform tersebut:

1. Web

Aplikasi web dapat berjalan di web maupun di perangkat apa pun tanpa perlu diunduh; satu-satunya persyaratan adalah harus ada akses internet. Aplikasi web memiliki frontend dan backend. Frontend bertanggung jawab untuk UI (User Interface) situs web. Sedangkan backend adalah dimana logika program, kode dan penyimpanan data terjadi.

Python developer berfokus pada kode backend. Oleh karena frontend pun merupakan hal yang penting. Maka, Python developer harus memiliki pengetahuan mengenai HTML, CSS, dan Javascript untuk membuat UI yang tampak sederhana. Dengan library tambahan, Python developer dapat menggunakan Python untuk backend dan frontend pada proyek Python tersebut. Django dan Flask adalah framework web populer untuk membangun aplikasi menggunakan Python.

2. UI Desktop

Membangun Aplikasi Desktop dengan Python adalah proyek yang bagus untuk pemula dan juga untuk pengguna menengah. Ada beberapa framework untuk membangun aplikasi desktop pada Python. PySimple GUI adalah framework Python yang user friendly, PyQt5 adalah framework GUI berbasis python tingkat lanjut. Aplikasi desktop yang dikembangkan pada nantinya dapat dibuat kompatibel dengan suluruh OS utama (Linux, Windows, atau macOS).

3. Command Line

Dalam aplikasi command line, interaksi user sepenuhnya bergantung pada terminal & shell. Aplikasi ini hanya berfungsi pada Windows Console, tidak memiliki bentuk grafik serta tidak adanya user interface visual. Python developer harus memasukkan perintah tertentu, sementara itu, pengguna memberikan input kepada aplikasi dengan menggunakan karakter ASCII, lalu aplikasi pun memberikan output berupa ASCII.

Aplikasi command line ini robust dan powerfull tetapi tidak user friendly. Sekarang saatnya untuk mencoba program Python sederhana sebagaimana dijabarkan pada bagian selanjutnya.

Ide proyek program python sederhana

Ini adalah list untuk proyek pemrograman python sederhana yang cocok untuk pemula ataupun menengah.

Menebak Angka

Proyek ini adalah permainan yang cukup menyenangkan untuk pemula. Program ini memberikan nomor acak dari 1 hingga 10, 1 hingga 100 atau rentang apa pun yang telah ditentukan. Lalu, pengguna harus menebak nomor tersebut setelah mengikuti petunjuk dari komputer. Setiap kali tebakan salah, maka, pengguna akan diminta untuk memilih apakah membutuhkan lebih banyak petunjuk agar memudahkan dalam menebak angka dengan mengorbankan pengurangan skor. Simbol matematika pun seperti kelipatan, habis dibagi, lebih besar atau lebih kecil, atau kombinasi semuanya dapat dijadikan sebagai petunjuk. 

Program ini pun membutuhkan fungsi untuk memeriksa apakah angka sebenarnya dimasukkan oleh pengguna atau tidak, lalu digunakan untuk membandingkan angka yang dimasukkan dengan angka sebenarnya, untuk mencari selisih antara kedua angka tersebut. 

Kode:

""" Program python sederhana - Menebak angka
----------------------------------------
"""
import random
attempts_list = []
def show_score():
    if len(attempts_list) <= 0:
        print("Saat ini belum ada skor tertinggi, kesempatan Anda untuk mengambilnya!")
    else:
        print("Skor tertinggi saat ini adalah {} percobaan".format(min(attempts_list)))
def start_game():
    random_number = int(random.randint(1, 10))
    print("Halo petualang! Selamat datang pada permainan tebak-tebakan angka!")
    player_name = input("Siapa nama Anda? ")
    wanna_play = input("Hi, {}, apakah Anda ingin bermain tebak angka? (Tulis Ya/Tidak) ".format(player_name))
    
    attempts = 0
    show_score()
    while wanna_play.lower() == "ya":
        try:
            guess = input("Pilih angka antara 1 dan 10: ")
            if int(guess) < 1 or int(guess) > 10:
                raise ValueError("Silahkan tebak angka di antara nya")
            if int(guess) == random_number:
                print("Selamat! Anda benar!")
                attempts += 1
                attempts_list.append(attempts)
                print("Anda melakukannya dengan {} percobaan".format(attempts))
                play_again = input("Apakah Anda ingin bermain lagi? (Tulis Ya/Tidak) ")
                attempts = 0
                show_score()
                random_number = int(random.randint(1, 10))
                if play_again.lower() == "tidak":
                    print("Terima kasih, sampai jumpa kembali!")
                    break
            elif int(guess) > random_number:
                print("Angkanya lebih kecil")
                attempts += 1
            elif int(guess) < random_number:
                print("Angkanya lebih besar")
                attempts += 1
        except ValueError as err:
            print("Oh tidak!, ini nilai yang salah. Silahkan mencoba lagi...")
            print("({})".format(err))
    else:
        print("Selamat, telah bermain game ini!")
if __name__ == '__main__':
    start_game()

Gunting batu kertas

Program atau mini-game ini dirancang saat Anda tidak memiliki kawan untuk bermain atau Anda sedang sendirian, lebih tepat nya untuk jomblo yang merana, hehe. Ada sejumlah fungsi yang dibutuhkan untuk membuat program ini, oleh karena itu mari kita lihat gambaran umumnya.

Program ini mengharuskan pengguna untuk melakukan langkah pertama sebelum membuat satu gerakan. Setelah langkah validasi, input akan dievaluasi.  Input yang dimasukkan bisa berupa string atau alfabet. Setelah mengevaluasi input string, pemenang ditentukan oleh fungsi hasil. Lalu,  skor babak akan diperbarui oleh fungsi pencatat skor. 

Program Python Sederhana - Gunting, batu ,kertas
Program Python Sederhana - Gunting, batu ,kertas

Kode:

# -*- coding: utf-8 -*-
"""
Program python sederhana - Gunting batu kertas
"""


from random import randint

#create a list of play options
t = ["Batu", "Kertas", "Gunting"]

#assign a random play to the computer
computer = t[randint(0,2)]

#set player to False
player = False

while player == False:
#set player to True
    player = input("Batu, Gunting, Kertas?")
    if player == computer:
        print("Seri!")
    elif player == "Batu":
        if computer == "Kertas":
            print("Anda Kalah!", computer, "menutup", player)
        else:
            print("Anda Menang!", player, "memukul", computer)
    elif player == "Kertas":
        if computer == "Gunting":
            print("Anda Kalah!", computer, "memotong", player)
        else:
            print("Anda Menang!", player, "menutup", computer)
    elif player == "Gunting":
        if computer == "Batu":
            print("Anda Kalah...", computer, "memukul", player)
        else:
            print("Anda Menang!", player, "memotong", computer)
    else:
        print("Input tidak valid. Perhatikan penulisan Anda!")
    #player was set to True, but we want it to be False so the loop continues
    player = False
    computer = t[randint(0,2)]

Pemblokir situs web

Kita semua tahu bahwa saat browsing di internet banyak situs yang tidak diinginkan muncul yang dapat mengalihkan perhatian kita. Program ini dapat membantu kita dalam situasi tersebut. Program python sederhana ini dibangun untuk memblokir situs web tertentu agar tidak dapat dibuka. Program ini bermanfaat bagi orang-orang yang perhatiannya mudah teralihkan ke situs media sosial saat melakukan suatu pekerjaan yang serius. 

Kode:

""" Program python sederhana - Website Blocker
----------------------------------------
"""
import time
from datetime import datetime as dt

#r adalah raw untuk string
hosts_path = r"C://Windows//System32//drivers//etc"   
hosts_temp = "hosts"
redirect = "127.0.0.1"
#User dapat memilih website yang akan di blok
web_sites_list = ["www.facebook.com", "facebook.com"]    
while True:
   if dt(dt.now().year, dt.now().month, dt.now().day, 9) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day,22):
       print("Waktu kerja")
       with open(hosts_path, "r+") as file:
           content = file.read()
           for website in web_sites_list:
               if website in content:
                   pass
               else:
                   file.write(redirect+" "+website+"\n")
   else:
       print("Fun time")
       with open(hosts_path, "r+") as file:
           content = file.readlines()
           file.seek(0)   # reset pointer ke bagian atas file text
           for line in content:
            # overwrite seluruh file
               if not any(website in line for website in web_sites_list):
                   file.write(line)
               
           file.truncate() # Baris ini di gunakan untuk menghapus baris (termasuk DNS)
   time.sleep(5)

Algoritma pencarian bilangan biner

Nama tersebut cukup jelas untuk memberikan gambaran umum tentang program tersebut. Program ini mengharuskan Anda untuk membuat daftar angka antara 0 hingga rentang apa pun yang Anda inginkan, dengan setiap angka berikutnya memiliki selisih 2 di antaranya. 

Ketika pengguna memasukkan nomor acak yang akan dicari, program memulai pencariannya dengan membagi daftar angka menjadi dua bagian. Bagian pertama akan mencari nomor yang dibutuhkan, lalu, jika ditemukan separuh lainnya akan ditolak, begitupun sebaliknya. Pencarian berlanjut hingga nomor tersebut ditemukan atau ukuran subarray nya menjadi nol. Ide pembuatan program Python sederhana ini pun dapat membantu Anda untuk mencari elemen dalam suatu daftar. 

Kode:

""" Program python sederhana - Algoritma pencari bilangan biner
----------------------------------------
"""
# implementasi pencarian bilangan biner secara iteratif pada Python
def binary_search(a_list, item):
    # """Melakukan bilangan biner secara iteratif untuk menemukan posisi dari integer pada list yg terurut
    # a_list -- list dari integer yang terurut
    # item -- integer yang anda cari pada posisi tertentu integer 
    first = 0
    last = len(a_list) - 1
    while first <= last:
        i = (first + last) / 2
        if a_list[i] == item:
            return ' ditemukan pada posisi '.format(item=item, i=i)
        elif a_list[i] > item:
            last = i - 1
        elif a_list[i] < item:
            first = i + 1
        else:
            return ' tidak di temukan di dalam list'.format(item=item)
# Implementasi pencarian bilangan biner secara recursive pada Python
def binary_search_recursive(a_list, item):
    # """Melakukan pencarian bilangan biner secara recursive dari integer pada list yang berurutan.
    # a_list -- list dari integer yang terurut
    # item -- integer yang anda cari pada posisi tertentu integer 
    first = 0
    last = len(a_list) - 1
    if len(a_list) == 0:
        return ' tidak di temukan di dalam list'.format(item=item)
    else:
        i = (first + last) // 2
        if item == a_list[i]:
            return ' ditemukan'.format(item=item)
        else:
            if a_list[i] < item:
                return binary_search_recursive(a_list[i+1:], item)
            else:
                return binary_search_recursive(a_list[:i], item)

Program python sederhana untuk Kalkulator

Dalam membuat program ini, Anda akan belajar mendesain UI grafis dan membuat Anda terbiasa dengan library seperti Tkinter. Library ini memungkinkan Anda untuk membuat tombol yang dapat melakukan operasi berbeda serta menampilkan hasilnya pada layar. 

Program Python Sederhana - Calculator
Program Python Sederhana - Calculator

Kode:

""" Program python sederhana - Calculator
----------------------------------------
"""
def addition ():
    print("Penambahan")
    n = float(input("Silahkan masukkan angka: "))
    t = 0 
    ans = 0
    while n != 0:
        ans = ans + n
        t+=1
        n = float(input("Silahkan masukkan angka lain (masukkan 0 untuk menghitung): "))
    return [ans,t]
def subtraction ():
    print("Pengurangan")
    n = float(input("Silahkan masukkan angka: "))
    t = 0 
    ans = 0
    while n != 0:
        ans = ans - n
        t+=1
        n = float(input("Silahkan masukkan angka lain (masukkan 0 untuk menghitung): "))
    return [ans,t]
def multiplication ():
    print("Perkalian")
    n = float(input("Silahkan masukkan angka: "))
    t = 0 #Total number enter
    ans = 1
    while n != 0:
        ans = ans * n
        t+=1
        n = float(input("Silahkan masukkan angka lain (masukkan 0 untuk menghitung): "))
    return [ans,t]
def average():
    an = []
    an = addition()
    t = an[1]
    a = an[0]
    ans = a / t
    return [ans,t]

while True:
    list = []
    print(" Program Python pertamaku!")
    print(" Tulis 'a' untuk penambahan")
    print(" Tulis 's' untuk pengurangan")
    print(" Tulis 'm' untuk perkalian")
    print(" Tulis 'v' untuk average")
    print(" Tulis 'q' untuk keluar")
    c = input(" ")
    if c != 'q':
        if c == 'a':
            list = addition()
            print("Jawaban = ", list[0], " total inputs ",list[1])
        elif c == 's':
            list = subtraction()
            print("Jawaban = ", list[0], " total inputs ",list[1])
        elif c == 'm':
            list = multiplication()
            print("Jawaban = ", list[0], " total inputs ",list[1])
        elif c == 'v':
            list = average()
            print("Jawaban = ", list[0], " total inputs ",list[1])
        else:
            print ("Maaf, karakter tidak valid")
    else:
        break

Alarm Jam

Ini adalah aplikasi Python Command Line Interface (CLI) yang menarik untuk developer tingkat menengah dalam membuat program python sederhana. Orang-orang di seluruh dunia menggunakan fitur jam alarm pada perangkat mereka. Akan tetapi, program ini dapat diubah dengan cara yang sedikit berbeda. Beberapa link YouTube tertentu dapat ditambahkan ke dalam teks file. Lalu, program ditulis sedemikian rupa sehingga ketika pengguna menyetel alarm, maka kode akan memilih link secara acak, lalu, akan mulai memutar link YouTube tersebut.

Kode:

""" Program python sederhana - Alarm Clock
----------------------------------------
"""
import datetime
import os
import time
import random
import webbrowser
# Jika video URL tidak ada, maka buatlah yang baru dengan script di bawah ini
if not os.path.isfile("youtube_alarm_videos.txt"):
    print('Creating "youtube_alarm_videos.txt"...')
    with open("youtube_alarm_videos.txt", "w") as alarm_file:
        alarm_file.write("https://www.youtube.com/watch?v=HQaCF2F_MRo")
def check_alarm_input(alarm_time):
    """Memeriksa apakah user telah memasukkan waktu alarm yang valid"""
    if len(alarm_time) == 1: # [Hour] Format
        if alarm_time[0] < 24 and alarm_time[0] >= 0:
            return True
    if len(alarm_time) == 2: # [Hour:Minute] Format
        if alarm_time[0] < 24 and alarm_time[0] >= 0 and \
           alarm_time[1] < 60 and alarm_time[1] >= 0:
            return True
    elif len(alarm_time) == 3: # [Hour:Minute:Second] Format
        if alarm_time[0] < 24 and alarm_time[0] >= 0 and \
           alarm_time[1] < 60 and alarm_time[1] >= 0 and \
           alarm_time[2] < 60 and alarm_time[2] >= 0:
            return True
    return False
# User input untuk waktu alarm
print("Set waktu alarm (Contoh 06:30 or 18:30:00)")
while True:
    alarm_input = input(">> ")
    try:
        alarm_time = [int(n) for n in alarm_input.split(":")]
        if check_alarm_input(alarm_time):
            break
        else:
            raise ValueError
    except ValueError:
        print("ERROR: Masukkan format waktu dengan HH:MM atau HH:MM:SS")
# Konversi waktu alarm dari [H:M] atau [H:M:S] ke dalam detik
seconds_hms = [3600, 60, 1] # Jumlah detik dalam jam, menit dan detik
alarm_seconds = sum([a*b for a,b in zip(seconds_hms[:len(alarm_time)], alarm_time)])
#Waktu hari ini dalam detik
now = datetime.datetime.now()
current_time_seconds = sum([a*b for a,b in zip(seconds_hms, [now.hour, now.minute, now.second])])
# Hitung jumlah detik hingga alarm berhenti
time_diff_seconds = alarm_seconds - current_time_seconds
# Jika perbedaan waktunya adalah negatif, set alarm untuk hari selanjutnya
if time_diff_seconds < 0:
    time_diff_seconds += 86400 # jumlah detik dalam satu hari
# Tampilkan jumlah waktu hingga alarm berbunyi
print("Alarm akan berbunyi dalam %s" % datetime.timedelta(seconds=time_diff_seconds))
# Sleep mode hingga alarm berbunyi
time.sleep(time_diff_seconds)
# Waktu alarm berbunyi
print("Ayo bangun!")
# Load daftar video URL
with open("youtube_alarm_videos.txt", "r") as alarm_file:
    videos = alarm_file.readlines()
# Buka random video dari list
webbrowser.open(random.choice(videos))

Tic-Tac-Toe

Game ini sangat populer di antara kita semua dan bahkan menyenangkan untuk dibuat sebagai program Python. 

Ini adalah permainan antara dua pemain yang terdiri dari sembilan kotak. Setiap pemain memilih gerakan mereka dengan O atau X dan menandai kotak mereka di setiap kesempatan. Pemain yang berhasil membuat tanda dalam satu baris, baik secara diagonal, horizontal, atau vertikal akan menang. Tantangan bagi pemain lain adalah memblokir permainan lawannya dan juga untuk membuat rantai. 

Program Python Sederhana - tic tac toe

Untuk membuat program ini dengan Python, maka, kita dapat menggunakan library Pygame yang telah dimuat dengan grafik dan suara komputer. 

Kode:

""" Program python sederhana - Tic Tac Toe
----------------------------------------
"""
import random
import sys
board=[i for i in range(0,9)]
player, computer = '',''
# Pojok, tengah dan lokasi lainnya, berturut-turut
moves=((1,7,3,9),(5,),(2,4,6,8))
# Kombinasi pemenang
winners=((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6))
# Tabel
tab=range(1,10)
def print_board():
    x=1
    for i in board:
        end = ' | '
        if x%3 == 0:
            end = ' \n'
            if i != 1: end+='---------\n';
        char=' '
        if i in ('X','O'): char=i;
        x+=1
        print(char,end=end)
def select_char():
    chars=('X','O')
    if random.randint(0,1) == 0:
        return chars[::-1]
    return chars
def can_move(brd, player, move):
    if move in tab and brd[move-1] == move-1:
        return True
    return False
def can_win(brd, player, move):
    places=[]
    x=0
    for i in brd:
        if i == player: places.append(x);
        x+=1
    win=True
    for tup in winners:
        win=True
        for ix in tup:
            if brd[ix] != player:
                win=False
                break
        if win == True:
            break
    return win
def make_move(brd, player, move, undo=False):
    if can_move(brd, player, move):
        brd[move-1] = player
        win=can_win(brd, player, move)
        if undo:
            brd[move-1] = move-1
        return (True, win)
    return (False, False)

# Komputer AI menggunakan function di bawah ini
def computer_move():
    move=-1
    # Jika saya menang, yang lain tidak dihiraukan.
    for i in range(1,10):
        if make_move(board, computer, i, True)[1]:
            move=i
            break
    if move == -1:
       # Jika player menang, lakukan penghadangan.
        for i in range(1,10):
            if make_move(board, player, i, True)[1]:
                move=i
                break
    if move == -1:
        # Mencoba mengambil posisi yang di inginkan.
        for tup in moves:
            for mv in tup:
                if move == -1 and can_move(board, computer, mv):
                    move=mv
                    break
    return make_move(board, computer, move)
def space_exist():
    return board.count('X') + board.count('O') != 9
player, computer = select_char()
print('Player adalah [%s] dan komputer adalah [%s]' % (player, computer))
result='%%% Seri ! %%%'


while space_exist():
    print_board()
    print('#Silahkan memulai duluan ! [1-9] : ', end='')
    move = int(input())
    moved, won = make_move(board, player, move)
    if not moved:
        print(' >> Input tidak valid ! Coba lagi !')
        continue
    
    if won:
        result='*** Selamat ! Anda memenangkannya ! ***'
        break
    elif computer_move()[1]:
        result='=== Maaf Anda kalah! Silahkan mencoba lagi di lain kesempatan ! =='
        break;
print_board()
print(result)

Konversi Mata Uang

Ini adalah program langsung dengan GUI sederhana. Nama tersebut cukup jelas menggambarkan peran program ini untuk mengubah mata uang dari satu unit ke unit lainnya. Misalnya, mengkonversi rupiah ke USD atau euro. 

Tkinter, merupakan interface standar Python yang dapat digunakan untuk merancang dan mengembangkan aplikasi ini. 

Kode:

""" Program python sederhana - Currency Converter
----------------------------------------
"""
import urllib.request
import json
def currency_converter(currency_from, currency_to, currency_input):
    # Yahoo sudah tidak membuka api currency converter.
    yql_base_url = "https://query.yahooapis.com/v1/public/yql"
    yql_query = 'select%20*%20from%20yahoo.finance.xchange%20where%20pair' \
                '%20in%20("'+currency_from+currency_to+'")'
    yql_query_url = yql_base_url + "?q=" + yql_query + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"
    try:
        yql_response = urllib.request.urlopen(yql_query_url)
        try:
            json_string = str(yql_response.read())
            json_string = json_string[2:]
            json_string = json_string[:-1]
            print(json_string)
            yql_json = json.loads(json_string)
            last_rate = yql_json['query']['results']['rate']['Rate']
            currency_output = currency_input * float(last_rate)
            return currency_output
        except (ValueError, KeyError, TypeError):
            print(yql_query_url)
            return "JSON format error"
    except IOError as e:
        print(str(e))
currency_input = 1
currency_from = "USD"
currency_to = "IDR"
rate = currency_converter(currency_from, currency_to, currency_input)
print(rate)

Kesimpulan

Itulah contoh-contoh program python sederhana yang dapat Anda coba untuk meningkatkan pemahaman dalam menggunakan bahasa pemrograman Python. Semoga latihan membuat program tersebut dapat membantu Anda dalam menyelesaikan masalah-masalah yang sedang di hadapi.

Artikel lain mengenai Python:
Visualisasi Data
Tensorflow Object Detection

Pada artikel Kali ini kita akan Berkenalan Dengan Seaborn Python, yaitu salah satu library pada Python untuk visualisasi data. Libary ini sangat berguna ketika Anda bekerja untuk memahami suatu data yang sederhana maupun kompleks. Oleh karena itu, tunggu apalagi. Mari kita membahas mengenai Seaborn.

Berkenalan Dengan Seaborn

Seaborn adalah library untuk membuat grafik dan statistik dengan menggunakan Python. Library ini di bangun berdasarkan library matplotlib serta terintegrasi dengan struktur data pada panda.

Berikut adalah beberapa fungsi yang dapat di lakukan oleh seaborn:

Seaborn bertujuan agar visualisasi menjadi bagian penting dari proses eksplorasi dan pemahaman data. Seaborn berorientasi pada fungsi plotting berdasarkan dataset yang beroperasi pada dataframe dan array yang berisi seluruh dataset yang secara internal melakukan pemetaan semantik dan agregasi statistik yang diperlukan untuk menghasilkan grafik informatif.

Instalasi Seaborn

Instalasi Seaboard dapat dilakukan dengan dua cara yaitu:

pip install seaborn

Atau jika Anda menggunakan Anaconda distribution

conda install seaborn

 Dependencies

Ada beberapa dependencies yang perlu diperhatikan sebelum menjalankan seaborn pada komputer/laptop Anda.

Diantaranya:

optional:

Memulai Seaborn

Setelah Anda selesai menginstall Seaborn, maka saat nya untuk berkenalan dengan seaborn Python. Seaborn memiliki contoh dataset yang dapat Anda coba. Untuk memulainya silahkan eksekusi perintah ini. (Anda dapat menggunakan Jupyter notebook atau Python IDE lainnya, pada artikel ini, pada artikel ini adalah menggunakan Jupyter Notebook karena kelebihannya dapat di eksekusi pada cell dan menampilkan hasilnya pada cell dibawahnya).

import seaborn as sns
df = sns.load_dataset("penguins")
sns.pairplot(df, hue="species")

Jika Anda menggunakan Jupyter Notebook, pastikan menyalakan matplotlib mode untuk dapat langsung melihat hasilnya. Namun, jika tidak Anda harus memanggil fungsi matplotlib.pyplot.show() di bawah nya. Perintah nya adalah:

import matplotlib.pyplot as plt
plt.show()

Overview Fungsi Plot Pada Seaborn

Semakin sering Anda berinteraksi dan berkenalan dengan seaborn Python, maka Anda akan melihat serangkaian fungsi plot. Pada artikel selanjutnya kita akan mengeksplorasi fitur spesifik yang dapat dilakukan oleh masing-masing fungsi. Artikel ini hanya akan memperkenalkan kepada Anda mengenai berbagai jenis fungsi yang akan Anda hadapi dalam menggunakan Seaborn.

Fungsi Sama Untuk Tugas Serupa

Penamaan pada Seaborn adalah flat; seluruh fungsionalitas dapat di akses di dengan sederhana. Sebenarnya, kode pada Seaborn itu sendiri terstruktur secara hierarki, dengan fungsi modul untuk mencapai tujuan visualisasi serupa dengan cara yang berbeda. Pada sebagian besar dokumentasi mengenai seaborn yang telah di susun oleh para maintenernya. Maka, Anda akan menemukan nama-nama seperti "relasional", "distribusi", dan "kategorikal".

Sebagai contoh, modul distribusi untuk mendefinisikan fungsi-fungsi yang memiliki spesialisasi dalam merepresentasikan distribusi data. Termasuk metode yang sudah kita kenal kenal dengan baik seperti histogram:

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
Berkenalan Dengan Seaborn Python - Modul Distribusi
Berkenalan Dengan Seaborn Python - Modul Distribusi

Bersamaan dengan opsi yang sama, namun mungkin kita kurang familiar, seperti pada contoh kernel density estimation :

Berkenalan Dengan Seaborn Python  - KDE Plot
Berkenalan Dengan Seaborn Python - KDE Plot

Fungsi yang berada di dalam modul memiliki banyak kode yang mendasari dan menawarkan fitur serupa yang mungkin tidak ada pada komponen lain dari library (seperti multiple="stack" pada contoh di atas). Library ini dirancang untuk memfasilitasi peralihan di antara representasi visual yang berbeda saat Anda menelusuri kumpulan data, karena representasi yang berbeda sering kali memiliki kekuatan dan kelemahan yang saling melengkapi.

Fungsi Figure-Level vs Axes-Level

Selain dengan modul yang berbeda, ada yang dinamakan cross-cutting classification dari fungsi Seaborn sebagai "axes-level" atau "figure-level". Contoh di atas adalah fungsi "axes-level". Fungsi ini untuk membuat plot data ke dalam satu object matplotlib.pyplot.Axes, yang merupakan nilai dari fungsi tersebut.

Sebaliknya, "figure-level" berinterface dengan matplotlib melalui objek seaborn, biasanya adala FacetGrid, yang mengelola suatu gambar. Setiap modul memiliki fungsi "figure-level" tunggal, yang menawarkan satu antarmuka ke dalam berbagai fungsi "axes-level".

Sebagai contoh, displot() adalah fungsi "figure-level" untuk modul distribusi. Secara default adalah untuk menggambar suatu histogram, menggunakan kode yang sama seperti pada histplot():

sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
Berkenalan Dengan Seaborn Python - Displot
Berkenalan Dengan Seaborn Python - Displot

Untuk membuat kernel density plot, Anda dapat menggunakan kode yang sama seperti pada kdeplot(), lalu pilih menggunakan parameter kind parameter kind:

sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack", kind="kde")
Berkenalan Dengan Seaborn Python - Displot KDE
Berkenalan Dengan Seaborn Python - Displot KDE

Anda akan melihat bahwa plot figure-level sebagian besar terlihat seperti pada axes-level, namun ada beberapa perbedaan. Terutama pada penempatan posisi legenda yang berada di luar plot. Selain itu, mereka pun memiliki bentuk yang sedikit berbeda

Fitur yang paling berguna pada fungsi figure-level adalah kemudahannya dalam mebuat gambar dengan banyak sub-plot.. Misalnya, dibanding menumpukkan tiga plot distribusi untuk setiap spesies penguin dalam satu sumbu yang sama, kita dapat memisahkannya dengan memplot setiap distribusi pada seluruh kolom gambar, seperti pada contoh di bawah ini:

sns.displot(data=penguins, x="flipper_length_mm", hue="species", col="species")
Berkenalan Dengan Seaborn Python - Multiple Subplot
Berkenalan Dengan Seaborn Python - Multiple Subplot

Fungsi figure-level membungkus axes-level, lalu meneruskan argumen kata kunci yang spesifik (seperti ukuran bin pada histogram) kepada fungsi yang mendasarinya. Ini berarti mereka cukup fleksibel, namun ada sisi negatifnya, yaitu: parameter khusus ini tidak muncul pada docstrings. Beberapa fitur mungkin sulit untuk dapat ditemukan, Anda mungkin perlu melihat d dokumentasi yang lengkap sebelum memahami bagaimana cara untuk mencapai tujuan tertentu dalam penggunaannya.

Fungsi axes-level membuat plot self-contained

Fungsi axes-level memiliki kemampuan untuk bertindak sebagai pengganti drop-in pada fungsi yang terdapat pada matplotlib. Fungsi ini dapat menambahkan label pada sumbu dan legenda secara otomatis tanpa mengubah apa pun di luar sumbu tempat mereka ditarik. Ini berarti fungsi tersebut dapat disusun menjadi angka kompleks pada matplotlib dengan hasil yang dapat di prediksi.

Fungsi axes-level memanggil secara internal pada matplotlib.pyplot.gca(), yang menghubungkan ke interface "state-machine" pada matplotlib. Sehingga, plot akan di gambar pada sumbu "currently-active". Selain itu, mereka pun menerima ax=  argumen, yang terintegrasi dengan interface berorientasi objek, serta memungkinkan Anda untuk menentukan dengan tepat ke mana arah plot harus pergi:

f, axs = plt.subplots(1, 2, figsize=(8, 4), gridspec_kw=dict(width_ratios=[4, 3]))
sns.scatterplot(data=penguins, x="flipper_length_mm", y="bill_length_mm", hue="species", ax=axs[0])
sns.histplot(data=penguins, x="species", hue="species", shrink=.8, alpha=.8, legend=False, ax=axs[1])
f.tight_layout()
Berkenalan Dengan Seaborn Python - Scatter Plot dan histplot
Berkenalan Dengan Seaborn Python - Scatter Plot dan histplot

Fungsi figure-level

Sebaliknya, fungsi figure-level tidak dapat (dengan mudah) di buat dengan menggunakan plot lain. Secara desain, fungsi ini "memiliki" gambar mereka sendiri, termasuk inisialisasi, sehingga tidak ada disarankan untuk menggunakan fungsi figure-level dalam menggambar plot kepada sumbu yang ada. Keterbatasan ini memungkinkan fungsi figure-level untuk mengimplementasikan fitur lain seperti meletakkan legenda di luar plot.

Namun demikian, ada kemungkinan untuk melampaui fungsi yang terdapat pada figure-level dengan cara mengakses sumbu matplotlib pada objek yang dikembalikan, lalu menambahkan elemen lain ke dalam plot seperti ini:

import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
g = sns.relplot(data=tips, x="total_bill", y="tip")

x = np.linspace(0, 10, 100)
plt.plot(x, x + 1, linestyle='dashed', color="r")
Berkenalan Dengan Seaborn Python  - Figure plot dan matplotlib
Berkenalan Dengan Seaborn Python - Figure plot dan matplotlib

Menyesuaikan plot dari fungsi figure-level

Fungsi figure-level menghasilkan sebuah FacetGrid  instance, yang memiliki beberapa metode untuk menyesuaikan atribut plot dengan cara pengorganisasian subplot. Misalnya, Anda dapat mengubah label pada sumbu eksternal hanya denga menggunakan satu baris kode:

g = sns.relplot(data=penguins, x="flipper_length_mm", y="bill_length_mm", col="sex")
g.set_axis_labels("Panjang Flipper (mm)", "Panjang Bill (mm)")
Berkenalan Dengan Seaborn Python  - Relabelling Axis
Berkenalan Dengan Seaborn Python- Relabelling Axis

Meskipun mudah, hal ini menambahkan sedikit kerumitan, karena Anda perlu ingat bahwa metode ini bukan bagian dari API matplotlib dan hanya ada pada saat menggunakan fungsi figure-level.

Menentukan ukuran gambar

Untuk menambah atau mengurangi ukuran plot pada matplotlib, Anda dapat mengatur lebar dan tinggi dari seluruh gambar, baik ketika di dalam rcParams global, ketika sedang menyiapkan plot (misalnya dengan parameter figsize  dari matplotlib.pyplot.subplots() ), atau dengan memanggil metode pada objek gambar (misalnya matplotlib.Figure.set_size_inches()  ). Saat menggunakan fungsi axes-level pada Seaborn, aturan yang sama akan berlaku, yaitu: ukuran plot ditentukan oleh ukuran gambar yang menjadi bagiannya dan layout sumbu pada gambar tersebut.

Saat menggunakan fungsi figure-level, ada beberapa perbedaan utama. Pertama, fungsi itu sendiri memiliki parameter untuk mengontrol ukuran gambar. Kedua, height  dan aspect , memiliki parameter ukuran sedikit berbeda dibandingkan width . Parameter height  dalam matplotlib (menggunakan parameter pada seaborn, width = height * apsect ). Yang paling perlu diperhatikan adalah, parameter tersebut sesuai dengan ukuran setiap subplot , bukan ukuran gambar secara keseluruhan

Untuk mengilustrasikan perbedaan antara kedua pendekatan ini, berikut adalah output default dari matplotlib.pyplot.subplots() dengan satu subplot:

f, ax = plt.subplots()
Berkenalan Dengan Seaborn Python - Subplot kosong
Berkenalan Dengan Seaborn Python - Subplot kosong
f, ax = plt.subplots(1, 2, sharey=True)
Berkenalan Dengan Seaborn Python - 2 subplot kosong share y
Berkenalan Dengan Seaborn Python - 2 subplot kosong share y

Sebaliknya, plot yang dibuat oleh fungsi figure-level akan berbentuk persegi. Untuk mendemonstrasikannya, mari kita membuat plot kosong dengan menggunakan FacetGrid  secara langsung. Hal ini terjadi di balik layar dalam fungsi seperti relplot(), displot() atau catplot():

g = sns.FacetGrid(penguins)
Berkenalan Dengan Seaborn Python - Plot Face Grid
Berkenalan Dengan Seaborn Python - Plot Face Grid

Ketika menambahkan kolom, gambar tersebut akan menjadi lebih lebar, sehingga subplotnya akan memiliki ukuran dan bentuk yang sama:

g = sns.FacetGrid(penguins, col="sex")
Berkenalan Dengan Seaborn Python - Dua Kolom Face Grid
Berkenalan Dengan Seaborn Python - Dua Kolom Face Grid

Dan Anda dapat menyesuaikan ukuran dan bentuk setiap subplot tanpa memperhitungkan jumlah total baris dan kolom pada gambar:

g = sns.FacetGrid(penguins, col="sex", height=3.5, aspect=.75)
Berkenalan Dengan Seaborn Python - Dua kolom facegrid dengan ukuran custom
Berkenalan Dengan Seaborn Python - Dua kolom facegrid dengan ukuran custom

Hasilnya adalah Anda dapat menetapkan variabel faceting  tanpa berhenti memikirkan tentang bagaimana Anda perlu menyesuaikan ukuran gambar total. Kelemahannya adalah, ketika Anda ingin mengubah ukuran gambar, Anda perlu mengingat bahwa segala sesuatunya bekerja sedikit berbeda dari yang dilakukan oleh matplotlib.

 Kelebihan relatif dari fungsi figure-level

Keuntungan Kekurangan
Faceting mudah oleh variabel data Banyak parameter tidak ada dalam tanda tangan fungsi
Legenda di luar plot secara default Tidak boleh menjadi bagian dari gambar matplotlib yang lebih besar
Kustomisasi tingkat gambar yang mudah API berbeda dari matplotlib

Selain itu, fungsi figure-level memiliki beberapa kompleksitas tambahan yang dapat membuat hal-hal menjadi lebih membingungkan bagi pemula. Namun, dengan fitur-fitur yang berbeda, memberinya keunggulan tambahan. Dokumentasi resmi tutorial dari Seaborn, sebagian besar menggunakan fungsi figure-level, karena fungsi tersebut menghasilkan plot yang lebih bersih, dan direkomendasikan untuk digunakan pada aplikasi yang lebih besar lagi. Satu situasi di mana fungsi ini bukan pilihan yang baik adalah ketika Anda perlu membuat sesuatu yang kompleks dan mandiri untuk menyusun berbagai jenis plot yang berbeda. Pada titik ini, disarankan untuk menyiapkan gambar dengan menggunakan matplotlib secara langsung dan mengisi masing-masing komponen menggunakan fungsi axis-level.

Menggabungkan beberapa tampilan pada data

Dua fungsi pembuatan plot yang penting pada Seaborn tidak cocok dengan skema klasifikasi yang telah di bahas pada bagian sebelumnya. Fungsi-fungsi ini, jointplot() dan pairplot() , menggunakan berbagai jenis plot dari modul yang berbeda untuk merepresentasikan berbagai aspek kumpulan data dalam satu gambar. Kedua plot terserbut adalah fungsi figure-level dan membuat gambar dengan jumlah subplot yang banyak secara default. Namun keduanya menggunakan objek yang berbeda dalam mengelola gambar: JointGrid dan PairGrid.

jointplot() berfungsi untuk memplot hubungan atau distribusi gabungan dua variabel sambil menambahkan sumbu marginal yang menunjukkan distribusi univarian dari masing-masing variabel secara terpisah:

sns.jointplot(data=penguins, x="flipper_length_mm", y="bill_length_mm", hue="species")
Berkenalan Dengan Seaborn Python - Join plot
Berkenalan Dengan Seaborn Python - Join plot

Sama seperti hal nya pada pairplot() - Fungsi ini menggabungkan gambar gabungan dan marginal - Tidak hanya terfokus pada satu hubungan antar data, melainkan memvisualisasikan setiap kombinasi secara bersamaan.

sns.pairplot(data=penguins, hue="species")
Berkenalan Dengan Seaborn Python - Pair Plot
Berkenalan Dengan Seaborn Python - Pair Plot

Di belakang layar, fungsi ini menggunakan fungsi axes-level yang telah Anda temui pada scatterplot() dan kdeplot(). Fungsi ini pun memiliki parameter kind yang memungkinkan Anda dengan cepat menukarnya ke dalam representasi yang berbeda:

sns.jointplot(data=penguins, x="flipper_length_mm", y="bill_length_mm", hue="species", kind="hist")
Berkenalan Dengan Seaborn Python - Join plot 2
Berkenalan Dengan Seaborn Python - Join plot 2

Kesimpulan

Pada artikel ini Anda telah berkenalan dengan seaborn Python, yang merupakan salah satu library yang paling sering digunakan untuk visualisasi data menggunakan Python. Anda telah mengetahui beberapa fungsi dasar pada library ini. Namun, masih banyak yang akan kita bahas pada website ini mengenai Seaborn. Oleh karena itu, tetap datangi website ini untuk mendapatkan update terbaru dan tidak terlewatkan.

Referensi:

Seaborn
Matplotlib

Contoh Aplikasi Python. Bahasa pemrograman Python pertama kali dirilis oleh Guido Van Rossum pada tahun 1991 dan masih digunakan hingga saat ini, menjadikannya salah satu bahasa pemrograman yang dapat bertahan selama lebih dari 30 tahun tanpa kekurangan peminat. Di sisi lain, pengguna Python telah membludak dalam beberapa tahun terakhir. Saat ini terdapat lebih dari 500 bahasa pemrograman yang sedang dikembangkan dan terus bertambah, tetapi faktanya sebagian besar bahasa ini jarang dikenal atau digunakan di luar lingkungan akademis.

Contoh Aplikasi Python

Saat ini, Python adalah salah satu bahasa yang digunakan di lingkungan akademis, dan mungkin tidak digunakan di Indonesia, tetapi banyak sekolah atau perguruan tinggi di seluruh dunia yang menggunakan Python untuk memperkenalkan pemrograman komputer karena dianggap sebagai bahasa yang ramah pemula.

Mengatakan Pyhon sebagai bahasa untuk mengajarkan pemrograman atau untuk pemula saja adalah kekeliruan, karena banyak perusahaan dunia yang namanya (mungkin) sudah anda kenal ternyata menggunakan Python, dan berikut adalah aplikasi yang dibuat dengan menggunakan Python.

Google

Dari awal berdiri, Google sudah menggunakan Python, bahkan Python merupakan salah satu bahasa pemrograman yang penting bagi Google, itulah mengapa Google pernah merekrut kreator Python Guido Van Rossum untuk bekerja di Google.

[Contoh aplikasi Python]  Google
[Contoh aplikasi Python] Google

Kutipan pendiri Google "Python dapat dicapai, C ++ harus dicapai", yang berarti jika Anda ingin mengontrol memori dan latensi rendah, gunakan C ++, dan selebihnya gunakan Python sebanyak mungkin, bahkan di Perl atau Bash, Nanti script tersebut akan diubah lagi menjadi Python karena kemudahan perawatannya.

Saat ini Python adalah salah satu bahasa pemrograman sisi server resmi Google. Selain Pyhton, Google juga menggunakan C ++, Java, dan Go.

Spotify

Penyedia layanan musik streaming terbesar di dunia dengan hampir 75 juta pelanggan, Spotify. Spotify memanfaatkan Python untuk analisis data dan backend. Di backend Spotify, ada banyak layanan yang berkomunikasi melalui ZeroMQ, yang merupakan framework dan library open source untuk jaringan.

Spotify dibuat menggunakan Python dan C++. Alasan Spotify dibuat menggunakan Python dikarenakan Spotify sangat menyukai kecepatan perkembangan jaringan dari Python.

Sistem rekomendasi Spotify mengandalkan sejumlah besar analisis data untuk menjelaskan analisisnya, dan Spotify menggunakan Luigi (modul Python yang disinkronkan dengan Hadoop). Modul open source ini menangani satu library dan bekerja dengan library lain, dan dengan cepat menangani error-log.

Happy Fresh

Happy Fresh menjamin bahan makanan dikirim dari toko yang Anda pilih dalam waktu satu jam saja. Dengan lebih dari 500.000 pengguna di Indonesia Happy Fresh dengan cepat menjadi salah satu aplikasi pengiriman bahan makanan paling populer bagi millenial.

Menurut  tim teknik Happy Fresh dalam kasus perkiraan permintaan, tim Happy Fresh memiliki kode Python yang melakukan perkiraan, membaca semua data, dan menentukan pembelian yang berulang untuk Minggu depan dan transaksi selanjutnya.

Netflix

Salah satu kegunaan utama Python di aplikasi Netflix adalah Central Alert Gateway Aplikasi RESTful ini akan mengubah rute peringatan dan mengirimkannya ke grup atau individu yang memiliki izin untuk melihat peringatan. Selain itu, aplikasi secara otomatis akan merestart atau menghentikan proses yang dianggap bermasalah. Selain C.A.G, Python juga digunakan dalam aplikasi untuk menelusuri riwayat dan mengubah pengaturan keamanan.

Instagram

Seperti kita ketahui bersama, Instagram telah merevolusi komunikasi visual dan pemasaran digital melalui media foto yang merupakan contoh aplikasi Python. Ada 400 juta pengguna aktif setiap hari, yang tentunya menghilangkan persepsi bahwa aplikasi python tidak terlalu scalable. Insinyur Instagram Hui Ding mengatakan bahwa moto pengembang aplikasi di Instagram adalah "lakukan hal-hal sederhana dulu", yang dapat dilakukan menggunakan Python, karena pengembangan aplikasi Python di Instagram sangat ramah pengguna, sederhana, dan rapi. Selain itu, karena Python sangat populer, tidak sulit mencari developer baru untuk memperluas tim.

Pinterest

Pinterest termasuk salah satu layanan contoh aplikasi Python yang wajib diikuti. Diluncurkan pada di tahun 2010, Pinterest merupakan jejaring sosial yang menawarkan konsep unik dan berbeda dari layanan serupa lainnya. Di Pinterest, pengguna bisa dengan leluasa mengumpulkan dan membagikan foto tanpa diganggu oleh berbagai batasan yang membatasi. Foto yang dibagikan tidak terbatas pada foto yang Anda unggah, tetapi juga menyertakan foto pengguna lain dan situs web tertentu.

Menurut Paul Sciarra selaku Co-Founder Pinterest, mereka menggunakan Python dan Django yang dimodifikasi besar-besaran untuk landasan aplikasinya.

Dropbox

Dropbox pertama kali diluncurkan pada September 2008. Python memainkan peran penting di Dropbox, dan Dropbox adalah aplikasi komputer dan server yang ditulis dalam bahasa pemrograman ini. Menurut Drew Houston, salah satu pendiri Dropbox, Python dipilih karena kesederhanaan, fleksibilitas, dan penampilannya.

Gojek dan Grab

Gojek dan Grab  merupakan layanan berbagi tumpangan yang saat ini begitu ramai digunakan masyarakat Indonesia. Kedua aplikasi ojek online ini bahkan menjadi penguasa pasar layanan pesan antar makanan dan daily needs di Asia Tenggara.

[Contoh aplikasi Python] Grab dan Gojek
[Contoh aplikasi Python] Grab dan Gojek

Menurut programer dari Gojek, aplikasi mereka dibuat dengan bahasa pemrograman Python, . Mereka menggunakan Python untuk semua fitur di dalam aplikasinya. Bahasa pemrograman ini juga mendukung sebagian besar layanan yang berjalan di Gojek dan Grab saat ini.

Reddit

Reddit adalah platform komunitas yang memiliki cakupan forum terluas di dunia yang merupakan salah satu contoh aplikasi Python. Secara umum reddit adalah situs hiburan, karena setiap anggota dapat berpartisipasi dalam memberikan teks atau tautan, maka dapat memberikan banyak informasi.

Pada dasarnya, Reddit adalah platform yang mengandalkan komunitas online. Dengan mengizinkan mereka untuk memposting tautan dan informasi mereka sendiri, ini dapat menentukan apa yang layak diberitakan dan apa yang tidak layak diberitakan. Pengguna situs kemudian akan bertanggung jawab untuk memilih (naik atau turun) pada posting ini untuk menentukan informasi terbaik.

[Contoh Aplikasi Python] Reddit

Menurut Reddit co-founder Steve Huffman dan Alexis Ohanian mengatakan bahwa Reddit masih tetap menggunakan Python sebagi bahasa pemrograman karena banyaknya referensi. Dan tidak itu saja, Reddit menggunakan Python karena bahasa pemrograman yang mudah dibaca dan mudah diubah.

Face Filter

Face Filter merupakan contoh aplikasi Python spesial-efek yang awalnya digunakan untuk filter beberapa aplikasi Face Swap, namun saat ini Face Filter banyak ditemukan di berbagai macam aplikasi seperti Instagram, Tiktok, Snapchat dan lain sebagainya.

Seiring berkembangnya teknologi Face Filter, developer meyakini bahwa Face Filter merupakan masa depan bagi efek visual dan mulai menjadi fitur wajib yang harus ada.

Karena konstruksi awal Face Filter dibuat menggunakan C dan C ++, akan lebih mudah untuk mengintegrasikan Python. Hingga saat ini Face Filter tetap menggunakan Python karena selalu dapat menghadirkan solusi terbaik untuk kebutuhan developer.

Seperti yang sudah kita ketahui, Python memang banyak digunakan oleh para akademisi dan perusahaan startup karena kesederhanaan Python  dan mudah dipahami bagi programmer pemula.

Kesimpulan

Pada artikel ini Anda telah mengetahui contoh aplikasi Python yang di gunakan pada perusahaan-perusahaan terkenal di seluruh dunia. Oleh karena itu, tidak menutup kemungkinan jika Anda menguasai Python dengan sempurna, akan mampu untuk membuat aplikasi-aplikasi yang mutakhir lainnya.

Rekomendasi artikel untuk memperdalam Python:

Dasar Pemrograman Python
Pemrograman Berorientasi Objek Pada Python

Video Tutorial Python:
Auftechnique Youtube Channel

[Belajar Machine Learning] Setelah beberapa tahun naik turun, kecerdasan buatan dan Machine Learning saat ini kembali ke masa jayanya. Kecerdasan Buatan kembali digandrungi, dimana penerapannya dilakukan secara masal pada aplikasi-aplikasi bisnis dan sosial media jaman sekarang seperti Facebook, Twitter, Google, Amazon, dan bahkan berbagai aplikasi besar dari Indonesia seperti Go-jek, Tokopedia, dan sebagainya.

Machine Learning merupakan salah satu cabang dari ilmu Kecerdasan Buatan, khususnya ilmu yang mempelajari tentang bagaimana komputer mampu belajar dari data untuk meningkatkan kecerdasan buatannya.

Machine learning memiliki tujuan pada pengembangan sebuah sistem yang mampu belajar secara mandiri untuk memutuskan sesuatu keputusan, tanpa harus berulang kali diprogram oleh manusia. Dengan menggunakan metode ini, mesin tidak hanya dapat menemukan aturan untuk perilaku terbaik dalam pengambilan keputusan, tetapi juga beradaptasi dengan perubahan yang terjadi.

Kelebihan Python untuk Belajar Machine Learning

Mengapa menggunakan Python? Saat ini Python adalah salah satu bahasa pemrograman yang paling banyak digunakan dalam bidang Data Science dan Machine Learning.

Python adalah bahasa antarmuka yang populer dan kuat. Python adalah bahasa dengan fungsi lengkap dan platform yang dapat digunakan untuk meneliti dan membangun sistem produksi. Ada banyak modul dan pustaka yang dapat digunakan untuk mengimplementasikan pembelajaran mesin dengan Python.

Jadi apa saja kelebihan Python dalam pembelajaran mesin pembelajaran

Mudah Dipelajari

Python menyediakan kode yang pendek dan mudah dibaca. Meskipun algoritme kompleks dan alur kerja fleksibel adalah kekuatan sebenarnya dari Machine Learning dan AI, kesederhanaan Python memungkinkan pengembang dan Data Scientist untuk menulis sistem tepercaya. Ilmu data dapat fokus pada pemecahan masalah Machine Learning daripada berfokus pada perbedaan teknis dalam bahasa pemrograman. Selain itu, Python menarik banyak orang karena mudah dipelajari. Kode Python mudah dipahami manusia, yang membuat pemodelan Machine Learning menjadi sangat mudah.

Keberagaman Library yang Tinggi dan Berbagai Macam

Menerapkan algoritme pembelajaran mesin biasanya merupakan proses yang kompleks dan memakan waktu. Anda harus memiliki lingkungan digital yang terstruktur dengan baik dan teruji untuk memungkinkan data scientist memberikan solusi pengkodean terbaik. Untuk mempersingkat waktu Data Scientist, pemrogram telah memilih banyak kerangka kerja dan pustaka Python. Python memiliki banyak Library yang tersedia, memungkinkan ilmuwan atau pengembang data untuk memecahkan masalah yang sangat kompleks dalam hitungan menit atau bahkan detik.

Contoh Library yang disertakan dalam Python adalah sebagai berikut:

Ada banyak bahasa pemrograman yang mendukung pustaka pembelajaran mesin, tidak hanya Python (seperti Julia dan R), tetapi Python adalah salah satu bahasa pemrograman favorit yang dipilih oleh peneliti dan praktisi untuk mengimplementasikan pembelajaran mesin.

Langkah-Langkah Machine Learning

Untuk memulai proyek pembelajaran mesin, Anda harus memahami langkah-langkah berikut

Mendefinisikan suatu masalah

Machine Learning harus mampu mendeteksi dan memilah masalah yang ada di dalam programnya. Termasuk pengumpulan data. Data asli dapat berupa Excel, MS Access, file teks, dan lain sebagainya. Langkah ini membentuk dasar untuk pembelajaran di masa depan. Semakin besar keragaman, kepadatan, dan kuantitas data yang relevan, semakin baik prospek pembelajaran mesin.

Menyiapkan Data

Setiap proses analisis akan berkembang dengan kualitas data yang digunakan. Kita perlu meluangkan waktu untuk menentukan kualitas data, lalu mengambil langkah untuk menyelesaikan masalah seperti kehilangan data.

Setiap project pengenalan machine learning atau papun itu yang berkaitan tentang kecerdasan buatan, memiliki beberapa tahap yang identik. Dan dalam banyak kasus, menurut tutorial, hasilnya akan sangat bagus saat memulai dan mengikuti tutorial ( dengan kumpulan data sudah disediakan). Namun, saat menggunakan proses dan algoritme yang sama untuk memulai dengan data yang Anda miliki, hasilnya akan sangat berbeda.

[Belajar Machine Learning] Ilustrasi Persiapan Data
[Belajar Machine Learning] Ilustrasi Persiapan Data

Data yang banyak tentu baik, akan tetapi jika dalam data yang banyak tersebut terdapat kesalahan hal tersebut tentu sangat mempengaruhi hasil yang ada.

Akhirnya, dalam proyek berbasis kecerdasan buatan, persiapan data yang matang dan dapat digunakan adalah yang paling penting dan memakan waktu.

Menganalisis Algoritma

Langkah ini melibatkan pemilihan algoritma dan representasi data yang sesuai dalam bentuk model.

Data yang disiapkan dibagi menjadi dua bagian : pelatihan dan pengujian. Bagian pertama (data pelatihan) digunakan untuk pengembangan model. Bagian kedua (data uji) digunakan sebagai referensi.

Di Python, semua pemrosesan data dilakukan dengan angka. Oleh karena itu, jika kita melihat isi dari digit.images, maka akan dihasilkan matriks digital, yang diperoleh dari sekumpulan citra yang akan diolah atau berupa citra tunggal, dan fitur atau variabel telah diproses ke dalam matriks angka.

[Belajar Machine Learning] Ilustrasi Mengecek Algoritma
[Belajar Machine Learning] Ilustrasi Mengecek Algoritma

 Tidak hanya gambar, jika Anda ingin menggunakan python untuk mengolah data, semua data yang tidak terstruktur, terstruktur, dan semi-terstruktur akan diekstrak terlebih dahulu sebagai matriks digital. Baik berupa File suara, video dan teks.

Karena kita menggunakan metode yang supervised untuk pemodelan, pertama-tama kita harus memisahkan dataset antara matriks input atau fitur (X) dan output atau label target (Y). Sesuai dengan persyaratan metode yang diawasi, model Machine Learning dilatih untuk mengenali sebuah tanda atau label.

Mengupdate dan Evaluasi Hasil

Untuk menguji keakuratan digunakan bagian kedua dari data (data uji). Langkah ini menentukan keakuratan algoritma yang di seleksi berdasarkan hasil pengujian. Pengujian yang lebih baik untuk memeriksa keakuratan model adalah dengan melihat kinerja data yang tidak digunakan sama sekali selama proses pembuatan model.

Operator Apply Mode atau pembaruan hasil digunakan untuk menerapkan model yang telah dilatih sebelumnya menggunakan data training pada unlabeled data (data uji). Tujuannya adalah untuk mendapatkan prediksi atas data tidak berlabel yang belum memiliki label (data uji). Yang perlu diperhatikan adalah bahwa data pengujian harus memiliki atribut sequence (urutan), type (tipe), dan role (fungsi) yang sama dengan data training.

Menampilkan Peningkatan kinerja

Langkah ini mungkin melibatkan pemilihan model lain atau memperkenalkan lebih banyak variabel untuk meningkatkan efisiensi. Inilah mengapa dibutuhkan banyak waktu untuk pendataan dan penyiapan data.

[Belajar Machine Learning] Pendeteksi Objek
[Belajar Machine Learning] Pendeteksi Objek

Sederhana bukan? Ikuti saja langkah-langkah operator untuk memasuki ruang kerja Python. Anda perlu memahami masing-masing fungsi operator dan parameternya, dan tentunya teori Machine Learning, karena ini akan sangat berguna ketika Anda mulai membangun proses Anda sendiri untuk menghasilkan model yang baik. Ingat, Pyhton hanyalah sebuah aplikasi, jika ingin menguasi machine learning Anda harus belajar tentang teorinya. Semakin banyak Anda belajar dan mencoba, semakin cepat Anda akan menguasainya.

Contoh gambar di atas adalah hasil dari algoritma machine learning untuk mendeteksi objek dari model yang telah di training sebelumnya. Ada banyak sekali model yang dapat digunakan untuk aplikasi tersebut. Sehingga diperlukan optimasi model agar sesuai dengan hardware yang digunakan dan juga kualitas atau kecepatan pendeteksian pada objek tertentu.

Nah, itulah tadi belajar Machine Learning Menggunakan Python beserta keunggulan dan tahapan-tahapan yang perlu Anda lakukan.

Kesimpulan

Anda telah mengetahui secara umum untuk belajar machine learning dengan menggunakan Python. Banyak sekali keunggulan menggunakan bahasa ini dalam hal kecerdasan buatan. Oleh karena itu tidak ada ruginya untuk memulai dari sekarang untuk memahaminya. Karena masa depan peran machine learning akan sangat krusial di dalam segala aspek kehidupan kita.

Artikel terkait mengenai belajar machine learning:
Apa itu Tensorflow?
Cara Training Data Untuk Model Pendeteksian Objek
Memanfaatkan Google Colab Untuk Training Model Machine Learning
Cara Menggunakan Jupyter Notebook

Video Tutorial Mengenai Python dan IoT:
Auftechnique Youtube Channel

Sejarah Python. Python adalah bahasa interpreter, interpreter disini apabila dibandingkan dengan Compiler, Python akan memproses kode program baris demi baris. Oleh karena itu metode yang digunakan sama dengan PHP, PERL dan metode lainnya. Python juga merupakan bahasa pemrograman tingkat tinggi atau bahasa tingkat tinggi, yang berarti instruksi dalam Python sangat mirip dengan bahasa manusia.

Python adalah bahasa pemrograman luwes yang mendukung pemrograman berfokus pada objek. Python telah memperoleh beberapa lisensi berbeda dari berbagai versi. Namun pada prinsipnya bahkan untuk tujuan komersial sekalipun, Python bisa didapatkan dan digunakan secara gratis. Karena menurut definisi open source atau General Public License (GPL), lisensi Python tidak akan bertentangan.

Sejarah Python

Python dikembangkan oleh Guido VR di CWI di Belanda pada tahun 90-an dan merupakan kelanjutan dari bahasa pemrograman ABC. Versi terbaru yang dirilis oleh CWI adalah 1.2. Pada tahun 1995, Guido pindah ke CNRI sambil terus mengembangkan Python. Versi terbaru yang dirilis adalah 1.6. Pada tahun 2000, pengembang inti Guido dan Python pindah ke BeOpen.com, sebuah perusahaan komersial, dan mendirikan BeOpen PythonLabs. Python 2.0 dirilis oleh BeOpen.

sejarah python
Sejarah Python (Illustrasi)

Setelah Python versi kedua dirilis, Guido dan beberapa anggota tim PythonLabs berubah menjadi DigitalCreations. Pada kala itu sekelompok programmer yang bekerja bersama dengan Guido dan Python S.F terus menguji cobakan Python. Python S.F (Python Software Foundation)  merupakan organisasi nirlaba yang telah ditetapkan sebagai pemilik kekayaan intelektual Python sejak versi 2.1, sehingga dapat mencegah Python dimiliki oleh perusahaan komersial. Saat ini rilis Python sudah mencapai versi 2.7.13 dan versi 3.9.0.

Karena kecintaan Guido pada Flying Circus dari acara TV Monty Python, Guido memilih Python sebagai nama programnya.

Mengapa Harus Menggunakan Python?

Perbedaan antara Python dengan bahasa pemrograman lainnya terletak pada aturan penulisan kode program. Bahasa Python juga mendukung hampir semua sistem operasi, bahkan untuk sistem operasi Unix pun Python sudah disematkan di hampir semua produknya. Dengan menggunakan kode yang sederhana dan mudah, programmer dapat mengutamakan pengembangan aplikasi yang sedang dikembangkan. Selain itu, Python adalah produk multi platform dan open source.

Fitur yang dimiliki Python

Selain sejarah Python yang menarik untuk di ketahui. Di bawah ini merupakan beberapa fitur yang dimiliki oleh bahasa pemrograman Python, diantaranya:

Meskipun Pyhton memiliki banyak fitur, pastinya memiliki Pro dan Kontra

Pro dan Kontra Python

Sama seperti bahasa pemrograman lainnya, Python merupakan bahasa yang tentunya semakin sedikit dalam penerapannya. Sejauh ini diketahui bahwa Python memiliki keunggulan dalam kemudahan penggunaan dan kesederhanaan bahasanya, sehingga para pemula tidak akan menemui kesulitan besar saat mempelajarinya.

Seperti dari sejarah Python yang kita semua ketahui, Python dapat menjalankan program yang kompleks dengan sintaks dan semantik sederhana. Oleh karena itu, dalam melakukannya, programmer tidak perlu berurusan dengan data dan kode yang kompleks. Ini juga disesuaikan dengan jumlah bahasa yang perlu diterapkan. Python memungkinkan lebih sedikit bahasa untuk menjalankan program yang kompleks. Terakhir, sistem bahasa pemrograman dengan fungsi manajemen memori otomatis mendukung Python.

[Sejarah Python] Pro dan Kontra Python
[Sejarah Python] Pro dan Kontra Python

Kontra dari Python adalah keterbatasan dalam mengambil data. Tidak seperti bahasa pemrograman lain yang memiliki kemampuan untuk mengakses data dalam jumlah besar, Python sebenarnya memiliki kemampuan yang lebih terbatas.

Inilah sebabnya mengapa agak lambat saat menghadapi jenis pemrograman tertentu (misalnya, pada sistem IOS dan Android). Karena batasan ini, jika bahasa pemrograman Python harus diinstal pada komputer berbasis multi-prosesor, tingkat dukungannya juga rendah. Nantinya, akan menyebabkan banyak kesalahan dan keterlambatan proses dan hasil akhir.

Platform Apa Saja Yang Dapat Menjalankan Python

Seperti bahasa pemrograman dinamis lainnya, Python sering digunakan sebagai bahasa scripting, walaupun sebenarnya penggunaan bahasa tersebut mencakup konteks penggunaan yang lebih luas, dan ini biasanya dilakukan tanpa bahasa scripting. Python dapat digunakan untuk berbagai fungsi development software dan dapat bekerja dengan lancar di berbagai platform sistem operasi.

[Sejarah Python] Ilustrasi operating system
[Sejarah Python] Ilustrasi operating system

Saat ini kode Python dapat berjalan di berbagai platform sistem operasi, beberapa di antaranya adalah Microsoft Windows, Macintosh, Java Virtual Machine, Ubuntu, Huaweii dan Symbian (untuk produk Nokia)

Hasil Dari Menggunakan Python

Python dapat menghasilkan banyak program, yang paling menarik dari Python adalah dapat membuat program menampilkan kata "Hello World" secara sederhana,. Selain itu ada beberapa point yang patut di ketahui selain sejarah Python, yaitu:

Dukungan Komunitas yang Aktif

Berkat dukungan komunitas aktif di seluruh dunia, Python menjadi program yang terus berkembang dan bertahan lama dari awal mula sejarah Python. Banyak forum atau website yang sering membagikan pengalaman mereka dalam menggunakan Python. Hal ini memungkinkan pengguna dan developer pemula dapat dengan mudah mengajukan pertanyaan dan berbagi pengetahuan mengenai ilmu pemrograman ini.

Nah itulah tadi segala sesuatu tentang Python baik sejarah sampai manfaat yang dimiliki, masih mau belajar Python?

Kesimpulan

Pada artikel kali ini Anda telah mengetahui sejarah Python serta paparan singkat mengenai apa saja yang dapat dilakukan oleh Python. Dengan begitu diharapkan Anda mendapatkan gambaran mengenai bahasa pemrograman ini yang menjadi sangat populer seiring banyaknya programmer memilih menggunakan Python.

Untuk melengkapi pengetahuan Anda mengenai Python. Anda dapat melanjutkan membaca artikel lebih jauh mengenai Python pada link di bawah ini:

Dasar bahasa pemrograman Python
Cara Menggunakan Jupyter Notebook
Tutorial Youtube Python dasar:
Auftechnique Youtube Channel

Pada artikel ini Anda akan mengetahui cara menggunakan jupyter notebook untuk project Anda.

Adapun daftar isi dari artikel ini ialah:

Intro Cara Menggunakan Jupyter Notebook

Jupyter notebook adalah aplikasi berbasis web open source yang dapat digunakan untuk membuat dan membagikan dokumen. Dokumen ini berisi kode, persamaan matematika, visualisasi maupun text. Jupyter notebook ini di kelola oleh orang-orang yang tergabung pada Project Jupyter.

Jupyter notebook merupakan project spin-off dari IPython, yang pada mulanya memiliki proyek tersendiri yaitu Notebook IPyhton. Memiliki nama Jupyter karena dapat mendukung bahasa pemrograman Julia, Python dan R. Jupyter disajikan dengan kernel IPython, sehingga memungkinkan Anda untuk menulis program dengan menggunakan Python. Namun, pada saat ini ada lebih dari 100 kernel lainnya yang dapat Anda gunakan.

[Cara menggunakan Jupyter Notebook] Tampilan full Jupyter Project. Sumber:Jupyter.org

Menjalankan Jupyter notebook

Jupyter notebook tidak termasuk di dalam Python package. Oleh karena itu, Anda perlu menginstallnya secara terpisah jiga ingin memakai nya.

Cara Menggunakan Jupyter Notebook

Ada banyak pilihan distribusi bahasa pemrogramanan Python. Pada artikel ini akan difokuskan pada dua saja, salah satu diantaranya adalah menginstall Jupyter notebook. Distribusi Python paling populer adalah CPython, yang bisa Anda dapatkan dari website official nya.

Cara Install Jupyter Notebook

Anda dapat menginstall Jupyter Notebook secara praktis dengan menggunakan "pip" untuk instalasi Jupyter notebook. Perintah yang harus Anda tulis pada powershell adalah seperti ini:

pip install jupyter

Selain itu CPython, distribusi Python yang populer lainnya adalah Anaconda. Anaconda memiliki installer package tersendiri yang disebut dengan conda. Anaconda hadir dengan paket library scientifik, termasuk Jupyter Notebook. Oleh karena itu, Anda tidak perlu melakukan instalasi tambahan.

Cara menggunakan Jupyter notebook anaconda navigation
[Cara menggunakan Jupyter notebook] Anaconda Navigation

Cara Menggunakan Jupyter notebook server

Setelah Anda menginstall Jupyter notebook, sekarang saatnya untuk mempelajari bagaimana cara menggunakannya. Jika Anda menggunakan windows, maka dapat mencarinya pada kolom pencarian program, lalu tulis Jupyter Notebook, lalu klik.
Atau Anda dapat menuju folder instalasi jupyter notebook, lalu buka terminal windows dan eksekusi perintah:

jupyter notebook

Dengan perintah tersebut, maka akan terbuka browser baru dengan URL: http://localhost:8888/tree. Sehingga Anda akan melihat tampilan browser seperti ini:

Cara menggunakan jupyter notebook
[Cara menggunakan Jupyter notebook] Tampilan browser Jupyter Notebook

Perlu diperhatikan bahwa saat ini Anda hanya menjalankan Jupyter notebook server. Untuk membuat notebook itu sendiri, akan di bahas pada bagian selanjutnya.

Membuat Notebook

Setelah Anda memahami cara menggunakan Jupyter Notebook Server. Sekarang saatnya untuk mengetahui cara membuat dokumen pada Jupyter Notebook

Hal pertama yang perlu dilakukan adalah dengan klik tombol "New" di bagian kanan atas, lalu akan terbuka beberapa pilihan. Pilihlah Python 3, selanjutnya halaman web akan terlihat seperti pada gambar di bawah ini:

cara menggunakan jupyter notebook
[Cara menggunakan Jupyter notebook] Membuat Notebook baru

Penamaan

Jika Anda lihat pada bagian judul, secara default akan membuat file dengan nama "untitled", ini adalah nama dari halaman jupyter notebook Anda. Karena nama tersebut tidak memiliki arti, maka Anda dapat mengubahnya dengan mudah.

Anda dapat langsung menggerakkan mouse pada tulisan "untitled" tersebut, lalu klik textnya. Selanjutnya Anda dapat mengubah nama apapun tergantung kebutuhan Anda. Misalkan Anda ingin mengubahnya menjadi "Hello Jupyter":

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Mengubah nama judul

Menjalankan Cell

Secara default, setiap cell pada notebook berupa kode yang siap untuk di eksekusi berdasarkan kernel yang Anda pilih pada bagian awal.

Dalam hal ini, Anda telah menggunakan Python 3 sebagai kernel, artinya adalah Anda dapat menulis kode Python pada cell tersebut. Oleh karena pada awalnya Anda hanya memiliki cell yang kosong, sehingga, Notebook tersebut tidak dapat melakukan apapun.

Untuk memverifikasi bahwa semuanya berfungsi sesuai harapan, Anda dapat menambahkan kode Python kedalam cell tersebut, lalu mencoba untuk menjalankannya.

Silahkan Anda coba pada cell tersebut:

print('Hello Jupyter!')

Dengan menjalankan cell, itu artinya Anda mengeksekusi konten pada cell tersebut. Untuk mengeksekusinya, Anda tinggal pilih cell yang akan di eksekusi dan klik tombol "Run" pada bagian atas. Selain itu Anda pun dapat menggunakan shortcut "Shift+Enter".

Ketika Anda menjalankan kode di atas, maka akan memiliki output seperti pada gambar di bawah ini:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Menjalankan cell

Jika Anda memiliki beberapa cell di dalam Notebook, maka Anda menjalankan cell secara berurutan. Selain itu, Anda dapat menggunakan variable dan import pada seluruh cell. Hal ini dapat mempermudah untuk memisahkan kode menjadi bagian-bagian logika tanpa perlu mengimport ulang ataupun mendefinisikan variable maupun fungsi pada setiap cell.

Ketika Anda menjalankan cell, Anda akan melihat bahwa ada beberapa tanda kurung siku di sebelah kata "Ln" pada bagian kiri sel. Tanda kurung siku ini akan otomatis terisi dengan angka yang menunjukkan urutan menjalankan cell. Misalnya, jika Anda menjalankan notebook baru, lalu menjalankan cell pertama pada bagian atas notebook, maka tanda kurung siku itu akan menunjukkan angka 1.

Menu

Jupyter Notebook memiliki beberapa menu interaktif. Lokasi dari menu ini seperti pada aplikasi web lainnya, yaitu ada di bagian atas. Daftar menu yang terdapat pada Jupyter Notebook, diantaranya:

Pada artikel ini tidak akan dibahas secara mendetail mengenai isi dari setiap menu terserbut, namun, lebih difokuskan pada itemnya.

Menu pertama ialah File Menu. Di dalam nya, Anda dapat membuat Notebook yang baru atau membuka yang file yang telah ada sebelumnya. Pada bagian ini Anda pun dapat memberi nama ulang Notebook tersebut.

Selanjutnya adalah menu Edit. Di sini Anda dapat melakukan operasi cut, copy dan paste dari suatu cell. Selain itu, Anda dapat melakukan proses delete, split, merge ataupun mengatur ulang posisi dari suatu cell.

Jika Anda perhatikan pada beberapa item di dalam menu ada yang berwarna abu-abu. Ini artinya bahwa tidak sedang diaplikasikan pada cell yang sedang di pilih. Sebagai contoh, jika cell yang sedang Anda pilih memiliki tipe berupa "code", maka Anda tidak dapat menambahkan gambar pada cell tersebut. Namun, jika tipe cell yang Anda pilih berupa "Markdown", Anda dapat menambahkan gambar pada cell ini. Jika Anda mendapatkan menu yang abu-abu ini, cobalah ubah tipe cell nya, maka Anda akan dapat melihat menu tersebut akan dapat digunakan.

Menu View berguna untuk Toogling visibilitas dari header dan toolbar. Anda pun dapat mengaktifkan atau menonaktifkan nomor baris dalam cell. Pada menu ini pun, Anda dapat mengotak-atik toolbar suatu cell.

Untuk memasukkan cell baru berada di atas maupun di bawah dari cell yang sedang di pilih, Anda dapat menggunakan pilihan menu Insert.

Pilihan Menu cell, memungkinkan Anda untuk menjalankan satu cell, kumpulan maupun seluruh cell yang terdapat pada Notebook. Pada menu ini pun Anda dapat mengubah tipe cell.

Jika Anda berencana untuk membagikan Notebook dengan orang lain, Anda dapat menggunakan menu clear output. Sehingga orang lain dapat menjalankan setiap cell secara mandiri.

Menu Kernel untuk memilihi jenis kernel yang digunakan pada project Notebook Anda di belakang layar. Disini Anda dapat merestart nya, lalu mengoneksikan ulang, mematikannya ataupun mengganti kernel sesuai dengan kebutuhan Anda.

Anda mungkin tidak akan sering mengotak-atik kernel, akan tetapi terkadang ketika kita hendak melakukan debugging pada Jupyter Notebook, maka Anda akan melakukan restart kernel.

Menu Widget adalah untuk menyimpan atau membersihkan status widget. Widget pada dasarknya adalah JavaScript code yang dapat Anda tambahkan ke dalam cell untuk membuat konten dinamis menggunakan Python atau kernel lain.

Yang terakhir adalah menu Help. Di sini Anda dapat mempelajari berbagai jenis fitur dan cara menggunakan jupyter notebook sebagai bahan referensi.

Menjalankan Terminal dan yang lain

Jupyter Notebook memungkinkan Anda untuk memulai lebih dari sekedar Notebook. Anda pun dapat membuat file berupa text, folder ataupun Terminal pada browser. Kembali pada homepage yang telah di buka sebelumnya atau menuju link http://localhost:8888/tree. Kembali menuju tombol "new", lalu pilih salah satu opsi lainnya.

Terminal ini mungkin cukup menarik, karena ia dapat menjalankan terminal sistem operasi Anda pada browser. Sehingga Anda dapat menjalankan bash, Powershell, dan sebagainya pada browser, lalu menjalankan perintah shell yang mungkin Anda butuhkan di sana.

Memeriksa yang sedang berjalan

Selain itu pada homepage Jupyter Server (http://localhost:8888/tree) ada dua tab lainnya: Running dan Cluster

Tab Running akan memberitahu Notebook dan Terminal mana yang saat ini sedang running. Hal ini sangat berguna ketika Anda ingin menshutdown server, namun Anda perlu memastikan semua data telah tersimpan. Namun tidak perlu khawatir, karena Notebook menjalankan autosave secara berkala, sehingga kehilangan data sangat jarang terjadi.

Menambahkan Konten

Jupyter notebook mensupport untuk menambahkan "rich content" di dalam cell nya. Pada bagian ini, Anda akan memiliki gambaran umum mengenai beberapa hal yang dapat dilakukan pada cell dengan menggunakan Markup dan Kode.

Jenis Cell

Secara teknis ada empat macam sel: Code, Markdown, Raw NBConvert, dan Heading.

Jenis cell berupa Heading tidak lagi dapat di support oleh versi terbaru dari Jupyter Notebook. Namun, Anda dapat menggunakan tipe cell Markdown untuk heading.

Tipe cell Raw NBConvert adalah tipe yang hanya ditujukan untuk penggunaan secara khusus ketika menggunakan nbconvert pada command line. Pada dasarnya memungkinkan Anda untuk mengontrol format dengan cara yang sangat spesifik saat mengonversi dari Notebook ke format lain, misalnya ke dalam bentuk pdf.

Styling Teks

Jupyter Notebook mendukung Markdown, yang merupakan bahasa markup dari superset HTML. Tutorial kali ini akan membahas beberapa dasar dari apa yang dapat Anda lakukan dengan menggunakan tipe cell Markdown.

Atur cell menjadi Markdown, lalu tulislah text di bawah ini:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Tulisan italic

Saat Anda menjalankan cell, maka hasilnya akan terlihat seperti ini:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Terlihat bahwa hasilnya menjadi italic

Jika Anda ingin menjadikan text tersebut menjadi Bold , maka Anda dapat menggunakan dua tanda underscore pada bagian depan dan belakang kata tersebut. Itulah cara menggunakan jupyter notebook untuk keperluan styling konten

Header

Membuat header cukup sederhana, Anda hanya perlu menggunakan tanda tagar. Semakin banyak tanda tagar artinya header semakin mengecil. Selain itu, Jupyter Notebook pun memberikan gambar preview untuk Anda.

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Tingkatan header

Setelah Anda mengeksekusinya, maka hasilnya akan menunjukkan format yang teratur.

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Bentuk header setelah di eksekusi

List

Anda dapat membuat list berupa (point) dengan menggunakan tanda dash, plus ataupun tanda bintang. Ini contoh nya:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] List pada Jupyter Notebook

Kode dan Highlight Sintaks

Jika Anda ingin memasukkan contoh kode, dimana Anda tidak ingin pengguna menjalankannya, maka dapat menggunakan Markdown. Untuk menghighlight code di baris tersebut, Anda hanya perlu menggunakan tanda petik terbarik di antara nya. Jika Anda ingin menghighlightnya pada suatu block, maka Anda dapat menggunakan tiga tanda petik terbalik, contohnya:

Cara menggunakan jupyter notebook
[Cara menggunakan jupyter notebook] Highlight Kode

Mengeksport Notebook

Ketika Anda bekerja dengan Jupyter notebook, Anda akan menemukan bahwa perlunya membagikan hasilnya kepada orang non-teknis. Jika hal itu Anda hadapi, maka Anda dapat menggunakan nbconvert yang telah terintegrasi dengan Jupyter Notebook. Hasil konversi file tersebut dapat berupa:

nbconvert menggunakan Jinja template untuk mengkonversikan file notebook (.ipynb) ke dalam format tersebut.

Jinja adalah template engine yang di buat untuk Python. Perlu diperhatikan bahwa nbconvert tersebut bergantung kepada Pandoc dan TeX agar dapat mengeksportnya kedalam bentuk seluruh format di atas.

Bagaimana menggunakan nbconvert

Untuk mengeksekusi perintah nbconvert, tidak menggunakan banyak parameter, sehingga mempelajari untuk memahaminya menjadi lebih mudah. Buka command prompt dan navigasikan kepada folder yang memiliki file Jupyter Notebook. Untuk memerintahkan konversi, maka Anda dapat mengunakan:

jupyter nbconvert <input notebook> --to <output format>

Contoh penggunaan

Misalkan Anda memiliki Notebook bernama contoh_py.ipynb dan ingin mengubahnya menjadi file PDF. Maka perintah yang harus Anda eksekusi adalah:

jupyter nbconvert contoh_py.ipynb --to pdf

Ketika Anda menjalankan perintah ini, Anda akan melihat beberapa output yang memberitahukan mengenai proses konversi. nbconvert akan menunjukkan warning dan error jika memang terjadi masalah ketika dalam prosesnya. Asumsikan bahwa seluruhnya berjalan dengan baik, maka Anda akan mendapatkan output file bernama contoh_py.pdf di dalam folder yang sama.

Proses konversi menjadi bentuk file yang lain pun sama. Anda tinggal memerintahkan nbconvert output file apa yang Anda inginkan (PDF, Markdown, HTML, dan lainnya).

Menggunakan Menu

Anda pun dapat mengeksport Jupyter Notebook yang sedang running dengan pergi menuju menu File dan pilih opsi Download as.

Opsi ini memungkinkan Anda untuk mendownload seluruh format nbconvert yang dapat di support. Keuntungan menggunakan Menu ini ialah kemudahannya, sehingga Anda tidak perlu mempelajari cara konversi nbconvert dengan power shell. Namun, direkomendasikan menggunakan cara nbconvert untuk mengkonversikan multiple file Notebook sekaligus, yang tidak dapat dipenuhi oleh Menu.

Itulah beberapa cara menggunakan jupyter notebook dalam mengkonversi file .ipynb menjadi file yang Anda inginkan

Ekstensi Notebook

Dengan begitu banyak nya fungsionalitas dari bawaan Jupyter Notebook, Anda dapat menambahkan fungsi lainnya dengan melalui ekstensi. Jupyter dapat mensupport empat tipe ekstensi, diantaranya:

Pada tutorial kali ini kita akan fokus pada ekstensi notebook

Apa itu ekstensi?

Ekstensi Notebook (nbextension) adalah Module JavaScript yang Anda gunakan pada Sebagian besar tampilan front-end Notebook. Jika Anda mahir menggunakan JavaScript, Anda pun dapat membuat ekstensi sendiri. Ekstensi ini dapat mengakses DOM pada halaman dan Jupyter JavaScript API.

Di mana mendapatkan extensi tersebut?

Anda dapat menggunakan Google dengan kata kunci Jupyter notebook extension. Tidak banyak pilihan untuk mendapatkan Jupyter Notebook extension. Ekstensi yang paling popular adalah jupyter_contrib_nbextensions, Anda bisa mendapatkannya dari Github. Repository ini merupakan ekstensi yang disediakan oleh komunitas Jupyter Notebook dan dapat di install dengan perintah pip.

Bagaimana cara instalasinya?

Sebagian besar ekstensi Jupyter Notebook dapat di install dengan menggunakan Python pip. Jika Anda tidak dapat menginstall dengan menggunakan pip, maka alternatif nya adalah dengan perintah:

jupyter nbextension install EXTENSION_NAME

Perintah di atas hanya untuk instalasi, namun tidak membuatnya aktif. Anda perlu mengaktifkan ekstensi nya setelah proses instalasi selesia dengan perintah:

jupyter nbextension enable EXTENSION_NAME

Anda perlu untuk merestart Jupyter Notebook kernel untuk melihat ekstensi tersebut. Bagian ini adalah cara menggunakan jupyter notebook untuk penambahan ekstensi. Sehingga, Anda dapat menambahkan sesuai dengan kebutuhan.

Kesimpulan

Anda telah memahami sebagian besar cara menggunakan Jupyter notebook. Setelah membacanya diharapkan Anda lebih percaya diri dan tidak mendapati hambatan dalam menjalankannya. Walaupun jika Anda terlewat beberapa langkah ataupun masalah, Anda dapat kembali membaca artikel ini dengan cara membookmark nya pada browser favorit Anda. Terima kasih telah membaca artikel ini, semoga bermanfaat untuk project yang sedang Anda kerjakan.

Rekomendasi

Jika Anda ingin praktek latihan cara menggunakan Jupyter Notebook dengan Python maka Anda dapat membaca artikel ini:
Python Data Visualisasi dengan Seaborn
Mendeteksi Object Dengan Tensorflow
IoT Dengan Python dan Raspberry Pi
Mendeteksi Object Dengan Raspberry Pi
Dasar pemrograman Python
Object Oriented Programming dengan Python
Youtube channel Python dan IoT

Apa itu Tensorflow? Tensorflow ialah Python library open source untuk komputasi numerik yang dapat mempercepat dan memudahkan dalam menggunakan machine learning.

Machine learning adalah disiplin ilmu yang sangat kompleks. Namun, menerapkan model machine learning jauh dari kata menakutkan dan tidak terlalu sulit, semua itu karena tersedianya framework machine learning seperti "Google Tensorflow". Sehingga, memudahkan proses dalam memperoleh data, melatih "training" model, prediksi dan menyempurnakan hasil yang akan di peroleh.

Tensorflow diciptakan oleh tim Google Brain, di mana framework ini ialah library open source yang digunakan untuk komputasi numerik dan project machine learning berskala besar. Tensorflow menggabungkan banyak model dan algoritma machine learning termasuk deep learning (neural network). Framework ini di susun menggunakan Python front-end API untuk membuat suatu aplikasi penggunaannya, dan menggunakan C++ yang memiliki kinerja terbaik dalam hal mengeksekusi.

Tensorflow dapat melatih dan menjalankan neural network untuk keperluan mengklasifikasikan tulisan tangan, pengenalan gambar/object, serta menggabungkan suatu kata. Selanjutnya adalah re-current neural network, yang merupakan model sequential, dapat digunakan untuk Natural Language Processing (NLP), PDE (Partial Differential Equation) berdasarkan simulasi. Dan yang palng utama adalah bahwa Tensorflow dapat digunakan pada skala yang besar untuk produksi dengan menggunakan model yang sama pada ketika proses training data.

Apa itu Tensorflow dan Bagaimana Cara Kerjanya

Tensorflow memungkinkan developer untuk membuat grafik aliran data (dataflow graph), yaitu struktur yang mendeskripsikan bagaimana data yang digunakan bergerak melalui tampilan grafis atau serangkaian pemprosesan node. Setiap node di dalam grafik mewakili operasi matematika, dan setiap koneksi atau ujung antara node tersebut merupakan baris data multidimensi (multidimentional data array) atau yang disebut juga tensor.

Tensorflow menyediakan itu semua untuk programmer dengan menggunakan bahasa pemrograman Python. Python sangat mudah dipelajari dan digunakan, jika Anda belum familiar, Anda dapat membaca artikel : Dasar bahasa pemrograman Python. Node dan Tensor di dalam Tensorflow merupakan suatu object pada Python. Selain itu, aplikasi Tensorflow itu sendiri adalah aplikasi yang ada di dalam Python.

Perhitungan operasi matematika tidak dilakukan oleh Python. Tranformasi library ini ditulis dengan menggunakan bahasa biner C++ yang berperforma tinggi dalam menggabungkan keduanya.

Aplikasi Tensorflow dapat dijalankan pada hampir semua target perangkat. Seperti diantaranya, local machine, kluster pada platform cloud, perangkat IoS dan Android, CPU atau GPU. Jika Anda menggunakan platform Google Cloud, Anda dapat menjalankan Tensorlow menggunakan TPU (Tensorflow Processing Unit) agar dapat berakselerasi lebih baik. Model yang dihasilkan oleh Tensorflow dapat diterapkan pada sebagian besar perangkat yang akan digunakan untuk hasil suatu prediksi.

apa itu tensorflow
[Apa itu tensorflow?] Tensorflow 2.0

Tensorflow 2.0, di rilis pada Oktober 2019, dimana versi ini mengubah framework berdasarkan masukan dari para pengguna, sehingga membuatnya lebih mudah untuk digunakan (misalnya menggunakan API Keras) yang relatif lebih sederhana untuk proses training model serta memiliki kinerja lebih baik. Training yang terdistribusi menjadi lebih mudah berkat API baru ini. Selain itu versi ini memberi dukungan kepada Tensorflow Lite, sehingga memungkinkan untuk menerapkan model di berbagai platform yang lebih besar.

Namun, dengan berbagai macam keuntungan yang ditawarkan pada framework Tensorflow 2.0, kode yang telah di tulis pada versi sebelumnya perlu di tulis ulang, ada yang hanya memerlukan sedikit perubahan dan ada pula perubahan yang signifikan untuk memanfaatkan fitur Tensorflow 2.0 secara maksimal.

Manfaat Tensorflow

Manfaat terbesar yang diberikan Tensorflow untuk pengembangan machine learning adalah abstraksi (abstraction). Anda tidak perlu berurusan dengan seluk beluk implementasi suatu algoritma atau mencari jawaban cara yang tepat dalam menghubungkan keluaran dari satu fungsi kepada fungsi lainnya, sehingga, developer dapat fokus pada logika aplikasinya secara keseluruhan, biarkan Tensorflow menanganinya dari balik layar.

Tensorflow menawarkan berbagai kemudahan bagi developer yang memerlukan proses debugging dan melakukan instrospeksi ke dalam aplikasi Tensorflow. Mode "eager execution" memungkinkan Anda untuk mengevaluasi dan memodifikasi setiap operasi grafik secara terpisah dan transparan, tidak membangun seluruh grafik sebagai objek tunggal dan memeriksa seluruhnya sekaligus. Visualisasi dari Tensorboard membuat Anda dapat memeriksa secara langsung dan interaktif, tools ini berupa dashboard web-based.

[Memahami Tensorflow dengan project: Mendeteksi objek dengan Raspberry Pi, Training Tensorflow dengan object yang kita tentukan, Memanfaatkan Google Super Komputer untuk training Tensorflow ]

Tensorfolw mendapatkan bayak keuntungan secara komersial di Google. Google tidak hanya mendorong laju kecepatan pengembangannya di balik layar, tetapi juga menciptakan banyak penawaran yang menarik seputar Tensorflow yang membuatnya lebih mudah untuk diterapkan dan digunakan. TPU yang telah disebutkan di atas digunakan untuk mempercepat performa pada platform Google Cloud, online hub untuk berbagi model yang dibuat dengan menggunakan framework, di dalam browser ataupun framework yang mobile-friendly. dan masih banyak lagi.

Satu catatan penting: Beberapa detail penerapan Tensorflow mempersulit perolehan hasil pelatihan model yang sepenuhnya deterministik untuk beberapa kasus training. Terkadang model yang di training pada satu sistem akan sedikit berbeda dari model yang di training pada sistem yang lain, walaupun menggunakan data yang sama persis. Namun demikian, masalah tersebut dapat terselesaikan, tim Tensorfolw sedang mempertimbangkan untuk memberikan kontrol lebih luas yang dapat mempengaruhi determinisme di dalam workflow.

Tensorflow vs Kompetitor

Tensorflow bersaing dengan banyak framework machine learning lainnya. PyTorch, CNTK, dan MXNet adalah ketiga kompetitor utama yang dapat menangani kebutuhan yang sama. Di bawah ini dapat Anda lihat beberapa kelebihan dan kekurangannya dibandingkan dengan Tensorflow.

Pytorch

Selain dibuat dengan menggunakan Python dan memiliki kemiripan yang sama lainnya dengan Tensorflow. Dengan menggunakan komponen penggerak utama hardware-accelerated, model pengembangan yang sangat interaktif memungkinkan proses desain berjalan seiring dengan pekerjaan, serta memiliki banyak komponen lainnya.

[Apa itu tensorflow?] Kompetitor Tensorflow: Pytorch

Pytorch pada umumnya merupakan pilihan yang lebih baik untuk pengembangan yang cepat, dimana perlu waktu yang singkat untuk menyeselesaikan project. Di sisi lain, Tensorflow unggul untuk project skala lebih besar dan untuk alur kerja yang lebih kompleks.

CNTK

[apa itu tensorflow]. Tensorflow kompetitor: CNTK

CNTK adalah Microsoft Cognitive Toolkit, seperti Tensorflow yang menggunakan struktur grafik untuk mendeskripsikan aliran data, namun sebagian besar berfokus pada pembuatan deep learning neural network. CNTK mampu menangani banyak task neural network lebih cepat, serta memiliki kumpulan API yang lebih luas (Python, C++, C#, Java). Akan tetapi, CNTK tidak mudah untuk dipelajari atau diterapkan seperti pada Tensorflow.

Apache MXNet

[apa itu tensorflow]. Tensorflow kompetitor: MXNet

Apacha MXNet di adopsi oleh Amazon sebagai framework deeplearning pada AWS, dapat di skalakan secara linier terhadap multiple GPU dan machine. Framework ini pun dapat mendukung berbagai macam API seperti, Python, C++, Scala, R, JavaScript, Julia, Perl, Go. Meskipun API aslinya tidak semenyenangkan untuk digunakan seperti pada Tensorflow.

Kesimpulan

Anda telah mengetahui apa itu Tensorflow mulai dari bagaimana cara kerjanya, keuntungan menggunakannya, serta alternatif lain dari framework machine learning yang memiliki kesamaan.

Semoga artikel ini bermanfaat untuk memulai project Tensorflow.

Pendahuluan Tensorflow Object Detection Colabs

Memiliki komputer low-end namun ingin membuat model deep learning dengan segala keterbatasan yang Anda miliki? Tidak perlu khawatir artikel ini akan membahas 14 langkah training Tensorflow model secara cepat. Anda tidak perlu membeli super-computer untuk membantu pekerjaan agar lebih cepat. Bersyukurlah, karena Google telah menyediakan "Virtual Computer" secara GRATIS yang memungkinkan Anda untuk menikmati performa GPU Nvidia Tesla K80 untuk proses komputasi deep learning, terutama untuk training tensorflow model. Sebagai perbandingan yang saya rasakan mengenai performa dengan konfigurasi yang sama untuk proses training tensorflow model yang menggunakan komputasi GPU NVIDIA GTX970 pada laptop ASUS ROG. Untuk menyelesaikan training dengan step, model, dan sample yang sama. Saya membutuhkan waktu 10 jam untuk menyelasaikan nya. Namun, dengan menggunakan GPU NVidia Tesla K80, dapat diselesaikan hanya dengan 2 jam saja. Sehingga, jika ingin mengganti model yang tepat, terutama untuk objek detection, kita tidak perlu menunggu seharian penuh untuk melihat hasilnya. Lalu caranya bagiamana? Tidak perlu terburu-buru, Anda akan menemukan caranya pada artikel ini dan langsung dapat mengaplikasikannya untuk project Anda, sekalipun menggunakan Raspberry Pi untuk training Tensorflow model dan tidak perlu menunggu berhari-hari untuk mengetes model Anda. Tensorflow Object Detection Colabs Jawabannya adalah Google Colab

Table of Contents

Apa itu Google Colab?

Google colab adalah service cloud gratis dan menyediakan GPU secara gratis pula! Secara umum Anda dapat melakukan: Sebagai seorang programmer, Anda dapat menggunakan colab untuk melakukan hal-hal di bawah ini: Sebelum Anda menggunakan colab ada baiknya Anda terbiasa menggunakan Jupyter Notebook untuk mengerjakan projek Python Anda. Namun, tidak perlu khawatir, Anda dapat mengambil materi tutorial Python dasar pada platform ini secara gratis dengan durasi 3 jam lebih. Di mana tutorial tersebut full menggunakan Jupyter notebook untuk pemula. Perlu di ingat bahwa, maksimum runtime untuk versi gratis pada Google Colab adalah 12 jam. Sehingga, jika Anda menggunakan lebih dari itu, seluruh file Anda akan hilang dan refresh seperti sedia kala tanpa bekas. Oleh karena itu, setelah selesai proses training tensorflow model, selalu backup file hasil training tersebut pada Google Drive atau komputer Anda. Banner Udemy

Setup Google Colab

Google Colab dapat Anda jalankan dengan menggunakan Google Drive Anda. Hal pertama yang dilakukan adalah dengan membuat folder khusus untuk projek Colab tersebut. Pada contoh di bawah ini saya membuat folder bernama "Colab Notebooks". Anda dapat membuat nama sesuai dengan kebutuhan Anda.
training tensorflow model
Nama folder di dalam Google Drive Anda
Selanjutnya Anda masuk ke dalam folder lalu right click, dan pilih "Google Collaboratory" Tensorflow Object Detection Colabs Selanjutnya Anda akan memasuki halaman "colab.research.google.com/drive/IDfileAnda" secara otomatis. Anda akan melihat bahwa tampilannya sangat mirip dengan Jupyter Notebook. Secara default nama file yang baru Anda buat adalah "untitled.ipynb". Anda dapat menggantinya dengan nama sesuai project yang Anda kerjakan.

Menjalankan program Python pada platform Google Colab

Pada bagian ini, kita akan mencoba untuk menjalankan beberapa perintah sederhana dengan menggunakan bahasa Python. Contoh nya adalah pada gambar di bawah ini:
Tensorflow Object Detection Colabs
Penampilan Google Colab Notebook
Keterangan yang ada di gambar: 1. Nama file Anda dan navigation menu 2. Anda dapat menambah cell berupa code atau text 3. Informasi mengenai Google Compute Engine yang Anda gunakan 4. Cell di mana Anda menuliskan code atau text 5. Tombol "play" untuk mengeksekusi cell

Pada contoh di atas dapat di lihat bahwa kita telah berhasil menjalankan program Python sederhana.  Dan pada contoh kedua yang berupa fungsi, akan menghasilkan pesan error, karena seharusnya kita panggil dengan perkalian(a,b). Sehingga, semua fitur Python sama seperti jika kita menggunakan local komputer.

Selain itu ada beberapa setup yang perlu di perhatikan untuk menjalankan training Tensorflow model

Tensorflow Object Detection Colabs

Di sini jangan sampai terlewat, karena kita diberikan pilihan tipe hardware accelerator. By default, pilihannya adalah None (CPU). Lalu, ada dua pilihan lain GPU(Graphical Processing Unit) dan TPU (Tensorflow Processing Unit).

Berdasarkan percobaan yang telah saya lakukan dengan menggunakan masing-masing type hardware accelerator, yang paling cepat perhitungannya adalah dengan menggunakan GPU pada konfigurasi perhitungan training tensorflow model yang sama. Oleh karena itu, pilihlah yang ini. Namun, jika ingin mencobanya sendiri Anda pun dapat melakukan experiment.

Project Mendeteksi Merk Minuman Ringan

Sekian artikel kali ini , semoga bermanfaat untuk Anda.

Upss.. hanya bercanda 🙂 , kita belum membahas mengenai isi topik sesungguhnya.

Pada bagian ini kita akan memanfaatkan Google Colab untuk training mendeteksi objek merk minuman ringan yang berupa gambar, namun Anda dapat juga menggunakannya untuk mendeteksi melalui camera/webcam berupa video.

Persiapan

Sebelum kita menggunakan fasilitasi dari Google Colab. Kita akan melakukan beberapa persiapan yang dibutuhkan agar dapat berfungsi sesuai dengan keinginan kita, diantaranya:

Resize seluruh gambar menjadi seragam

Script di bawah Anda tempatkan pada folder bersamaan dengan kumpulan gambar yang akan di resize.
# tensorflow object detection colabs
"""
Created on Fri Oct  4 14:26:49 2019
@author: Muhammad Zacky Asy'ari
"""
from PIL import Image
import os, sys
path = r"C:tensorflow1SpecimentBotol Kaleng dan PlastikTrain\"
dirs = os.listdir( path )
def resize():
    i = 0 
    for item in dirs:
        if os.path.isfile(path+item):
            im = Image.open(path+item)
            f, e = os.path.splitext(path+item)
            imResize = im.resize((720,540), Image.ANTIALIAS)
            imResize.save('Image_'+str(i)+'.jpg', 'JPEG', quality=90)
            i=i+1
            print("done image " + str(i))
resize()
 

Setelah proses resizing selesai, selanjutnya tempatkan gambar pada folder yang berbeda yaitu ./data/images/train dan./data/images/test Sebarkan jumlah gambar tersebut menjadi 80-20 %. Maksudnya jika Anda memiliki 100 gambar, tempatkan 80 pada folder train dan 20 pada folder test.

Folder ini akan Anda dapatkan jika cloning dari github: 'https://github.com/zacky131/object_detection_demo'

Memberi anotasi pada gambar

Selanjutnya adalah hal yang paling membosankan dan memakan waktu. Namun, Anda harus melakukannya, yaitu membuat anotasi dari setiap gambar yang telah kita resize seluruhnya.

Penjelasan detail dapat Anda baca pada artikel saya sebelumnya pada bagian labelling image.

Konfigurasi awal dan parameter

Setelah selesai persiapan spesimen pada lokal komputer Anda. Mari kita menuju Notebook pada platform Colab. Model yang akan kita gunakan dapat mensupport berbagai macam model, Anda dapat menemukan pretrained model lebih banyak dari link ini: Tensorflow detection model zoo: COCO-trained models. Sama seperti halnya konfigurasi file pada pipeline model tersebut. object_detection/samples/configs
# tensorflow object detection colabs
# Jika Anda melakukan Fork, ganti link di bawah ini sesuai dengan link github Anda.
repo_url = 'https://github.com/zacky131/object_detection_demo'
# Jumlah training step.
num_steps = 20000  # 200000
# Jumlah evaluation step.
num_eval_steps = 50
# Jumlah sample di dalam folder "test".
num_examples = 45
MODELS_CONFIG = {
    'ssd_mobilenet_v2': {
        'model_name': 'ssd_mobilenet_v2_coco_2018_03_29',
        'pipeline_file': 'ssd_mobilenet_v2_coco.config',
        'batch_size': 12
    },
    'faster_rcnn_inception_v2': {
        'model_name': 'faster_rcnn_inception_v2_coco_2018_01_28',
        'pipeline_file': 'faster_rcnn_inception_v2_pets.config',
        'batch_size': 1
    },
    'rfcn_resnet101': {
        'model_name': 'rfcn_resnet101_coco_2018_01_28',
        'pipeline_file': 'rfcn_resnet101_pets.config',
        'batch_size': 8
    },
    'ssd_mobilenet_small_v3': {
        'model_name': 'ssd_mobilenet_v3_small_coco_2019_08_14',
        'pipeline_file': 'ssdlite_mobilenet_v3_small_320x320_coco.config',
        'batch_size': 12
    },
    'ssd_inception_v2_coco': {
        'model_name': 'ssd_inception_v2_coco_2018_01_28',
        'pipeline_file': 'ssd_inception_v2_coco.config',
        'batch_size': 12
    },
    'ssd_mobilenet_large_v3': {
        'model_name': 'ssd_mobilenet_v3_large_coco_2019_08_14',
        'pipeline_file': 'ssdlite_mobilenet_v3_large_320x320_coco.config',
        'batch_size': 512
    }
}
# Pilih model yang akan Anda gunakan 
# Pilih model di dalam `MODELS_CONFIG`.
selected_model = 'faster_rcnn_inception_v2'
# Nama objek detection model yang digunakan.
MODEL = MODELS_CONFIG[selected_model]['model_name']
# NAma file pipeline pada Tensorflow object detection API.
pipeline_file = MODELS_CONFIG[selected_model]['pipeline_file']
# Training batch size fit di dalam Colab Tesla K80 GPU memory untuk model yang di pilih.
batch_size = MODELS_CONFIG[selected_model]['batch_size'] 

Clone object_detection_demo dari repository atau fork

Pada bagian ini, Anda akan melakukan proses cloning dari repository url pada bagian sebelumnya. Sebaiknya Anda fork terlebih dahulu dari url di atas. Lalu, Anda dapat meng-clone nya dari dari github pribadi.
# tensorflow object detection colabs
import os
%cd /content
repo_dir_path = os.path.abspath(os.path.join('.', os.path.basename(repo_url)))
!git clone {repo_url}
%cd {repo_dir_path}
!git pull 

Install package yang dibutuhkan

Selanjutnya adalah install beberapa package yang dibutuhkan pada virtual machine Google Colabs.
# tensorflow object detection colabs
%cd /content
!git clone --quiet https://github.com/tensorflow/models.git
!apt-get install -qq protobuf-compiler python-pil python-lxml python-tk
!pip install -q Cython contextlib2 pillow lxml matplotlib
!pip install -q pycocotools
%cd /content/models/research
!protoc object_detection/protos/*.proto --python_out=.
import os
os.environ['PYTHONPATH'] += ':/content/models/research/:/content/models/research/slim/'
!python object_detection/builders/model_builder_test.py 

Persiapkan file 'tfrecord

Script bagian ini telah tersedia pada file Jupyter Notebook di akhir artikel ini, Anda dapat menggunakannya secara langsung. Secara umum, bagian ini akan melakukan dua step, yaitu:
# tensorflow object detection colabs
%cd {repo_dir_path}
# Konversikan anotasi pada folder train yang berupa file xml ke dalam satu csv file,
# Buat file `label_map.pbtxt` kepada folder `data/`.
!python xml_to_csv.py -i data/images/train -o data/annotations/train_labels.csv -l data/annotations
# Konversikan anotasi pada folder test yang berupa file xml ke dalam satu csv file.
!python xml_to_csv.py -i data/images/test -o data/annotations/test_labels.csv
# Buat file `train.record`
!python generate_tfrecord.py --csv_input=data/annotations/train_labels.csv --output_path=data/annotations/train.record --img_path=data/images/train --label_map data/annotations/label_map.pbtxt
# Buat file `test.record`
!python generate_tfrecord.py --csv_input=data/annotations/test_labels.csv --output_path=data/annotations/test.record --img_path=data/images/test --label_map data/annotations/label_map.pbtxt 
# tensorflow object detection colabs
test_record_fname = '/content/object_detection_demo/data/annotations/test.record'
train_record_fname = '/content/object_detection_demo/data/annotations/train.record'
label_map_pbtxt_fname = '/content/object_detection_demo/data/annotations/label_map.pbtxt' 

Download model referensi

Pada bagian ini, script akan melakukan proses download model dari repository Tensorflow, lalu menempatkannya pada directory virtual machine Google Colab Anda.
# tensorflow object detection colabs
%cd /content/models/research
import os
import shutil
import glob
import urllib.request
import tarfile
MODEL_FILE = MODEL + '.tar.gz'
DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'
DEST_DIR = '/content/models/research/pretrained_model'
if not (os.path.exists(MODEL_FILE)):
    urllib.request.urlretrieve(DOWNLOAD_BASE + MODEL_FILE, MODEL_FILE)
tar = tarfile.open(MODEL_FILE)
tar.extractall()
tar.close()
os.remove(MODEL_FILE)
if (os.path.exists(DEST_DIR)):
    shutil.rmtree(DEST_DIR)
os.rename(MODEL, DEST_DIR) 

Konfigurasi Training Pipeline

Anda tinggal menjalankan beberapa script di bawah ini, konfigurasi pipeline akan terbentuk secara otomatis.
# tensorflow object detection colabs auftechnique.com
import os
pipeline_fname = os.path.join('/content/models/research/object_detection/samples/configs/', pipeline_file)
assert os.path.isfile(pipeline_fname), '`{}` not exist'.format(pipeline_fname) 
# tensorflow object detection colabs auftechnique.com
def get_num_classes(pbtxt_fname):
    from object_detection.utils import label_map_util
    label_map = label_map_util.load_labelmap(pbtxt_fname)
    categories = label_map_util.convert_label_map_to_categories(
        label_map, max_num_classes=90, use_display_name=True)
    category_index = label_map_util.create_category_index(categories)
    return len(category_index.keys()) 
# tensorflow object detection colabs auftechnique.com
import re
num_classes = get_num_classes(label_map_pbtxt_fname)
with open(pipeline_fname) as f:
    s = f.read()
with open(pipeline_fname, 'w') as f:
    # fine_tune_checkpoint
    s = re.sub('fine_tune_checkpoint: ".*?"',
               'fine_tune_checkpoint: "{}"'.format(fine_tune_checkpoint), s)
    # tfrecord file train dan test.
    s = re.sub(
        '(input_path: ".*?)(train.record)(.*?")', 'input_path: "{}"'.format(train_record_fname), s)
    s = re.sub(
        '(input_path: ".*?)(val.record)(.*?")', 'input_path: "{}"'.format(test_record_fname), s)
    # label_map_path
    s = re.sub(
        'label_map_path: ".*?"', 'label_map_path: "{}"'.format(label_map_pbtxt_fname), s)
    # Set training batch_size.
    s = re.sub('batch_size: [0-9]+',
               'batch_size: {}'.format(batch_size), s)
    # Set training steps, num_steps
    s = re.sub('num_steps: [0-9]+',
               'num_steps: {}'.format(num_steps), s)
    # Set jumlah classes num_classes.
    s = re.sub('num_classes: [0-9]+',
               'num_classes: {}'.format(num_classes), s)
    # Set jumlah contoh (jumlah gambar).
    s = re.sub('num_examples: [0-9]+',
               'num_examples: {}'.format(num_examples), s)
    f.write(s) 
# tensorflow object detection colabs auftechnique.com
!cat {pipeline_fname} 
# tensorflow object detection colabs auftechnique.com
model_dir = 'training/'
# Menghapus output konten sebelumnya agar mulai dari fresh kembali (Optional)
!rm -rf {model_dir}
os.makedirs(model_dir, exist_ok=True) 

Jalankan Tensorboard (Optional)

Jika Anda ingin melihat proses training dalam bentuk grafik. Anda dapat mengeksekusi rangkaian script di bawah ini.
# tensorflow object detection colabs auftechnique.com
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip -o ngrok-stable-linux-amd64.zip 
# tensorflow object detection colabs auftechnique.com
LOG_DIR = model_dir
get_ipython().system_raw(
    'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
    .format(LOG_DIR)
) 
# tensorflow object detection colabs auftechnique.com
get_ipython().system_raw('./ngrok http 6006 &') 
Pada awalnya tampilan Tensorboard akan kosong, karena memang kita belum menjalankan training model tersebut. Namun, setelah proses training di mulai, grafik akan mulai terlihat.

Dapatkan Tensorboard link

Setelah proses di atas berhasil di eksekusi. Anda akan mendapatkan url link untuk melihat progress training tensorflow model.
# tensorflow object detection colabs auftechnique.com
! curl -s http://localhost:4040/api/tunnels | python3 -c 
    "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])" 

Train Model

Proses training tensorflow model di mulai. Anda dapat menunggunya, atau bisa mengerjakan hal lain hingga proses selesai. Anda pun dapat melihat tensorboard mengenai progress yang sedang dijalani nya.
# tensorflow object detection colabs auftechnique.com
!python /content/models/research/object_detection/model_main.py 
    --pipeline_config_path={pipeline_fname} 
    --model_dir={model_dir} 
    --alsologtostderr 
    --num_train_steps={num_steps} 
    --num_eval_steps={num_eval_steps} 
# tensorflow object detection colabs auftechnique.com
!ls {model_dir} 
# Cara klasik untuk training(dapat juga di lakukan).
# !python /content/models/research/object_detection/legacy/train.py --logtostderr --train_dir={model_dir} --pipeline_config_path={pipeline_fname} 

Export Inference Graph yang telah di training

Setelah proses training selesai, Anda perlu mengekstrak inference graph yang telah di training, di mana file ini akan digunakan dalam melakukan proses mendeteksi objek.
# tensorflow object detection colabs auftechnique.com
import re
import numpy as np
output_directory = './fine_tuned_model'
lst = os.listdir(model_dir)
lst = [l for l in lst if 'model.ckpt-' in l and '.meta' in l]
steps=np.array([int(re.findall('d+', l)[0]) for l in lst])
last_model = lst[steps.argmax()].replace('.meta', '')
last_model_path = os.path.join(model_dir, last_model)
print(last_model_path)
!python /content/models/research/object_detection/export_inference_graph.py 
    --input_type=image_tensor 
    --pipeline_config_path={pipeline_fname} 
    --output_directory={output_directory} 
    --trained_checkpoint_prefix={last_model_path} 
# training tensorflow model auftechnique.com
!ls {output_directory} 

Download model file .pb

Setelah proses training selesai, Anda perlu mengekstrak inference graph yang telah di training, di mana file ini akan digunakan dalam melakukan proses mendeteksi objek.
# training tensorflow model auftechnique.com
import os
pb_fname = os.path.join(os.path.abspath(output_directory), "frozen_inference_graph.pb")
assert os.path.isfile(pb_fname), '`{}` not exist'.format(pb_fname) 
!ls -alh {pb_fname} 

Pilihan 1: Upload file.pb pada google drive Anda

Hasil file training .pb yang saat ini berada pada virtual machine google colab. Akan di upload ke dalam folder google drive. Anda akan mendapatkan token untuk proses verifikasi.
# training tensorflow model auftechnique.com
# Install PyDrivce wrapper dan import beberapa library.
# Hanya perlu dilakukan sekali pada notebook.
!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
# Auntetifikasikan dan buat PyDrive client.
# Hanya perlu dilakukan sekali pada notebook.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
fname = os.path.basename(pb_fname)
# Buat dan uoload text file.
uploaded = drive.CreateFile({'title': fname})
uploaded.SetContentFile(pb_fname)
uploaded.Upload()
print('Uploaded file with ID {}'.format(uploaded.get('id'))) 

Pilihan 2: Download file .pb pada komputer Anda secara langsung

Pilihan ini akan secara langsung memberikan notifikasi download file dari web browser Anda.
# training tensorflow model auftechnique.com
from google.colab import files
files.download(pb_fname) 

Download file label_map.pbtxt

# training tensorflow model auftechnique.com
from google.colab import files
files.download(label_map_pbtxt_fname) 

Download file pipeline yang baru

# training tensorflow model auftechnique.com
files.download(pipeline_fname) 

Tahap terakhir, Jalankan Inference Test

Inilah tahap terakhir, dan jalankan hasil inference test dari model yang telah di training.
# training tensorflow model auftechnique.com
import os
import glob
# Path kepada frozen detection graph. Ini adalah model aktual yang digunakan untuk mendeteksi model.
PATH_TO_CKPT = pb_fname
# List dari string yang digunakan untuk menggunakan label dengan benar pada setiap box.
PATH_TO_LABELS = label_map_pbtxt_fname
# Jika Anda ingin mengetest kode dengan gambar yang Anda sediakan. Anda tinggal menambahkan file gambar kepada PATH_TO_TEST_IMAGES_DIR.
PATH_TO_TEST_IMAGES_DIR =  os.path.join(repo_dir_path, "test")
assert os.path.isfile(pb_fname)
assert os.path.isfile(PATH_TO_LABELS)
TEST_IMAGE_PATHS = glob.glob(os.path.join(PATH_TO_TEST_IMAGES_DIR, "*.*"))
assert len(TEST_IMAGE_PATHS) > 0, 'Gambar tidak ditemukan pada `{}`.'.format(PATH_TO_TEST_IMAGES_DIR)
print(TEST_IMAGE_PATHS) 
Script di bawah ini untuk menampilkan hasil deteksi pada virtual machine google colab.
# training tensorflow model auftechnique.com
%cd /content/models/research/object_detection
import numpy as np
import os
import six.moves.urllib as urllib
import sys
import tarfile
import tensorflow as tf
import zipfile
from collections import defaultdict
from io import StringIO
from matplotlib import pyplot as plt
from PIL import Image
# Kode di bawah ini diperlukan karena notebook di simpan pada folder object_detection.
sys.path.append("..")
from object_detection.utils import ops as utils_ops
# Kode di bawah untuk menampilkan gambar.
%matplotlib inline
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
detection_graph = tf.Graph()
with detection_graph.as_default():
    od_graph_def = tf.GraphDef()
    with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
        serialized_graph = fid.read()
        od_graph_def.ParseFromString(serialized_graph)
        tf.import_graph_def(od_graph_def, name='')
label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
categories = label_map_util.convert_label_map_to_categories(
    label_map, max_num_classes=num_classes, use_display_name=True)
category_index = label_map_util.create_category_index(categories)
def load_image_into_numpy_array(image):
    (im_width, im_height) = image.size
    return np.array(image.getdata()).reshape(
        (im_height, im_width, 3)).astype(np.uint8)
# Ukuran, dalam inch, output dari gambar.
IMAGE_SIZE = (12, 8)
def run_inference_for_single_image(image, graph):
    with graph.as_default():
        with tf.Session() as sess:
            # 
            Get handles to input and output tensors
            ops = tf.get_default_graph().get_operations()
            all_tensor_names = {
                output.name for op in ops for output in op.outputs}
            tensor_dict = {}
            for key in [
                'num_detections', 'detection_boxes', 'detection_scores',
                'detection_classes', 'detection_masks'
            ]:
                tensor_name = key + ':0'
                if tensor_name in all_tensor_names:
                    tensor_dict[key] = tf.get_default_graph().get_tensor_by_name(
                        tensor_name)
            if 'detection_masks' in tensor_dict:
                # Di bawah ini untuk memproses satu gambar 
                detection_boxes = tf.squeeze(
                    tensor_dict['detection_boxes'], [0])
                detection_masks = tf.squeeze(
                    tensor_dict['detection_masks'], [0])
                # Perlu di lakukan frame ulang untuk menerjemahkan mask dari box koordinat ke dalam koordinat gambar dan sesuai dengan ukuran gambar.
                real_num_detection = tf.cast(
                    tensor_dict['num_detections'][0], tf.int32)
                detection_boxes = tf.slice(detection_boxes, [0, 0], [
                                           real_num_detection, -1])
                detection_masks = tf.slice(detection_masks, [0, 0, 0], [
                                           real_num_detection, -1, -1])
                detection_masks_reframed = utils_ops.reframe_box_masks_to_image_masks(
                    detection_masks, detection_boxes, image.shape[0], image.shape[1])
                detection_masks_reframed = tf.cast(
                    tf.greater(detection_masks_reframed, 0.5), tf.uint8)
                # Ikuti konvensi dengan menambahkan ukuran batch
                tensor_dict['detection_masks'] = tf.expand_dims(
                    detection_masks_reframed, 0)
            image_tensor = tf.get_default_graph().get_tensor_by_name('image_tensor:0')
            # Jalankan inference
            output_dict = sess.run(tensor_dict,
                                   feed_dict={image_tensor: np.expand_dims(image, 0)})
            # Seluruh output adalah float32 numpy array, sehingga konversikan yang sesuai.
            output_dict['num_detections'] = int(
                output_dict['num_detections'][0])
            output_dict['detection_classes'] = output_dict[
                'detection_classes'][0].astype(np.uint8)
            output_dict['detection_boxes'] = output_dict['detection_boxes'][0]
            output_dict['detection_scores'] = output_dict['detection_scores'][0]
            if 'detection_masks' in output_dict:
                output_dict['detection_masks'] = output_dict['detection_masks'][0]
    return output_dict
for image_path in TEST_IMAGE_PATHS:
    image = Image.open(image_path)
    # Gambar dalam bentuk array akan digunakan untuk mempersiapkan 
    # Hasil akhir gambar termasuk box dan label di dalamnya
    image_np = load_image_into_numpy_array(image)
    # Ekspansi ukuran, karena gambar ekspektasi nya memiliki ukuran [1, None, None, 3]    
    image_np_expanded = np.expand_dims(image_np, axis=0)
    # Deteksi aktual
    output_dict = run_inference_for_single_image(image_np, detection_graph)
    # Visualisasi dari hasil deteksi.
    vis_util.visualize_boxes_and_labels_on_image_array(
        image_np,
        output_dict['detection_boxes'],
        output_dict['detection_classes'],
        output_dict['detection_scores'],
        category_index,
        instance_masks=output_dict.get('detection_masks'),
        use_normalized_coordinates=True,
        line_thickness=8)
    plt.figure(figsize=IMAGE_SIZE)
    plt.imshow(image_np) 
Tensorflow Object Detection Colabs VOILA!!! Kita telah berhasil mendeteksi objek dengan memanfaatkan Google Colab Virtual Machine. Jika gambar di atas tidak muncul. Anda dapat menjalankan ulang perintah terakhir setelah menunggu beberapa menit.

Kesimpulan

Kita dapat menggunakan Google Compute Engine yang gratisan untuk training Tensorflow model dengan cepat. Namun, perlu di ingat bahwa tutorial ini hanya menyajikan cara untuk mendapatkan file hasil training menggunakan Google Colab. Jika Anda ingin mengkonfigurasikan komputer Anda untuk dapat mendeteksi objek, maka harus mengikuti artikel Training Tensorflow 1.13 dengan object tertentu terlebih dahulu.  Kecepatan untuk mendeteksi objek bergantung pada kemampuan komputer Anda masing-masing, tidak di bantu lagi oleh Google Colabs :). Namun, jika Anda ingin menggunakan service Google untuk itu, Anda dapat menelusuri product Google Cloud Platform (GCP), yang harganya lumayan mahal jika hanya digunakan untuk latihan. Banner Tutorial

File Pendukung

Anda dapat mendownload file Notebook dan Python script pada link di bawah ini. Link file Notebook Google Colab Jika menemukan masalah, Anda dapat menuliskan pesan pada kolom komentar atau pada forum dan group pada platform ini.

Referensi

Google Colab Medium Blog DLology Blog Tutorialspoint

Object Oriented Programming (OOP) atau pemrograman berorientasi objek adalah salah satu pendekatan paling efektif dalam menulis kode suatu software. Pada OOP kita menulis class yang merepresentasikan suatu situasi seperti pada keadaan sebenarnya dan kita dapat membuat suatu objek berdasarkan class tersebut. Sebelum memulai mengenai OOP pada Python, ada baiknya memahami dasar pemrograman Python terlebih dahulu. Tunggu apa lagi, mari kita mulai!!!

Jika Anda ingin download file jupyter notebook. Silahkan menuju bagian kesimpulan.

Konsep pemrograman berorientasi objek

Python adalah bahasa pemrograman berorientasi objek. Tidak seperti pada pemrograman berorientasi prosedural, di mana penekanan utama adalah pada fungsi(walaupun Python dapat melakukannya). Sedangkan pemrograman berorientasi objek lebih menekankan pada suatu objek

Kita pasti bertanya-tanya apa perbedaan antara pemrograman prosedural dan berorientasi objek. Untuk menghilangkan keraguan tersebut, mari kita bahas di antara kedua nya. Pada pemrograman prosedural, seluruh kode ditulis dalam satu prosedur yang panjang meskipun mungkin mengandung suatu fungsi dan subrutin. Dengan menggunakan cara tersebut, akan sangat sulit untuk di kelola di kemudian hari. Karena, data dan logika di campur bersama-sama.

Namun, ketika kita berbicara mengenai pemrograman berorientasi objek, kode program di bagi lagi menjadi suatu objek tersendiri.

Setiap objek mewakili bagian yang berbeda dari suatu program, dimana objek tersebut memiliki data dan logika tersendiri untuk saling berkomunikasi. Kita dapat membayangkan suatu situs web yang memiliki objek yang berbeda-beda seperti tulisan, gambar, video, dll.

Pemrograman berorientasi objek mencakup empat pillar utama, yaitu Encapsulation, Inheritance, Polymorphism dan Abstraction. Mari kita pahami topik ini secara lebih detail pada bagian selanjutnya.

Video penjelasan konsep pemrograman berorientasi objek:

[Pemrograman berorientasi objek Python] Konsep OOP

Youtube Playlist mengenai OOP pada Python

Objek, Class, Attribute dan Metode

Objek adalah suatu kumpulan data (variabel) dan metode (fungsi) yang bekerja pada data tersebut. Sedangkan, class adalah blueprint dari suatu objek. Lalu, bagaimana class memungkinkan untuk dapat mengelompokkan suatu data dan fungsi secara logis dengan cara yang mudah digunakan kembali serta bagaimana cara membangunnya jika diperlukan?

Kita dapat membayangkan class adalah sketsa dari sebuah rumah. Yang secara detail berisi mengenai lantai, pintu, jendela, dll. Berdasarkan uraian tersebut kita dapat membangun sebuah rumah. Maka, rumah adalah suatu objek.

Objek dan class pemrograman berorientasi objek
[Pemrograman berorientasi objek Python] Objek dan Class

Karena banyak rumah dapat di bangun dari sketsa tersebut. Sehingga, kita dapat membuat banyak objek dari suatu class jika dianalogikan pada pemrograman berorientasi objek. Selain itu, objek pun dapat disebut sebagai turunan dari suatu class. Proses pembuatan objek ini disebut sebagai instantiation.

Dengan menggunakan class, program yang kita tulis akan lebih konsisten. Sehingga, dapat menjadikannya lebih rapih dan efisien.

Class memiliki suatu atribut, yaitu data yang terdapat di dalamnya (variable class dan instance variable) serta metode yang dapat di akses dengan tanda titik ( . )

Syntax untuk mendeskripsikan suatu class:

class NamaSuatuClass:
    pernyataan-1
    pernyataan-2
    .
    .
    .
    pernyataan-N
class Rumah():
    #Instance attribute
    def __init__(self,bahan,harga,lokasi): 
        # self adalah instance dari class
        self.bahan = bahan 
        self.harga = harga
        self.lokasi = lokasi
        
#membuat objek 
rumah1 = Rumah("Kayu",700000000,"desa") 
rumah2 = Rumah("Beton",1500000000,"tengah kota")
print(rumah1)

#Output:
<__main__.Rumah object at 0x0000019371D149C8>

Output di atas memberitahukan kepada kita bahwa rumah merupakan suatu objek pada lokasi memory tertentu pada komputer. Untuk mengakses nilai atribut tersebut, kita perlu menggunakan dot ( . ), lalu memanggil atribut yang ingin diketahui nilainya, seperti pada contoh di bawah ini:

rumah1.bahan

#output:
'Kayu'
rumah1.harga

$output:
700000000

Untuk mencetak seluruh nilai atribut dari suatu object "rumah1" terhadap parameter yang telah diketahui (bahan, harga, lokasi), kita dapat menggunakan __dict__ "dictionary".

rumah1.__dict__

#output:
{'bahan': 'Kayu', 'harga': 700000000, 'lokasi': 'desa'}

Perlu diperhatikan bahwa self juga merupakan instance dari suatu class. Oleh karena instance suatu kelas memiliki nilai yang berbeda-beda kita dapat menyatakan Rumah.harga = harga daripada self.harga = harga. Namun, karena setiap rumah tidak memiliki harga yang sama, kita harus menetapkan nilai yang berbeda untuk contoh yang berbeda. Oleh karena itu diperlukan variable khusus self yang dapat membantu kita untuk melacak contoh individu dari setiap kelas.

catatan [Pemrograman berorientasi objek]: Variable khusus tidak harus menggunakan kata self. Penggunaan self dimaksudkan untuk standarisasi penulisan class pada Python agar dapat dipahami oleh seluruh Python programmer untuk keseragaman penulisan kode.

Encapsulation

Encapsulation adalah salah satu konsep fundamental pada pemrograman berorientasi objek. Encapsulation menggambarkan suatu ide untuk membungkus data dan metode yang bekerja pada suatu data di dalam satu unit. Hal ini memberikan batasan dalam mengakses suatu variabel dan metode secara langsung. Sehingga, dapat mencegah modifikasi data yang tidak disengaja. Hal tersebut sangatlah penting, karena dapat mencegah perubahan yang tidak disengaja. Bukan tidak dapat di ubah, namun, variabel objek tersebut hanya dapat di ubah dengan metode objek.

[Pemrograman berorientasi objek Python] Metode dan Variable

Python tidak memiliki kata kunci private seperti pada bahasa pemrograman yang lain. Sebagai gantinya, hal ini dapat dilakukan oleh encapsulation. Variable class yang tidak boleh di akses secara langsung diawali oleh dua tanda garis bawah seperti pada contoh di bawah ini:

class Halo:
    def __init__(self, angka):
        self.a = 123
        self._b = 20
        self.__c = 40
        
halo = Halo("angka")
print(halo.a)
print(halo._b)
print(halo.__c)

#output:

123
20
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-40-a2c62dd721c7> in <module>
      8 print(halo.a)
      9 print(halo._b)
---> 10 print(halo.__c)
     11 

AttributeError: 'Halo' object has no attribute '__c'

Dapat diperhatikan pada contoh di atas bahwa variable a dan _ b dapat tercetak. Namun, variable __ c memberikan AttributeError.

Private variable dapat di ubah dengan menggunakan metode get dan set yang dapat memberikan akses secara tidak langsung.

class Software():
    #Instance attribute
    def __init__(self):
        self.__version = 1
    
    # Instance method
    def getVersion(self):
        print(self.__version)

    def setVersion(self, version):
        self.__version = version

# instanstiate objek Software
obj = Software()
obj.getVersion()
obj.setVersion(3)
obj.getVersion()

#Output:
1
3

Dapat di lihat pada contoh di atas, bahwa, untuk mengubah software version dari 1 kepada version 3 diperlukan metode get dan set. Oleh karena itu untuk mengakses variable yang memiliki double underscore harus di ubah dengan cara yang tidak langsung, yaitu dengan mengunakan metode get dan set.

Inheritance

Inheritance memungkinkan kita untuk mewarisi atribut dan metode dari suatu kelas dasar (base)atau induk(parent). Hal ini sangat berguna karena kita membuat sub-kelas yang dapat menggunakan semua fungsi dari parent class. Selain itu, kita dapat menimpa atau menambahkan fungsi yang baru tanpa mempengaruhi parent class. Untuk memahami konsep inheritance dengan mudah, kita dapat menganalogikan sifat seorang anak mewarisi sifat orang tuanya. Sama hal nya pada Python yang memiliki dua kelas, yaitu:

  1. Parent class (super atau base class)
  2. Child class (subclass atau derived class)

Class yang mewarisi sifat disebut sebagai Child class, sedangkan class yang diwarisi sifat nya adalah Parent class.

Inheritance memiliki kemampuan untuk membuat Sub-classes yang berisi spesialisasi dari Parent class. Selanjutnya, inheritance dapat di bagi lagi menjadi empat tipe. Yaitu single, multilevel, hierarchical, dan multiple inheritance. Untuk memahaminya lebih jelas, mari kita lihat diagram di bawah ini.

Contoh inheritance pemrograman berorientasi objek
[Pemrograman berorientasi objek Python] Contoh Tipe Inheritance

Untuk memahaminya pada Python, mari kita telusuri satu persatu.

Single Inheritance

Pada inheritance, child class dapat mengakses seluruh metode yang telah didefinisikan pada parent class. Selain itu, child class dapat meliputi metode spesifik yang dimilikinya.

Dalam bahasa pemrograman berorientasi objek pada Python, class turunan dapat mewarisi class utama dengan cara memanggil kembali kelas utama di dalam tanda kurung.

Misalkan kita ingin membuat class untuk Hewan. Lalu, dari jenis hewan memiliki spesies kucing. Seperti pada contoh di bawah ini:

# Parent class
class Hewan:  
    def bicara(self):  
        print("Hewan berbicara")  
        
# Child class mewarisi dari class Hewan
class Kucing(Hewan):
    def meaow(self):  
        print("meaow....meaow....meaow..!!!") 

k = Kucing()
k.meaow()
k.bicara()

#output:
meaow....meaow....meaow..!!!
Hewan berbicara

Dapat di lihat pada contoh di atas, hewan adalah parent class dari se ekor kucing. Sehingga ketika kita menggunakan metode meaow(), maka yang keluar adalah suara kucing. Namun, ketika kita menggunakan metode bicara() pada kucing, maka yang keluar adalah suara hewan karena class Kucing dapat menggunakan metode parent class Hewan.

 Multilevel inheritance

Multilevel inheritance adalah kondisi dimana ketika suatu class mewariskan class yang lainnya. Tidak ada batasan hingga berapa banyak jumlah level yang dapat digunakan pada multilevel inheritance pada Python. Contoh syntax:

# Parent class
class Hewan:  
    def bicara(self):  
        print("Hewan berbicara")  
        
# Child class mewarisi dari class Hewan
class Kucing(Hewan):
    def meaow(self):  
        print("meaow....meaow....meaow..!!!") 
        
# Child class AnakKucing mewarisi dari class hewan
class AnakKucing(Kucing):
    def minum(self):  
        print("minum susu") 

a_k = AnakKucing()
a_k.bicara()
a_k.meaow()
a_k.minum() 

#Output:
Hewan berbicara
meaow....meaow....meaow..!!!
minum susu

Dapat di lihat pada contoh di atas, bahwa, class AnakKucing dapat mewarisi sifat dari Kucing dan Hewan.

Hierarchical Inheritance

Hierarchical inheritance memungkinkan kita menurunkan lebih dari satu child class untuk mewarisi sifat dari parent class.

# Class utama 
class Parent: 
      def fungsi1(self): 
            print("Fungsi pada parent class.") 
  
# class 1 turunan 
class Child1(Parent): 
      def fungsi2(self): 
            print("Fungsi pada child 1.") 
  
# class 2 turunan
class Child2(Parent): 
      def fungsi3(self): 
            print("Fungsi pada child 2.") 

object1 = Child1() 
object2 = Child2() 

object1.fungsi1() 
object1.fungsi2()  

object2.fungsi1() 
object2.fungsi3()

#Output:
Fungsi pada parent class.
Fungsi pada child 1.
Fungsi pada parent class.
Fungsi pada child 2.

Contoh di atas menunjukkan bahwa class turunan Child1 dan Child2 dapat menggunakan fungsi pada class parent yang sama.
Silahkan untuk mencobanya:

Multiple inheritance

Multiple inheritance memungkinkan satu kelas turunan untuk mewarisi lebih dari satu kelas utama.

## parent 1
class Perhitungan1:
    def penjumlahan(self, a, b):
        return a+b
## parent 2
class Perhitungan2:
    def perkalian(self, a, b):
        return a*b
## child    
class Child(Perhitungan1, Perhitungan2):
    def pembagian(self, a, b):
        return a/b

c = Child()

print(c.penjumlahan(20, 30))
print(c.perkalian(5, 4))
print(c.pembagian(6, 12))

#output:
50
20
0.5

Pada contoh di atas menunjukkan bahwa class Child mewarisi sifat dari dua parent class yaitu class Perhitungan1 dan Perhitungan2.

Silahkan untuk mencobanya:

Polymorphism

Polymorphism adalah kemampuan untuk mengambil bentuk yang berbeda. Polymorphism dalam Python memungkinkan kita untuk mendefinisikan metode pada child class dengan menggunakan nama yang sama seperti pada parent class.

Definisi polymorphism

Polymorphism di bangun berdasarkan dua suku kata, yaitu Poly (banyak) dan Morphism (bentuk). Artinya adalah fungsi yang sama dapat digunakan pada tipe yang berbeda. Sehingga membuat membuat programming lebih intuitif dan mudah. Dalam bahasa pemrograman berorientasi objek pada Python, kita memiliki cara-cara yang berbeda untuk mendefinisikan polymorphism.

Class child mewarisi seluruh method dari parent class. Namun, ada beberapa kasus di mana metode tersebut tidak cocok dengan child class. Oleh karena itu, kita harus mengimplementasikan kembali metode yang pada child class yang dinamakan Method Overriding. Contohnya dapat di lihat pada bagian Polymorphism dengan inheritance. (link ke bawah)

Polymorphism pemrograman berorientasi objek
[Pemrograman berorientasi objek Python] Ilustrasi polymorphism

 

Ada beberapa metode untuk menggunakan polymorphism pada pemrograman berorientasi objek Python. Kita dapat menggunakan fungsi berbeda, metode class atau objek untuk mendefinisikannya.

Polymorphism dengan function

Kita dapat membuat fungsi yang dapat mengambil objek apapun untuk mengimplememtasikan polymorphism.

Contoh di atas adalah menggunakan fungsi yang sudah terintegrasi pada Python yaitu len(). Fungsi tersebut dapat digunakan untuk tipe data yang berbeda. Pada kasus di atas adalah contoh untuk menghitung jumlah huruf dari string, list dan pasangan key-value pada dictonary.

Polymorphism dengan class

Kita dapat menggunakan konsep polymorphism ketika membuat metode class. Python memungkinkan class yang berbeda untuk menggunakan metode dengan nama yang sama. Kemudian kita dapat memanggil metode tersebut dengan mengabaikan objek yang sedang kita gunakan. Contoh:

class Kucing:
    def __init__(self, nama, umur):
        self.nama = nama
        self.umur = umur

    def bersuara(self):
        print("Meow")


class Dog:
    def __init__(self, nama, umur):
        self.nama = nama
        self.umur = umur

    def bersuara(self):
        print("Guk..guk...")

kucing1 = Kucing("Tom", 3)
anjing1 = Dog("Spike", 4)

for hewan in (kucing1, anjing1):
    hewan.bersuara()

# Output:
Meow
Guk..guk..

Kita telah membuat class Kucing dan Anjing. Keduanya memiliki struktur dan metode yang sama, yaitu bersuara().

 Polymorphism dengan Inheritance

Polymorphism pada pemrograman berorientasi objek Python mendefinisikan child class yang memiliki kesamaan nama metode pada parent class. Pada inheritance, child class mewarisi metode dari parent class. Selain itu, memungkinkan untuk memodifikasi metode di dalam child class yang telah diwarisi dari parent class. Contoh polymorphism dengan Inheritance dapat dilihat pada contoh di bawah ini:

class Burung:
     def intro(self):
        print("Di dunia ini ada beberapa type berbeda dari spesies burung")
 
     def terbang(self):
        print("Hampir semua burung dapat terbang, namun ada beberapa yang tidak dapat terbang")
        
 
class Elang(Burung):
     def terbang(self):
        print("Elang dapat terbang")
    
 
class BurungUnta(Burung):
     def terbang(self):
        print("Burung unta tidak dapat terbang")
 
obj_burung = Burung()
obj_elang = Elang()
obj_burung_unta = BurungUnta()
 
obj_burung.intro()
obj_burung.terbang()
 
obj_elang.intro()
obj_elang.terbang()
 
obj_burung_unta.intro()
obj_burung_unta.terbang()

#Output:
Di dunia ini ada beberapa type berbeda dari spesies burung
Hampir semua burung dapat terbang, namun ada beberapa yang tidak dapat terbang
Di dunia ini ada beberapa type berbeda dari spesies burung
Elang dapat terbang
Di dunia ini ada beberapa type berbeda dari spesies burung
Burung unta tidak dapat terbang

Contoh di atas adalah metode overriding, dimana metode terbang() pada parent class Burung, di timpa oleh oleh masing-masing metode child class-nya yang terdapat pada class Elang dan BurungUnta.

Abstraction

Abstraction adalah pilar terakhir dari ke-empat pilar pemrograman berorientasi objek yang di bahas pada artikel ini. Abstraction memiliki tujuan untuk menyembunyikan detail yang tidak terlalu penting dari user. Kita dapat membayangkannya seperti sebuah smartphone, dimana untuk menggunakan device tersebut, kita tidak perlu memahami apa yang terjadi di dalam logika elektronik dan software di dalamnya. Namun, kita hanya perlu menekan tombol power dan menyentuh layar dengan menggunakan tangan kita agar alat tersebut bisa bekerja dengan semestinya.

Python memiliki module untuk menggunakan Abstract Base Classes (ABC). Modulenya bernama abc. Contoh kode di bawah ini adalah cara penggunaan modul abc untuk mendefinisikan abstraction.

Untuk menggunakan metode abstrak, kita harus menambahkan dekorator pada metode yang akan dijadikan abstrak dengan cara menambahkan @abstraction di atas metode tersebut. Untuk menunjukkan bahwa metode tersebut adalah abstrak. Mari kita coba untuk menjalankan code ini.

from abc import ABC, abstractmethod
class Bentuk(ABC):
    @abstractmethod
    def luas(self): 
        return self.__sisi * self.__sisi

    @abstractmethod
    def keliling(self): 
        return 4 * self.__sisi

class Persegi(Bentuk):
    def __init__(self, sisi):
        self.__sisi = sisi

persegi = Persegi(6)

#Output:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-159-d0755e2ccceb> in <module>
     13         self.__sisi = sisi
     14 
---> 15 persegi = Persegi(6)

TypeError: Can't instantiate abstract class Persegi with abstract methods keliling, luas

Kode di atas memberikan peringatan TypeError karena metode di dalam class Bentuk yaitu area dan perimeter adalah metode yang abstrak. Perlu diperhatikan juga ketika kita menggunakan class Persegi, maka, akan menimbulkan error yang sama, karena pada kode di atas kita mewarisi parent class Bentuk pada child class Persegi. Untuk menjalankan metode tersebut, kita harus mengimplementasikan kembali metode yang ada pada parent class Bentuk agar tidak menimbulkan pesan error, seperti pada contoh di bawah ini:

from abc import ABC, abstractmethod
class Bentuk(ABC):
    @abstractmethod
    def luas(self): 
        return self.__sisi * self.__sisi

    @abstractmethod
    def keliling(self): 
        return 4 * self.__sisi

class Persegi(Bentuk):
    def __init__(self, sisi):
        self.__sisi = sisi
    def luas(self):
        return self.__sisi * self.__sisi
    def keliling(self):
        return 4 * self.__sisi


persegi = Persegi(6)
print(persegi.luas())
print(persegi.keliling())

#Output:
36
24

Kesimpulan Pemrograman berorientasi objek Python

Pada artikel ini kita telah membahas mengenai empat pilar pemrograman berorientasi objek pada Python serta contoh penggunaannya. Sehingga lebih mudah untuk memahami konsep penting dalam pemrograman berorientasi objek.

Anda dapat membaca artikel lain mengenai dasar pemrograman python. Anda pun dapat mendownload catatan mengenai OOP dalam Jupyter notebook pada link di bawah ini:


Download file OOP Dasar

Terima kasih telah meluangkan waktunya untuk membaca. Semoga memberikan suatu manfaat.

Artikel Rekomendasi:

Python Data Visualisasi dengan Seaborn
Mendeteksi Object Dengan Tensorflow
IoT Dengan Python dan Raspberry Pi
Mendeteksi Object Dengan Raspberry Pi

Referensi

https://www.programiz.com
python-textbok.readthedocs.io
Edureka
Javatpoint
Python-course.eu

 

 

Dasar-dasar bahasa pemrograman Python meliputi banyak hal, sama seperti bahasa pemrograman lain, yaitu adanya syntax tertentu untuk mendeklarasikan variable, tipe data, operator dan lainnya. Perbedaan yang fundamental adalah hanya pada penulisannya saja. Oleh karena itu kali ini kita akan menelurisi satu persatu, terutama untuk bahasa pemrograman Python.

Pendahuluan bahasa pemrograman python

catatan: tutorial ini menggunakan Jupyter notebook. Jika Anda ingin menggunakan IDE yang sama, Anda harus menginstallnya terlebih dahulu (install menggunakan Anaconda akan lebih mudah).

Selain itu Anda dapat mendownload file interaktif jupyter notebook untuk tutorial ini pada bab kesimpulan secara gratis.

Jika Anda tipe pembelajar visual dan auditory, maka Anda dapat langsung menonton ini:

[Bahasa Pemrograman Python] Mencoba program pertama

Jika Anda lebih menyukai menonton langsung pada platform youtube. Maka Anda dapat klik disini untuk playlist detail dan dapat subscribe untuk mendapatkan notifikasi update terbaru konten tutorial pada channel Auftechnique.

bahasa pemrograman python
Python

Indentasi

Perbedaan bahasa pemrograman Python dibandingkan bahasa yang lain seperti Java, JavaScript dan C++ adalah indentasi. Mengapa demikian? Jawabnya sederhana, yaitu agar mudah di baca, dapat dibandingkan jika kita membaca Java, kebanyakan programmer pemula akan mengalami kesulitan untuk memahami koding yang di tulis oleh bahasa tersebut jika disandingkan dengan bahasa pemrograman Python.

Indentasi pada bahasa pemrograman Python adalah hal yang wajib. jika kita tidak mematuhi aturan tersebut, maka akan memberikan pesan error seperti di bawah ini:

IndentationError: unexpected indent

Pada bahasa pemrograman Python, notifikasi pesan Error pun sangat mudah di baca. Bagi anda yang pada mulanya menggunakan bahasa lain, lalu beralih menggunakan Python. Mungkin awalnya Anda akan merasa risih, namun pada akhirnya Anda akan menyadari bahwa indentasi ini sangat menyenangkan mata programmer, terlebih jika kode program tersebut di tulis oleh orang lain. Hal tersebut akan mempermudah jika kita bekerja di dalam tim yang besar, sehingga akan cepat memahami intensi dari kode program tersebut.

Variable

Sesuai dengan namanya, variable adalah sesuatu yang dapat berubah. Variabel ini digunakan untuk merujuk menuju lokasi memori oleh program komputer.

Pada sebagian besar bahasa lain, Anda perlu menetapkan tipe data terhadap suatu variabel. Namun, hal itu tidak perlu dilakukan pada bahasa pemrograman python. Sebagai contoh, jika Anda menulis program dengan menggunakan bahasa C, maka sintaks yang harus anda tulis adalah int num = 39; Dengan Python Anda hanya cukup menuliskan num = 39.

Untuk memeriksanya, Anda dapat membuka Jupyter notebook atau Python Shell, lalu lakukan langkah demi langkah perintah di bawah ini:

Integer

Integer adalah angka numerik yang dapat berupa nilai positif, negatif, atau nol tanpa memiliki angka desimal

num = 39
print(num)
39
type(num)
<class 'int'>

Seperti yang telah kita lihat di atas, kita telah mendeklarasikan variabel num dan menetapkan angka 39 sebagai nilai variabel tersebut. Metode type yang sudah built-in pada bahasa pemrograman python dapat digunakan untuk memeriksa jenis suatu variabel. 

Ketika kita memeriksa jenis variable num dengan menggunakan metode type, maka kita akan melihat output   <class 'int'>

Float

Float adalah angka numerik sama seperti integer , namun ada sedikit perbedaan, yaitu adanya angka desimal

num = 39.0
print(num)
39.0
type(num)
<class 'float'>

Dapat di lihat pada contoh tersebut bahwa kita telah menggunakan angka desimal pada num. Lalu, ketika kita memeriksanya pada bahasa pemrograman Python akan menunjukkan bahwa tipe data tersebut adalah float.

String

String adalah kumpulan beberapa karakter atau integer. String tersebut direpresentasikan dengan menggunakan tanda quotes (double ataupun single).

test = "Hallo semua"
print(test )
Hallo semua
type(test )
<class 'str'>

Pada contoh di atas kita telah menetapkan string pada variable test. Jenis variable test ini adalah seperti yang terlihat pada output Python, yaitu string.

Boolean

Boolean adalah operator biner yang hanya memiliki dua nilai output yaitu True atau False.

anda_robot = False
print(anda_robot)
False
type(anda_robot)
<class 'bool'>

Di sini kita telah menetapkan nilai False kepada variable anda_robot. Jenis variabel ini adalah boolean. Kita hanya dapat menetapkan True atau False. Perlu di ingat bahwa T dan F harus berupa huruf kapital atau kita akan mendapatkan pesan error code ini:

anda_robot = false
print(anda_robot)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-147-4473960a0737> in <module>
----> 1 anda_robot = false
      2 print(anda_robot)

NameError: name 'false' is not defined

NoneType

NoneType digunakan ketika variable tidak memiliki nilai, seperti pada contoh di bawah ini:

num = None
print(num)
None
type(num)
<class 'NoneType'>

Operator

Operator adalah simbol aritmatika pada bahasa pemrograman Python atau bahasa lainnya, untuk melihat seluruh operator yang tersedia pada Python Anda dapat melihat table di bawah ini.

Bahasa pemrograman Python tabel operator
Tabel Python operator

Mari kita membahas satu per satu operator pada bahasa pemrograman python

Operator aritmatika

Operator yang akan kita bahas adalah penambahan, pengurangan, perkalian, eksponensial, modulus, dan pembagian. Mari kita lihat operasi aritmatika sederhana pada bahasa pemrograman Python.

Pertama-tama kita akan mendeklarasikan dua variabel a dan b.

a = 6 
b = 2

Untuk lebih jelasnya, dapat kita lihat pada contoh di bawah ini:

a + b # Penambahan
8
a - b # Pengurangan
4
a * b # Perkalian
12
a / b # Pembagian
3.0
a ** b # Eksponensial
36

Contoh untuk menguji operator aritmatika lainnya:

a = 7
b = 3
a % b # Modulus (sisa pembagian)
1
a // b # Floor division (di bulatkan ke bawah)
2

Operator pembanding

Contoh operator pembanding adalah sama dengan, lebih besar dari, serta kurang dari.

a = 5 
b = 2 
a > b # Lebih besar
True
a < b # kurang dari
False
a == b # sama dengan 
False
a >= 5 # lebih besar atau sama dengan
True
b <= 1 # lebih kecil atau sama dengan
False

Operator logika

Operator ini "tidak termasuk", "dan", "dan atau"

a = 10
b = 2
a == 2 and b == 10 # dan
False
a == 10 or b == 10 # atau
True
not(a == 10) # tidak
False
not(a == 2)
True

Conditional Statement

Conditional statement digunakan untuk memeriksa suatu kondisi yang ditentukan sebelumnya apakah nilai nya True atau False.

Sering kali ketika kita sedang mengembangkan suatu aplikasi, ada hal di mana kita perlu memeriksa suatu kondisi tertentu lalu melakukan perintah yang berbeda tergantung pada hasil sebelumnya. Dalam skenario seperti itu conditional statement akan sangat berguna. if, elif dan else adalah pernyataan kondisional yang digunakan dalam bahasa pemrograman Python.

Dengan conditional statement, kita dapat membandingkan suatu variable dan memeriksanya apakah variable tersebut memiliki nilai atau merupakan suatu boolean, dan selanjutnya memeriksa apakah True atau False. Oleh karena itu, mari kita praktekan penggunaannya.

Kondisi pertama. Kita memiliki suatu integer dan tiga kondisi. Yang pertama adalah kondisi if untuk mengecek apakah nomor tersebut sama dengan 10. Yang kedua adalah kondisi elif. Disini kita akan memeriksa apakah nomor tersebut kurang dari 10. Yang terakhir adalah kondisi else. Kondisi ini akan tereksekusi jika kedua kondisi sebelumnya tidak memenuhi syarat.

angka = 5
if angka == 10:
    print("angka adalah 10")
elif angka < 10:
    print("angka adalah kurang dari 10")
else:
    print("angka adalah lebih dari 10")

Output:

angka adalah kurang dari 10

Catatan: Tidak wajib untuk menggunakan dua kondisi sama-dengan di dalam kondisi if. Anda dapat melakukannya dengan elif.

Kondisi kedua. Pada kasus ini kita akan memiliki variabel boolean dan dua kondisi. Pada contoh sebelumnya ketika kita membahas mengenai boolean apakah benar atau salah? Saat ini kita akan menggunakannya kembali pada conditional statement.

Jika anda_robot, lalu print "Ya, saya robot", selain itu print "bukan, saya manusia".

anda_robot = False
if anda_robot:
    print ("Ya, saya robot")
else:
    print ("bukan, saya manusia")

Output:

bukan, saya manusia

Kondisi ketiga. Pada contoh ini kita akan membuat kondisi berkebalikan dari kondisi kedua dengan operator not.

anda_robot = False
if not anda_robot:
    print ("Ya, saya robot")
else:
    print ("bukan, saya manusia")

Output

Ya, saya robot

Kondisi ke empat. Disini kita akan mendeklarasikan data sebagai None, lalu memeriksanya jika data tersebut ada atau tidak.

data = None
if data:
    print ("data bukan none")
else:
    print ("data adalah none")

Kondisi kelima. Anda pun dapat menggunakan if dalam satu baris pada bahasa pemrograman Python. Syntax nya akan terlihat seperti pada:

a = 10
b = 5
if a > b: print("a lebih besar dari b")

Output:

a lebih besar dari b

Kondisi ke enam. Anda pun dapat menggunakan if else dalam satu baris, seperti pada contoh di bawah ini:

num = 5
print("Angka adalah lima ") if num == 5 else print("Angka bukan lima")

Output:

Nomor adalah lima 

Kondisi ketujuh. Anda pun dapat menggunakan nested if-else statement, yaitu:

num = 25
if num > 10:
    print("Angka lebih besar dari 10")
    if num > 20:
        print("Angka lebih besar dari 20")
    if num > 30:
        print("Angka lebih besar dari 30")
else:
    print("Angka lebih kecil dari 10")
Nomer lebih besar dari 10
Nomer lebih besar dari 20

Kondisi kedelapan. Anda dapat pula mengunakan operator and pada conditional statement. Operator ini menyatakan jika kondisi 1 dan 2 keduanya adalah benar.

num = 10
if num > 5 and num < 15:
     print(num)
else:
     print("Angka bisa lebih kecil dari 5 atau lebih besar dari 15")

Output:

10

Karena 10 adalah angka di antara 5 dan 15.

Kondisi kesembilan. Anda pun dapat menggunakan operator or dalam pernyataan bersyarat. Hal ini untuk menyatakan bahwa jika salah satu kondisi 1 atau kondisi 2 benar, sehingga program akan di eksekusi.

num = 10
if num > 5 or num < 7:
     print(num)

Output:

10

Apakah Anda bingung karena output num adalah 10, padahal pada statement kedua adalah kurang dari 7? Hal ini disebabkan oleh kondisi or. Sehingga, jika salah satu kondisi terpenuhi, maka program akan tetap berjalan.

For loops

Metode lain yang berguna dalam bahasa pemrograman Python adalah iterator. Hal ini sangat membantu jika Anda ingin melakukan sesuatu beberapa kali.

print("Hai")
print("Hai")
print("Hai")

Dapat dibayangkan jika kita ingin menulis kata "Hai" sebanyak seribu kali, tentu kode program kita akan sangat sulit untuk di baca, selain itu, kemungkinan terjadinya kesalahan sangat lah besar. Oleh karena itu, kita dapat menggunakan suatu cara yang disebut loop atau iterator. Ada dua cara untuk menjalankan perintah tersebut, yaitu dengan for atau while loop.

Pada contoh kali ini, kita akan menggunakan metode range. Metode ini yang menentukan rentang loop seberapa banyak perintah harus di ulang. Secara default, titik awalnya adalah 0.

for i in range(3):
   print("Hai")

Output:

Hai
Hai
Hai

Contoh lainnya jika kita ingin membuat rentang yang berbeda, maka kita dapat menggunakan range(1,3).

for i in range(1,3):
   print("Hai")

Output

Hai
Hai

"Hai" hanya tercetak dua kali karena kita telah menentukan rentang dari angka 1 hingga 3. Sederhananya kita dapat mengurangi angka sebelah kanan dengan sebelah kiri.

Kita pun dapat menambahkan perintah lain setelah loop selesai, seperti pada contoh di bawah ini:

for i in range(3):
  print("Hai")
else:
  print("Selesai")

Output

Hai
Hai
Hai
Selesai

Dapat kita lihat bahwa loop telah melakukan iterasi sebanyak 3 kali ( 3 - 0 ). Setelah iterasi selesai, tahap selanjutnya adalah mengeksekusi statement else.

Selain itu kita pun dapat melakukan nesting for loop di dalam for loop yang lain.

for i in range(3):
     for j in range(2):
        print("loop di dalam")
     print("loop di luar")

Output:

loop di dalam
loop di dalam
loop di luar
loop di dalam
loop di dalam
loop di luar
loop di dalam
loop di dalam
loop di luar

Dapat kita lihat bersama bahwa statement "loop di dalam" tereksekusi dua kali. Setelah itu "loop di luar" di eksekusi satu kali. Lalu, "loop di dalam" di eksekusi lagi sebanyak dua kali.

Jika Anda masih bingung, semoga pernyataan ini dapat membantu:

Kita pun dapat memilih untuk melewati for loop pada kondisi tertentu. Maksudnya adalah setiap kali proses looping dijalankan, hingga intrepreter melihat statement pass, sehingga membuatnya tidak mengesekusi baris tersebut dan akan melanjutkan pada baris setelahnya (jika ada).

for i in range(3):
   pass

Anda tidak akan melihat output di sini, karena setelah pass tidak ada lagi baris kode program.

While loops

Dalam bahasa pemrograman Python, terdapat metode loop atau iterator yang lain, yaitu while loop. Kita pun dapat memberikan hasil yang sama seperti yang telah kita lakukan pada for loop dengan menggunakan while loop, seperti contoh di bawah ini:

i = 0
while i < 3:
  print("Angka", i)
  i += 1

Output

Angka 0
Angka 1
Angka 2

Perlu diperhatikan bahwa, setiap kali kita menggunakan perintah while loop. Kita harus menambahkan statement increment atau statement yang dapat menghentikan loop pada titik tertentu. Jika kita tidak menggunakannya, maka proses loop akan berjalan selama nya.

Cara lain untuk menghentikan loop adalah dengan menambahkan statement break di dalam while loop. Perintah ini akan menghentikan loop seperti pada contoh di bawah ini.

i = 0
while i < 3:
    if i == 3:
           break
    print("Angka", i)
    i += 1

Output

Angka 0
Angka 1
Angka 2

Di sini kita menghentikan while loop ketika intrepreter membaca nilai dari i , yaitu 4 (lebih dari 3).

Contoh lainnya adalah dengan menambahkan statement else di dalam while loop. Statement ini akan di eksekusi setelah while loop selesai.

i = 0
while i < 3:
    print("Angka", i)
    i += 1
else:
    print("Angka lebih besar dari 2")

Output:

Angka 0
Angka 1
Angka 2
Angka lebih besar dari 2

Selanjutnya adalah statement continue. Statement ini dapat digunakan untuk melewati proses eksekusi yang sedang berjalan dan melanjutkan pada baris setelahnya.

i = 0
while i < 5:
  i += 1
  if i == 2:
       continue
  print("Angka", i)

Output:

Angka 1
Angka 3
Angka 4
Angka 5

User input

Bayangkanlah kita membuat suatu aplikasi seperti command-line. Dimana aplikasi ini harus dapat mengambil input dari pengguna dan melakukan sesuai apa yang di perintah. Untuk melakukan hal tersebut, kita dapat menggunakan metode input yang sudah terintegrasikan pada bahasa pemrograman Python.

Memasukkan input

Syntax agar user dapat melakukan input adalah:

variable = input(".....")

Contoh:

name = input("Masukan nama Anda: ")

Output:

Input nama

Ketika kita menggunakan metode input, lalu mengesekusinya, kita akan di minta untuk memasukkan text pada textbox, lalu tekan Enter. Setelah itu kita dapat memeriksa kembali apakah variable nama yang kita masukkan sudah sesuai atau belum.

Print nama

Berdasarkan hasil di atas, maka variable yang kita masukkan adalah benar. Jika Anda mengeceknya, Zacky ini adalah type data string.

type(name)
<class 'str'>

Mari kita coba satu contoh lagi, dimana kita akan meng-assign nilai integer sebagai input.

bahasa pemrograman python
input case
Tanggal

Apakah Anda sedikit bingung karena integer dikenali oleh bahasa pemrograman python sebagai string. Ini bukan kesalahan pada Python, melainkan memang seharusnya memberikan output seperti itu jiga menggunakan metode input. Untuk menangani kasus seperti ini, maka kita akan mengkonversi string kepada integer dengan metode typecasting.

Typecasting

Kita telah melihat bahwa, metode input akan menghasilkan output berupa string, termasuk integer. Sekarang, jika kita ingin mengubah output tersebut kepada integer, hal yang harus kita lakukan adalah:

string ke integer

Disini kita telah mendeklarasikan User input dan mengkonversikannya ke dalam bentuk integer menggunakan metode input pada bahasa pemrograman python . Inilah yang disebut dengan nama typecasting.

Sederhananya, kita dapat melakukan konversi dengan bantuan typecasting untuk semua jenis variable:

catatan: Konversi dari integer ke string pun dapat dilakukan.

Dictionary

Bagian ini pada artikel bahasa pemrograman python, kita akan membahas Dictionary. Kita dapat membayangkannya untuk menyimpan user detail, seperti halnya kamus yang dapat menyimpan berbagai macam kata-kata. Python pun dapat melakukan hal serupa dengan cara seperti di bawah ini:

nama = "Zacky"
profesi = "Developer"

Untuk melihat hasilnya, kita dapat menggunakan perintah print.

print(nama)
Zacky

Sebagai seorang programmer, cara tersebut tidaklah elegan. Untuk membuatnya lebih baik, mari kita menyimpan data tersebut di dalam key-value dictionary.

Dictionary adalah kumpulan variable yang tidak berurutan dan dapat di ubah(dapat di perbaharui).

Format dictionary pada bahasa pemrograman python adalah sebagai berikut:

data = {
	"key" : "value"
}

Untuk memahaminya lebih jauh, maka kita dapat melihat contoh pada penggunaannya.

info_detail = {
 "nama": "Zacky",
 "profesi": "Developer",
 "hobi": "Ngoprek open source software dan hardware"
  }

Mengakses nilai pada dictionary

Untuk dapat mengakses nilai di dalam dictionary ada dua cara yang dapat kita lakukan. Kita akan melihat kedua cara tersebut, sehingga dapat menentukan mana yang lebih baik.

Untuk mengakses nilai pada key nama dari info_detail di dalam dictionary pada bahasa pemrograman python adalah seperti pada gambar di bawah ini:

Kita dapat melihat bahwa cara pertama lebih mudah untuk dipahami. Namun, masalah akan timbul ketika kita hendak mengakses data yang tidak ada di dalam dictionary, seperti pada contoh di bawah ini:

info_detail["umur"]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-41-790676cbae31> in <module>
----> 1 info_detail["umur"]
KeyError: 'umur'

Dari pesan error di atas terindikasi bahwa tidak ada key yang bernama umur. Sekarang, mari kita coba skenario yang sama dengan menggunakan metode kedua.

info_detail.get("umur")

Kita tidak mendapatkan response apapun dari Python console setelah kita hit run. Mari kita mencoba debugging lebih jauh lagi untuk mengetahui mengapa hal ini dapat terjadi. Namun sebelumnya, kita akan menetapkan variable umur untuk memanggil metode get, lalu lakukan perintah print.

umur = info_detail.get("umur")
print(umur)

Output

None

Berdasarkan contoh di atas, ketika perintah get tidak menemukan nilai key ,maka akan menghasilkan variable bernilai None. Hal ini yang menyebabkan kita tidak mendapatkan pesan error. Anda mungkin bertanya-tanya, manakah metode yang lebih baik. 

Sebagian besar programmer biasanya menggunakan metode kedua karena lebih masuk akal. Namun, untuk beberapa kondisi di mana pengecekan kode program yang lebih ketat, maka kita perlu menggunakan metode pertama.

Memeriksa keberadaan key.

Kita mungkin bertanya-tanya, bagaimana cara kita ingin mengetahui apakah suatu dictionary memiliki key tertentu atau tidak. Pada bahasa pemrograman python, metode key() dapat menyelesaikan masalah ini.

if "umur" in info_detail.keys():
     print("Ya, ada di dalam key")
else:
     print("tidak ada di dalam key")

Output:

tidak ada di dalam key

Bagaimana jika kita ingin memeriksa apakah suatu dictionary itu memiliki suatu nilai atau tidak? Untuk mengetahuinya, mari kita mendeklarasikan dictionary kosong seperti di bawah ini:

info_detail = {}

Kita dapat menggunakan if-else pada dictionary secara langsung untuk melakukan pengecekan, jika memberikan hasil true maka terdapat data di dalam dictionary tersebut, sebaliknya false jika tidak memiliki data.

Pada bahasa pemrograman python, metode bool pun dapat di gunakan untuk pengecekan apakah suatu dictionary memiliki nilai atau tidak. Perlu di ingat bahwa boolean akan memberikan hasil False jika dictionary tidak memiliki nilai dan True jika memiliki nilai.

Update key yang memiliki nilai.

Pada bagian ini kita akan mencoba untuk mengubah nilai yang sudah ada di dalam dictionary. Misalkan kita sudah memiliki dictionary seperti di bawah ini:

info_detail = {
  "nama":"Zacky",
  "profesi": "Developer"
}

Misalkan kita ingin mengubah status profesi yang ada di dalam dictionary, maka syntax untuk melakukannya ialah:

info_detail["profesi"] = "tukang kayu"
print(info_detail)
{'nama': 'Zacky', 'profesi': 'tukang kayu'}

Mengubah nilai key pada dictionary adalah sama dengan cara memberikan nilai pada variabel.

Menambahkan pasangan key-value

info_detail["umur"] = "120"
print(info_detail)
{'nama': 'Zacky', 'profesi': 'tukang kayu', 'umur': '120'}

Dapat kita lihat bahwa key yang baru kita masukan ke dalam dictionary adalah umur yang memiliki value 120.

Menghapus pasangan key-value.

Untuk menghapus pasangan key-value pada bahasa pemrograman python adalah dengan metode pop.

info_detail.pop("umur")
'120'
print(info_detail)
{'nama': 'Zacky', 'profesi': 'tukang kayu'}

Dapat di lihat bahwa key-value umur telah hilang dari dictionary.

Meng-copy dictionary

Dictionary tidak dapat di copy dengan menggunakan cara konvensional. Kita tidak dapat meng-copy nilai dictA ke dictB seperti contoh di bawah ini:

dictA = dictB
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-48-62e270af49fb> in <module>
----> 1 dictA = dictB

NameError: name 'dictB' is not defined

Cara di atas akan memberikan pesan error. Cara yang tepat untuk copy value adalah dengan menggunakan metode copy.

dictB = info_detail.copy()
print(dictB)
{'nama': 'Zacky', 'profesi': 'tukang kayu'}

Lists

List adalah struktur data pada bahasa pemrograman Python yang mutable (dapat di ubah) dan memiliki element berurutan secara sekuensial. Setiap elemen di dalam list disebut dengan item. Untuk mendefinisikan suatu list pada bahasa pemrograman Python adalah dengan menggunakan tanda kurung siku [ ]. Contohnya adalah:

data =[7, 6.789, "abc", False]

List sangat membantu ketika kita bekerja dengan banyak nilai yang saling berhubungan. List memungkinkan kita untuk menyimpan data secara bersamaan dan melakukan metode yang sama untuk melakukan suatu operasi pemrograman terhadap nilai yang banyak dengan sekali perintah.

Mengakses element di dalam list

Mengakses element di dalam list adalah dengan cara memperhatikan urutannya yang di mulai dari angka nol untuk anggota list pertama.
Contoh syntax untuk akses list urutan ketiga:

data[2]
'abc'

Selain mengakses list pada posisi tertentu, anda pun dapat menggunakan rentang anggota list, contoh nya:

data[0:2]
[7, 6.789]

Angka 0 di dalam kurung siku menandakan dari mana kita memulai (dalam hal ini di mulai dari urutan pertama), sedangkan angka kedua 2 adalah posisi nilai sebelum urutan tersebut (sebelum urutan ketiga).

Menambahkan item ke dalam list

Pada bahasa pemrograman python, untuk menambahkan anggota ke dalam list adalah dengan menggunakan metode append.

data.append("tambahan")
data
[7, 6.789, 'abc', False, tambahan']

Mengubah nilai item di dalam list

Pada contoh di bawah ini, kita akan mengubah item ke-empat yaitu False, menjadi True.

data[3] = True
data
[7, 6.789, 'abc', True, 'tambahan']

Menghapus item dari dalam list

Untuk menghapus item di dalam list pada bahasa pemrograman python adalah dengan menggunakan metode remove.

data.remove("abc")
data
[7, 6.789, True, 'tambahan']

Looping pada list

Kita pun dapat memerintahkan fungsi loop di dalam list dengan cara:

for i in data:
    print(i)
7
6.789
True
tambahan

Memeriksa keberadaan list

Untuk memeriksa keberadaan anggota di dalam list adalah dengan cara di bawah ini:

if 8 in data:
    print ("ada")
else:
    print("tidak")

tidak

Kita dapat melihat bahwa angka 8 tidak termasuk di dalam list, sehingga akan kembali pada kondisi else, yaitu tidak.

Meng-copy list

Untuk meng-copy list dari satu kepada yang lainnya adalah dengan menggunakan metode copy.

List2 = data.copy()
List2
[7, 6.789, True, 'tambahan']

Memeriksa panjang list

Pada bahasa pemrograman Python, untuk memeriksa panjang list adalah dengan menggunakan metode len.

len(data)
4

Menggabungkan dua list

Untuk menggabungkan dua list, kita dapat menggunakan operator +.

list1 = [4, 8,1, "hey"]
list2 = [2, 8, "apa kabar"]
list1 + list2

[4, 8, 1, 'hey', 2, 8, 'apa kabar']

Apa yang terjadi jika kita mencoba untuk mengakses elemen yang tidak terdapat di dalam list?

list1[4]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-83-853c8927f3be> in <module>
----> 1 list1[4]

TypeError: 'type' object is not subscriptable

Pada kode program di atas, kita hendak mencoba untuk mengakses element kelima [4]. Seperti yang telah kita ekspektasikan, bahwa kode tersebut akan memberikan pesan error, karena kita hanya memiliki empat elemen di dalam list tersebut.

Tuples

Pada bagian sebelumnya, list bekerja sangat baik untuk menyimpan koleksi data dan yang di ubah (mutable). Namun, terkadang kita ingin membuat list yang tidak dapat di ubah isinya. Tuple dapat melakukannya untuk kita, dengan kata lain tuple adalah list yang immutable (data tidak dapat di ubah).

data = ( 3, 6 , 9, "Hai")
data
(3, 6, 9, 'Hai')

Mengakses elemen tuple

Seperti hal nya untuk mengakses element pada list, tupple pun dapat di akses dengan menggunakan syntax yang sama.

data[2]
2

Mengakses rentang index pun memiliki cara yang sama dengan list:

data[1:4]
(6, 9, 'Hai')

Mengubah nilai element pada tuple

Mungkin Anda bertanya-tanya. Lho, bukannya tuple tidak dapat di ubah? Anda tidak perlu khawatir jika melakukan kesalahan input pada tuple. Ada trik yang dapat kita lakukan yaitu dengan cara mengkonversi tuple menjadi list, lalu dikonversikan kembali ke dalam bentuk tuple. Contohnya:

data = ( 3, 6, 9, 'Hai')
data2 = list(data) # Konversi data ke list
data2[3] = "hai juga" # update nilai pada list
data = tuple(data2) # konversi balik data ke tuple
data
(3, 6, 9, 'hai juga')

Catatan: Sekali tuple di buat, elemen baru tidak dapat ditambahkan.

Sets

Sets adalah salah satu tipe data yang lain pada bahasa pemrograman Python. Sets merupakan data tidak berurutan dan tidak memiliki indeks, dinyatakan seperti pada contoh berikut ini:

data = { "hai", "salam kenal", 14, 20 }
data
{14, 20, 'hai', 'salam kenal'}

Mengakses elemen di dalam sets

Oleh karena sets tidak memiliki indeks, maka, kita tidak dapat mengaksesnya secara langsung. Oleh karena itu, untuk mengakses elemen tersebut perlu menggunakan fungsi loop.

for i in data:
    print(i)
salam kenal
20
hai
14

Catatan: sekali sets di buat, nilanya tidak dapat di ubah.

Menambahkan item pada sets

Pada bahasa pemrograman python, untuk menambahkan elemen pada suatu sets adalah dengan cara menggunakan metode add.

data.add("tambah")
data
{14, 20, 'hai', 'salam kenal', 'tambah'}

Memeriksa panjang dan menghapus item pada

// Memeriksa panjang elemen
len(data)
5
// Menghapus item
data.remove("hai")
data
{14, 20, 'salam kenal', 'tambah'}

Functions

Ketika kita ingin melakukan tugas tertentu pada program yang kita kembangkan. Kita pun dapat menggunakanfunction pada kode suatu program. Terlebih lagi jika kita ingin melakukan suatu perintah berulang kali di dalam program dan tidak ingin untuk menggunakan kode yang sama berkali-kali. Dengan menggunakan function ini, hidup programmer menjadi lebih mudah.

Untuk mendeklarasikan function pada bahasa pemrograman python adalah dengan menggunakan kata kunci def, contoh nya adalah:

def hello_world():
   print("Hello world, kami dari Indonesia")

Pada contoh di atas, kita telah mendeklarasikan function hello_world, yang ketika di panggil akan mencetak tulisan "Hello world, kami dari Indonesia". Untuk memanggil function tersebut, kita harus menggunakan syntax seperti pada contoh di bawah ini:

hello_world()
//output:
Hello world, kami dari Indonesia

Perlu di ingat bahwa tanda kurung () harus disertakan untuk mengeksekusi function pada bahasa pemrograman python. Jika kita lupa menyertakannya, maka, akan terlihat seperti pada contoh bawah ini:

hello_world
//output:
<function __main__.hello_world()>

Mari kita melihat contoh sederhana kegunaan function ketika hendak melakukan operasi aritmatika penambahan. Cara konvensional untuk melakukan operasi tersebut yaitu:

a = 10 
b = 3
a + b
//output:
13

Sekarang, jika kita ingin mengganti nilai variabel a dan b untuk melakukan operasi penambahan yang sama, kita harus melakukannya lagi seperti pada cara diatas.

a = 10 
b = 3
a + b
//output:
13
a = 1
b = 9
a + b
//output:
10

Dapat dibayangkan jika hanya untuk menggunakan operasi penambahan tersebut dan dilakukan sebanyak puluhan kali, kita harus selalu menyesuaikan nilai a dan b. Cara tersebut sangatlah tidak efisien. Namun, kita tidak perlu khawatir, karena masalah tersebut dapat diselesaikan dengan menggunakan function seperti pada contoh selanjutnya.

def penambahan(a,b):
    print(a+b)

Function di atas adalah untuk operasi aritmatika penjumlahan variable a dan b. Untuk memanggil function tersebut, kita dapat menggunakan syntax di bawah ini:

penambahan(20,3)
//output
23

Dapat kita lihat bahwa dengan menggunakan function untuk mengeksekusi suatu perintah adalah sangat mudah. Sekarang, bagaimana jika kita tidak memasukkan argumen di dalam tanda kurung function penambahan tersebut?

penambahan()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-105-7668fff7f74a> in <module>
----> 1 penambahan()

TypeError: penambahan() missing 2 required positional arguments: 'a' and 'b'

Python akan memberikan pesan TypeError dan menginformasikan kepada kita untuk menggunakan dua argument. Lalu, bagaimana jika kita memasukkan argument ketiga?

penambahan(20,3, 1)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-106-23ba42c141cb> in <module>
----> 1 penambahan(20,3, 1)

TypeError: penambahan() takes 2 positional arguments but 3 were given

Seperti yang terlihat pada pesan error di atas, kita telah memanggil 3 argument, namun pada function penambahan yang telah kita tulis seharusnya hanya memiliki 2 argumen.

Lalu, bagaimana jika kita tidak mengetahui berapa banyak argument yang terdapat pada suatu function? Untuk menjawab masalah tersebut kita dapat menggunakan args dan kwargs pada bahasa pemrograman python.

Args

Kita dapat menggunakan args dan kwargs (di bahas pada bab selanjutnya) jika tidak mengetahui ada berapa banyak argumen yang terdapat pada suatu function.

Untuk meneruskan sejumlah n argument kepada suatu function, kita dapat menggunakan args. Untuk mendefinisikan args, maka kita harus menambahkan tanda * di depan argumen.

Ingat!Ketika kita menambahkan tanda * di depan, kita akan menerima argument dalam bentuk tuple.

def penambahan(*num):
    print(num)

*num pada kasus di atas adalah contoh dari args. Sekarang kita dapat memanggil kembali fungsi add dan melewati beberapa argumen sehingga tidak akan mendapatkan pesan TypeError.

Sehingga, untuk melakukan operasi penjumlahan, kita dapat secara langsung menggunakan metode yang sudah build-in pada bahasa pemrograman Python, yaitu sum.

def penambahan(*num):
    print(sum(num))

Sekarang kita dapat memanggil function penambahan dan kita akan melihat output yang benar seperti pada dua contoh di bawah ini.

penambahan(1,2,3) # memanggil fungsi
6

penambahan(1,2,3,4) # memanggil fungsi
10

Keyword Arguments

Terkadang, kita tidak mengetahui urutan dari suatu argumen yang akan diteruskan ketika function di panggil. Pada kasus seperti ini, kita dapat menggunakan keyword arguments yang dapat diteruskan tanpa harus mengingat urutannya. Namun, function tersebut akan mengetahui nilai yang benar. Lihatlah contoh di bawah ini:

Hasil pemanggilan function dan argument di atas adalah tepat. Namun, bagaimana jika kita memanggil function tersebut seperti ini:

info_detail("tukang kayu", "Zacky")
# outputnya akan seperti:
Nama: tukang kayu
Profesi:  Zacky

Hasil di atas adalah tidak benar. Yang terjadi pada kasus ini adalah variable nama mengambil kata "tukang kayu" dan variable profesi memasukkan kata "Zacky". Untuk scenario yang kita tidak ketahui urutan argumentnya, maka cara untuk memanggil keyword argument pada bahasa pemrograman python adalah:

info_detail(profesi= "tukang kayu", nama= "Zacky")
# outputnya akan seperti:
Nama: Zacky
Profesi:  tukang kayu

Default Arguments

Pada kondisi di mana kita tidak yakin apakah suatu argumen memiliki suatu nilai atau tidak ketika function di panggil. Kita dapat menggunakan metode lain, yaitu default argument seperti pada contoh di bawah ini.

def info_detail(nama, profesi = None):
    print("Nama:", nama)
    print("Profesi: ", profesi)

Di sini kita menyisipkan variable bernilai None pada argument profesi. Sehingga, jika kita tidak memanggil argument kedua, ketika memanggil function tersebut. Maka, argument kedua akan mengambil nilai None sebagai default. Sebagai contoh, mari kita panggil function info_detail.

info_detail("zacky")
# output
Nama: zacky
Profesi:  None

Jika kita memasukkan nilai pada argument kedua, maka nilai None akan berubah dan menjadi nilai argument kedua.

info_detail("zacky", "tukang kayu")
#output
Nama: zacky
Profesi:  tukang kayu

Namun, jika kita menentukan suatu nilai pada argument pertama sebagai default. Lalu, menjadikan argumen kedua sebagai non-default. Maka, Python akan memberikan pesan error seperti di bawah ini:

def info_detail(nama = None, profesi):
    print("Nama:", nama)
    print("Profesi: ", profesi)

File "<ipython-input-130-6c704f968e19>", line 1
    def info_detail(nama = None, profesi):
                   ^
SyntaxError: non-default argument follows default argument

Ingat! Urutan untuk menentukan parameter suatu argumen di dalam function adalah:

  1. Posisi parameter atau non-default, contoh (a, b, profesi)
  2. keyword parameter atau default parameter, contoh (a="abc", nama=None)

Kwargs

Untuk kondisi di mana kita tidak mengetahui ada berapa banyak keyword argumen yang akan diteruskan kepada function. Maka, kita akan menggunakan kwargs. Penggunaan kwarg adalah dengan menempatkan tanda ** di depan argumen.

Ingat! Ketika kita menempatkan tanda ** di depan argumen. Maka, kita akan menerima argument dalam bentuk dictionary.

Mari kita mencoba untuk memahaminya dengan contoh yang konkrit. Kita akan mendekalarasikan function yang dapat menerima nama sebagai argument dengan menggunakan tanda ** di depannya.

def user(**nama):
    print(nama)

Ketika kita memanggil user function, maka kita akan menerima data dalam bentuk dictionary. Mari kita lihat contoh di bawah ini:

user(nama1="messi",name2="ronaldo")
#output
{'nama1': 'messi', 'name2': 'ronaldo'}

Sekilas seperti tidak memiliki perbedaan dengan args. Namun, ini bukan lah args. Pada args, kita tidak dapat mengakses nilai tertentu berdasarkan namanya karena args berbentuk tuple. Sedangkan pada kwargs, kita mendapatkan data dalam bentuk dictionary sehingga nilainya dapat di akses.

Mari kita lihat contoh di bawah ini:

def user(**info_detail):
    print(info_detail['nama'])

Lalu, panggil function tersebut:

user(nama="Zacky",profesi="tukang kayu")
#output
Zacky

Terlihat bahwa dengan menggunakan kwargs kita dapat menampilkan nilai dari nama, yaitu Zacky.

Kesimpulan

Kita telah menelurusi dasar-dasar bahasa pemrograman Python yang cukup intensif. Semoga dapat membantu Anda dalam memahami bahasa pemrograman Python dengan mudah. Saya menyediakan notebook materi ini dalam bentuk file jupyter notebook dengan klik tombol di bawah ini:

Download file Python Dasar

Jika Anda ingin menggunakan bahasa Python pada proyek yang sebenarnya, seperti pada implementasi Internet of Things, maka Anda dapat mengikuti tutorial ini. Atau pada implementasi pada Artificial Intellegent klik di sini

Terima kasih telah membaca artikel ini, semoga bermanfaat untuk anda.

Artikel Rekomendasi:

Python Data Visualisasi dengan Seaborn
Mendeteksi Object Dengan Tensorflow
IoT D
engan Python dan Raspberry Pi
Mendeteksi Object Dengan Raspberry Pi

Referensi:

freebodecamp.org
Buku Python Crash Course

Copyright since @ 2020
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram