Kategori
Python

Struktur Data

Struktur data pada dasarnya merupakan struktur yang dapat menyimpan data secara bersama-sama. Dengan kata lain, mereka digunakan untuk menyimpan koleksi data yang berkaitan satu sama lain.

Ada empat struktur data built-in di Python – list, tuple, dictionary dan set. Kita akan lihat bagaimana penggunaan masing-masing dan bagaimana struktur data tersebut dapat mempermudah hidup kita.

List

list adalah struktur data yang meyimpan koleksi item yang ditempatkan secara berurut. Misalnya Anda dapat menyimpan item berurut(sequence) di dalam list. Hal itu sangat mudah dimengerti jika Anda dapat membayangkan daftar belanja, di mana Anda punya daftar item yang harus dibeli. Namun jika di daftar belanja Anda membariskan item dengan baris baru, di Python Anda cukup meletakkan koma di antaranya.

Penulisan list harus diapit dalam tanda kurung kotak (square bracket), sehingga Python dapat memahami bahwa Anda sedang membuat list. Sekali Anda buat list, Anda dapat menambah, menghapus atau mencari item di dalam list. Karena kita bisa menambah dan menguranginya, kita dapat katakan bahwa list termasuk tipe data mutable – yang berarti nilainya bisa diganti.

Pengenalan Singkat Object (Objek) dan Classes (Kelas)

Meskipun saya menunda pembahasan tentang object dan class hingga sekarang, saat ini penjelasan sedikit dibutuhkan sehingga Anda dapat memahami list secara lebih baik. Kita akan mengeksplorasi topik ini secara lebih detail di bab berikutnya.

List adalah contoh yang bisa dipahami tentang penggunaan object dan class. Ketika kita menggunakan variabel bernama i dan memberi nilai terhadap variabel tersebut, misalnya integer 5, Anda dapat berpikir membuat object (berupa instance) i dari class (berupa tipe) int. Sebagai bantuan, Anda dapat membaca help(int) untuk memahaminya lebih baik.

Sebuah class juga memiliki methods/metode berupa fungsi yang didefinisikan khusus hanya untuk class tersebut. Anda dapat menggunakan fungsi bagian ini, jika dan hanya jika Anda mendeklarasikan objek dari class tersebut. Sebagai contoh, Python memberikan metode append untuk class list yang memungkinkan Anda menambah item di akhir list. Misalnya listku.append('sesuatu') yang akan menambahkan string tersebut (sesuatu) di akhirlistku`. Perhatikan penggunaan notasi bertitik untuk mengakses method dari sebuah object.

Sebuah class juga punya fields yang merupakan variabel tapi hanya digunakan untuk class tersebut. Anda dapat menggunakan variabel atau nama ini, hanya ketika Anda mendeklarasikan objek dari kelas tersebut. Fields juga diakses lewat notasi bertiti, sebagai contoh, listku.field.

Contoh (simpan dengan nama menggunakan_list.py):

# Berikut adalah daftar belanja saya
daftarbelanja = ['apel', 'mangga', 'wortel', 'pisang']

print('Saya memiliki ', len(daftarbelanja), ' barang untuk dibeli.')

print('Barang tersebut adalah:', end=' ')
for item in daftarbelanja:
    print(item, end=' ')

print('\nSaya juga harus membeli beras.')
daftarbelanja.append('beras')
print('Daftar belanja saya sekarang', shoplist)

print('Saya akan mengurutkan daftar saya sekarang')
daftarbelanja.sort()
print('Daftar belanja yang sudah diurutkan adalah', shoplist)

print('Barang pertama yang akan saya beli adalah', shoplist[0])
olditem = daftarbelanja[0]
del daftarbelanja[0]
print('Saya telah membeli', olditem)
print('Daftar belanja saya sekarang ', daftarbelanja)

Keluaran:

$ python3 menggunakan_list.py
Saya memiliki 4 barang untuk dibeli.
Barang tersebut adalah: apel mangga wortel pisang
Saya juga harus membeli beras.
Daftar belanja saya sekarang ['apel', 'mangga', 'wortel', 'pisang', 'beras']
Saya akan mengurutkan daftar saya sekarang
Daftar belanja yang sudah diurutkan adalah ['apel', 'beras', 'mangga', 'pisang', 'wortel']
Barang pertama yang akan saya beli adalah apel
Saya telah membeli apel
Daftar belanja saya sekarang ['beras', 'mangga', 'pisang', 'wortel']

Bagaimana Cara Kerjanya:

Variabel daftarbelanja adalah daftar belanja seseorang yang akan pergi ke pasar. Di dalam daftarbelanja, kita hanya menyimpan nama string yang akan dibeli, tapi Anda dapat menambahkan segala macam jenis objek ke dalam daftar, termasuk angka, bahkan bisa juga list lainnya.

Kita juga dapat menggunakan putaran for..in untuk mengulangi seluruh item di dalam list. Sekarang, harusnya Anda juga sudah mulai memahami bahwa list juga merupakan urutan (sequence). Kekhususan dari sequence akan didiskusikan di bagian berikutnya.

Perhatikan bahwa argumen keyword end di dalam fungsi print mengindikasikan bahwa kita ingin outputnya diakhiri dengan spasi daripada baris baru seperti biasanya.

Berikutnya, kita menambahkan item ke dalam list dengan menggunakan metode append ke dalam object list, sebagaimana telah didiskusikan sebelumnya. Lalu kita periksa apakah itemnya sudah dimasukkan ke dalam list atau belum dengan mencetaknya ke layar dengan rapi, cukup dengan memberikan perintah print.

Lalu kita sortir listnya dengan menggunakan metode sort. Penting untuk dipahami bahwa metode ini akan berpengaruh ke dalam listnya sendiri, dan tidak akan mengembalikan list yang telah dimodifikasi. Hal ini berbeda dengan cara kerja string. Ini kenapa list disebut sebagai mutable sedangkan string disebut immutable.

Selanjutnya, ketika kita selesai belanja di pasar, kita akan menghapus item yang sudah dibeli dari daftar. Ini dapat dilakukan dengan menggunakan perintah del. Di sini cukup dimasukkan item-item yang akan dihapus, statemen del akan menghapuskannya untuk kita. Kita menentukan item pertama dari daftar yang akan dihapus mulai dari 0, sehingga perintahnya adalah del shoplist[0] (ingat bahwa Python selalu mulai penghitungan dari 0).

Jika Anda ingin tahu semua metode yang didefinisikan oleh object list, ketikkan help(list) dari konsol python untuk detailnya.

Tuple

Tuples digunakan untuk menyimpan object lebih dari satu secara bersamaan. Bayangkan hal ini mirip dengan list, tapi tanpa fungsi yang diberikan class list untuk Anda. Salah satu fitur tuples adalah immutable seperti string. Dengan kata lain Anda tidak bisa modifikasi tuples.

Tuples didefinisikan dengan menentukan item dipisahkan oleh koma, dengan tambahan pilihan dalam kurung (tidak wajib).

Tuples biasanya digunakan dalam kasus di mana sebuah statemen atau fungsi yang didefinisikan sendiri dapat berasumsi bahwa nilai di dalamnya tidak berubah. Atau dengan kata lain nilai dari sebuah tuple tidak akan pernah berubah.

Contoh (simpan dengan nama menggunakan_tuple.py):

bonbin = ('piton', 'gajah', 'penguin') # ingat bahwa tanda kurung tidak wajib
print('Hewan di kebon binatang berjumlah ', len(bonbin))

bonbin_baru = 'monyet', 'onta', bonbin
print('Kerangkeng di kebun binatang baru berjumlah ', len(bonbin_baru))
print('Semua binatang di kebun binatang terdiri', bonbin_baru)
print('Binatang yang dibawa dari kebun binatang lama adalah ', bonbin_baru[2])
print('Binatang terakhir yang dibawa dari kebun binatang lama adalah', bonbin_baru[2][2])
print('Jumlah seluruh binatang adalah', len(bonbin_baru)-1+len(bonbin_baru[2]))

Keluaran:

$ python3 using_tuple.py
Hewan di kebon binatang berjumlah 3
Kerangkeng di kebun binatang baru berjumlah 3
Semua binatang di kebun binatang terdiri ('monyet', 'onta', ('piton', 'gajah', 'penguin'))
Binatang yang dibawa dari kebun binatang lama adalah  ('piton', 'gajah', 'penguin')
Binatang terakhir yang dibawa dari kebun binatang lama adalah penguin
Jumlah seluruh binatang adalah 5

Bagaimana Cara Kerjanya:

Variabel bonbin merujuk pada sebuah tuple. Kita lihat bahwa fungsi len dapat digunakan untuk mencari panjang sebuah tuple. Ini juga mengindikasikan bahwa tuple juga merupakan sequence.

Kita sekarang memindahkan binatang-binatang ini ke dalam kebun binatang baru mengingat kebun binatang lama sudah ditutup. Sehingga, tuple bonbin_baru berisi binatang-binatang yang sebelumnya sudah ada, dan binatang yang dibawa dari kebon binatang lama. Kembali ke dunia nyata, catat bahwa tuple di dalam tuple tidak pernah kehilangan identitas.

Kita dapat mengakses item di dalam tuple, dengan menyebutkan posisi item di dalam tanda kurung kotak sebagaimana yang telah kita lakukan terhadap lists. Ini dinamakan operator indexing. Kita mengakses item ketiga dari bonbin_baru dengan menyebutkan bonbin_baru[2] dan kita mengakses item ketiga di dalam item ketiga tuple bonbin_baru dengan menyebutkan bonbin_baru[2][2]. Ini cukup mudah jika Anda memahami idiomnya.Tanda Dalam Kurung (parentheses)

Meskipun dalam kurung tidak bersifat wajib, Saya lebih anjurkan untuk selalu menggunakannya, untuk menunjukkan hal tersebut adalah tuple. Hal ini menghindari ambiguitas. Sebagai contoh print(1,2,3) dan print( (1,2,3) ) memiliki arti yang berbeda – di mana print yang pertama menetak tiga angka, sedangkan print kedua mencetak sebuah tuple (yang berisi tiga angka).Tuple dengan item 0 atau 1

Sebuah tuple kosong dibuat dari tanda kurung kosong, seperti misalnya kosong = (). Bagaimanapun juga, tuple dengan satu item tidak sesederhana itu. Anda harus menyebutkannya dengan koma diikuti dengan item pertama (dan satu-satunya) sehingga Python dapat membedakan antara tuple dengan tanda kurung berpasangan yang mengelilingi ekspresi objek. Anda harus menyebutkan singleton = (2,) jika Anda ingin membuat sebuah tuple yang berisi angka 2.Catatan untuk programmer Perl

Sebuah list di dalam list tidak akan kehilangan identitas, dengan kata lain list tidak disatukan sebagaimana di dalam Perl. Ini juga berlaku untuk tuple di dalam tuple, atau list di dalam tuple dan seterusnya. Sejauh yang diperhatikan oleh Python, mereka hanyalah objects yang menyimpan objects lainnya. Tidak ada pertimbangan lain.

Pustaka (dictionary)

Pustaka seperti buku-alamat di mana Anda dapat menemukan alamat atau detail kontak seseorang hanya dengan mengetahui namanya. Dengan kata lain kita asosiasikan kunci atau keys (nama) dengan nilai atau value (informasi detail). Perlu dicatat bahwa kunci dalam sebuah pustaka haruslah unik dan Anda tidak dapat menemukan informasi yang benar jika dua orang punya nama yang sama.

Mohon dicatat bahwa Anda hanya dapat menggunakan immutable objects (objek yang tidak bisa dimutasi/diubah jenisnya seperti string) untuk kunci sebuah pustaka namun Anda dapat menggunakan objek yang bisa berubah bentuk (mutable object) maupun objek yang tidak bisa berubah bentuk (immutable objects). Dengan kata lain Anda seharusnya menggunakan objek yang sederhana untuk kunci.

Pasangan kunci dan nilainya yang digunakan dalam pustaka mengunakan notasi d = {kunci1: nilai1, kunci2:nilai2}. Perhatikan bahwa pasangan kunci-nilai dipisahkan dengan titik dua dan pasangan tersebut dipisahkan dengan koma hingga ditutup dengan kurung kurawal penutup.

Perlu diingat bahwa pasangan kunci-nilai di dalam pustaka tidak bisa diurutkan. Jika Anda ingin mengurutkannya secara khusus, Anda harus malkukan pengurutan (sort) sebelum menggunakannya.

Pusaka yang Anda gunakan merupakan instance/objek dari kelas dict.

Contoh (simpan dengan nama menggunakan_pustaka.py):

# 'ba' adalah kepanjangan dari 'b'uku 'a'lamat 

ba = {  'Swaroop'   : 'swaroop@swaroopch.com',
        'Larry'     : 'larry@wall.org',
        'Matsumoto' : 'matz@ruby-lang.org',
        'Spammer'   : 'spammer@hotmail.com'
    }

print("Alamat email Swaroop adalah ", ba['Swaroop'])

# Menghapus pasangan kunci-nilai
del ba['Spammer']

print('\nAda {0} kontak di buku alamat\n'.format(len(ba)))

for nama, alamat in ba.items():
    print('Kontak {0} memiliki alamat {1}'.format(name, address))

# Menambahkan pasangan kunci-nilai
ba['Guido'] = 'guido@python.org'

if 'Guido' in ba:
    print("\nAlamat email Guido adalah ", ab['Guido'])

Keluaran:

$ python3 menggunakan_pustaka.py
Alamat email Swaroop adalah swaroop@swaroopch.com

Ada 3 kontak di buku alamat

Kontak Swaroop memiliki alamat swaroop@swaroopch.com
Kontak Matsumoto memiliki alamat matz@ruby-lang.org
Kontak Larry memiliki alamat larry@wall.org

Alamat email Guido adalah guido@python.org

Bagaimana Cara Kerjanya

Kita membuat pustaka ba dengan notasi yang telah kita diskusikan sebelumnya. Lalu kita mengakses pasangan nilai-kunci dengan menyebutkan kunci dengan menggunakan operator indeks sesuai yang telah didiskusikan dalam konteks lists dan tuples. Coba teliti sintaks sederhananya.

Kita dapat menghapus pasangan kunci-nilai dengan menggunakan teman lama kita, statemen del. Kita cukup menyebut nama pustaka dan operator indeks sebagai kunci dan memberikannya pada statemen del. Nilainya tidak perlu kita ketahui untuk menjalankan perintah ini.

Berikutnya, kita mengakses pasangan kunci-nilai dari pustaka dengan menggunakan metode items yang mengembalikan daftar tuples, di mana masing-masing tuple berisi pasangan dari item tersebut – kunci diikuti dengan nilainya. Kita ambil pasangan tersebut dan menyematkan variabel nama dan alamat pada setiap pasangan lewat putaran for..in dan mencetak nilai di dalam blok-for.

Kita dapat menambahkan pasangan kunci-nilai, cukup dengan operator indeks untuk mengakses kunci dan memberikan nilainya, sebagaimana kita lakukan terhadap Guido dalam kasus di atas.

Kita dapat mengecek apakah pasangan kunci-nilai ada, dengan menggunakan operator in.

Untuk daftar metode dalam class dict, lihat lewat help(dict).Argumen Kata Kunci dan Pustaka

Dalam catatan yang lain, jika Anda harus menggunakan argumen kata kunci dalam fungsi Anda, maka Anda sudah menggunakan pustaka! Coba pikirkan kembali – pasangan kunci-nilai yang Anda tentukan dalam daftar parameter definisi fungi dan ketika Anda mengakses variabel dalam fungsi Anda, itu hanyalah sebuah kunci akses dari pustaka yang bersangkutan (biasanya disebut sebagai tabel simbol dalam terminologi desain kompiler).

Urutan (Sequence)

Listtuple dan string adalah contoh dari urutan(sequence), namun apa itu urutan dan apa yang khusus tentangnya?

Fitur utamanya adalah ujian keberadaan, (seperti ekspresi di in dan not in) dan operasi mengindeks, yang memungkinkan untuk mengambil item tertentu di dalam urutan secara langsung.

Ada tiga jenis urutan sebagaimana disebut di atas – list, tuple dan string, yang juga punya operasi mengiris yang memungkinkan kita untuk mengambil irisan dari urutan atau bagian dari urutan.

Contoh (simpan sebagai seq.py):

daftarbelanja = ['apel', 'mangga', 'wortel', 'pisang']
nama = 'swaroop'

# Operasi 'mengindeks' atau 'berlangganan'
print('Item 0 adalah', daftarbelanja[0])
print('Item 1 adalah', daftarbelanja[1])
print('Item 2 adalah', daftarbelanja[2])
print('Item 3 adalah', daftarbelanja[3])
print('Item -1 adalah', daftarbelanja[-1])
print('Item -2 adalah', daftarbelanja[-2])
print('Character 0 is', nama[0])

# Mengiris sebuah _list_
print('Item 1 ke 3 adalah', shoplist[1:3])
print('Item 2 ke end adalah', shoplist[2:])
print('Item 1 ke -1 adalah', shoplist[1:-1])
print('Item dari awal hingga akhir adalah', shoplist[:])

# Mengiris _string_
print('karakter 1 ke 3 adalah', nama[1:3])
print('karakter 2 ke terakhir adalah', nama[2:])
print('karakter 1 ke -1 adalah', nama[1:-1])
print('karakter dari awal hingga akhir adalah', nama[:])

Keluaran:

$ python3 seq.py
Item 0 adalah apel
Item 1 adalah mangga
Item 2 adalah wortel
Item 3 adalah pisang
Item -1 adalah pisang
Item -2 adalah wortel
Karakter 0 adalah s
Item 1 ke 3 adalah ['mangga', 'wortel']
Item 2 ke terakhir adalah ['wortel', 'pisang']
Item 1 ke -1 adalah ['mangga', 'wortel']
Item dari awal hingga akhir adalah ['apel', 'mangga', 'wortel', 'pisang']
karakter 1 ke 3 adalah wa
karakter 2 ke terakhir adalah aroop
karakter 1 ke -1 adalah waroo
karakter dari awal hingga akhir adalah swaroop

Bagaimana Cara Kerjanya

Pertama, kita lihat bagaimana menggunakan indeks untuk mengambil item satuan dari sebuah urutan. Ini juga bisa disebut sebagai operasi berlangganan. Saat Anda menyebutkan sebuah angka ke urutan dalam tanda kurung kotak sebagaimana yang ditampilkan di atas, Python akan mengambilkan untuk Anda, item yang berada dalam posisi bersangkutan dalam sebuah urutan. Ingat bahwa Python mulai menghitung angka dari 0. Sehingga daftarbelanja[0] akan mengambil item pertama dan daftarbelanjap3[ akan mengambil item ke empat dalam urutan daftarbelanja.

Indeks juga bisa berupa angka negatif, dalam kasus ini, posisinya akan dihitung dari akhir urutan. Sehingga daftarbelanja[-1] akan merujuk pada item terakhir dari sebuah urutan dan daftarbelanja[-2] mengambil angka kedua terakhir dalam urutan.

Operasi pengirisan digunakan dengan menyebut nama urutan dan bisa ditambahkan (tidak harus) angka atau pasangan angka yang dipisah dengan titik dua dalam tanda kurung kotak. Mohon dicatat bahwa ini sangat mirip dengan operasi mengindeks yang sudah Anda gunakan hingga sekarang. Dan perlu diingat bahwa angka tersebut tidak harus, namun titik dua adalah keharusan.

Angka pertama (sebelum titik dua) dalam operasi pengirisan merujuk pada posisi di mana irisan dimulai dan angka kedua (setelah titik dua) menunjukkan pada angka keberapa urutan akan berhenti. Jika angka kedua tidak diisi, Python akan menghentikannya hingga angka terakhir. Catat bahwa irisan akan mengembalikan angka awal pada posisi start dan akan berakhir satu angka sebelum posisi terakhir. Atau dengan kata lain posisi awal akan ikut dikembalikan namun posisi terakhir tidak akan diikutkan dalam potongan urutan.

Sehingga, daftarbelanja[1:3] akan mengembalikan iritasn yang dimulai pada posisi 1, termasuk psosisi dua namun berhenti di posisi tiga sehingga hanya dua irisan yang dikembalikan. Mirip dengan itu, daftarbelanja[:] akan mengembalikan seluruh urutan.

Anda juga dapat memotong dengan posisi negatif. Angka negatif digunakan untuk posisi dari akhir urutan. Sebagai contoh daftarbelanja[:-1] akan mengembalikan irisan dari urutan yang mengecualikan item terakhir dari urutan, namun menampilkan semua yang lainnya.

Anda juga dapat memberikan argumen ketiga dari potonga, merupakan langkah dari irisan (secara baku, langkah urutannya adalah 1):

>>> daftarbelanja = ['apel', 'mangga', 'wortel', 'pisang']
>>> daftarbelanja[::1]
['apel', 'mangga', 'wortel', 'pisang']
>>> daftarbelanja[::2]
['apel', 'wortel']
>>> daftarbelanja[::3]
['apel', 'pisang']
>>> daftarbelanja[::-1]
['pisang', 'wortel', 'mangga', 'apel']

Perhatikan bahwa ketika langkahnya 2, kita mengambil item dengan posisi 0, 2, … Dan ketika langkahnya 3, kita mengambil item pada posisi 0, 3, dan seterusnya.

Cobalah beberapa kombinasi dengan penggunaan sesuai spesifikasi urutan dengan menggunakan Python interpreter yang interaktif atau prompt sehingga Anda dapat melihat keluarannya secara langsung. Hal yang bagus pada urutan adalah bahwa Anda bisa mengakses tuple,list dan string dengan cara yang sama!

Set

Set adalah koleksi objek sederhana yang tidak berurut. Ini digunakan ketika keberadaan objek dalam sebuah koleksi lebih penting daripada urutannya atau berapa kali muncul.

Dengan menggunakan set Anda dapat mengetes keanggotaan, apakah dia merupakan subset dari set yang lain, menemukan interseksi dari dua set dan lainnya.

>>> bri = set(['brazil', 'rusia', 'india'])
>>> 'india' in bri
True
>>> 'usa' in bri
False
>>> bric = bri.copy()
>>> bric.add('china')
>>> bric.issuperset(bri)
True
>>> bri.remove('russia')
>>> bri & bric # ATAU bri.intersection(bric)
{'brazil', 'india'}

Bagaimana Cara Kerjanya:

Contoh berikut ini bisa menjelaskan-sendiri sebab melibatkan set dasar teori matematika yang diajarkan di sekolah.

Referensi

Ketika Anda membuat objek dan menyematkannya pada variable, variable tersebut hanya mereferensikan pada objek dan tidak merepresentasikan objek itu sendiri! Dengan kata lain, itu hanyalah nama variabel yang menunjukkan bagian dari memori komputer tempat di mana objek tersebut diletakkan. Ini disebut sebagai binding atau mengikat nama kepada objek tersebut.

Secara umum, Anda tidak perlu khawatir tentang hal ini, namun ada beberapa efek ringan atas referensi yang perlu Anda perhatikan:

Contoh (simpan sebagai referensi.py):

print('Tugas Sederhana')
daftarbelanja = ['apel', 'mangga', 'wortel', 'pisang']
daftarku = daftarbelanja # daftarku hanya sekadar nama yang merujuk pada objek yang sama!

del daftarbelanja[0] # Saya membeli item pertama, sehingga saya perlu menghapusnya dari daftar

print('daftar belanja ', daftarbelanja)
print('daftarku', daftarku)
# perhatikan bahwa daftarbelanja dan daftarku, keduanya mencetak hal yang sama 
# tanpa 'apel' mengonfirmasi bahwa keduanya merujuk pada objek yang sama

print('Salin dengan membuat irisan penuh')
daftarku = daftarbelanja[:] # membuat salinan lewat irisan penuh
del daftarku[0] # menghapus item pertama

print('daftar belanja ', daftarbelanja)
print('daftarku', daftarku)
# perhatikan perbedaan kedua list tersebut sekarang

Keluaran:

$ python3 referensi.py
Tugas Sederhana
daftar belanja ['mangga', 'wortel', 'pisang']
daftarku ['mangga', 'wortel', 'pisang']
Salin dengan membuat irisan penuh
daftar belanja ['mangga', 'wortel', 'pisang']
daftarku ['wortel', 'pisang']

Bagaimana Cara Kerjanya

Hampir semua penjelasan sudah ditulis di komentar.

Mohon diingat jika Anda ingin membuat salinan sebuah daftar (list) atau sejenis urutan (sequence) atau objek yang sedikit rumit (bukan objek sederhana seperti integer), Anda harus membuat operasi irisan untuk membuat salinan. Jika Anda hanya menyebut nama dengan nama variabel lain, keduanya akan ‘’merujuk’’ pada objek yang sama dan ini bisa menimbulkan masalah jika Anda tidak hati-hati.Catatan untuk programmer Perl

Ingat bahwa statemen penugasan seperti daftar (listtidak membuat salinan. Anda harus gunakan operasi irisan untuk menyalin sebuah urutan.

Lebih banyak tentang String

Kita telah mendiskusikan string secara lebih detail sebelumnya. Apa lagi yang bisa kita eksplorasi dari situ? Jika Anda tahu string adalah sebuah objek dan memiliki semua metode untuk melakukan berbagai operasi, seperti mengecek bagian atau bahkan menghapus spasi!

String yang Anda gunakan di dalam program merupakan objek dari kelas str. Beberapa metode yang bermanfaat didemonstrasikan dalam contoh berikut. Untuk daftar lengkap dari metode ini, lihat help(str).

Contoh (simpan dengan nama metode_str.py):

nama = 'Swaroop' # Ini adalah objek string

if name.startswith('Swa'):
    print('Ya, string dimulai dengan "Swa"')

if 'a' in name:
    print('Ya, string memiliki huruf "a"')

if name.find('war') != -1:
    print('Ya, string memiliki kata "war"')

delimiter = '_*_'
daftarku = ['Brazil', 'Russia', 'India', 'China']
print(delimiter.join(daftarku))

Keluaran:

$ python3 metode_str.py
Ya, string dimulai dengan "Swa"
Ya, string memiliki huruf "a"
Ya, string memiliki kata "war"
Brazil_*_Russia_*_India_*_China

Bagaimana Cara Kerjanya

Di sini kita lihat banyak metode string kita gunakan. Metode startswith digunakan untuk mengecek apakah objek tersebut dimulai dengan string sebagaimana dimaksud. Operator in digunakan untuk mengecek apakah suatu string (misal kata atau kumpulan huruf/angka) merupakan bagian dari string.

Metode find digunakan untuk mencari posisi substring di dalam string; find memberikan kembalian -1 jika tidak berhasil. Kelas str juga punya metode keren seperti join untuk menggabungkan item dari sebuah urutan dengan menggunakan string tertentu sebagai delimiter dari tiap item sehingga menghasilkan string baru yang lebih besar.

Ringkasan

Kita telah mengeksplorasi banyak struktur data built-in yang ada di Python secara detail Struktur data ini esensial dalam menulis program dalam ukuran apa saja.

Sekarang kita sudah memahami dasar-dasar Python, kita akan lihat bagaimana mendesain dan menulis program Python yang digunakan di dunia nyata.

Kategori
Python

Modul Python

Anda sudah lihat bagaimana Anda dapat menggunakan kembali kode di dalam program dengan membuat fungsi sekali saja. Bagaimana jika ingin menggunakan beberapa fungsi di program lain yang Anda tulis. Sebagaimana sudah ditebak, jawabannya adalah modul Python.

Ada beberapa metode dalam menulis modul, tapi cara yang paling mudah adalah membuat file dengan ekstensi .py yang berisi fungsi dan variabel.

Metode lain untuk menulis modul adalah dengan menulis modul di bahasa ibu di mana interpreter Python ditulis. Sebagai contoh, Anda dapat menulis modul di bahasa pemrograman C dan saat selesai dikompilasi, modul tersebut dapat digunakan dalam kode Python Anda dengan menggunakan interpreter Python standar.

Contoh Modul

Sebuah modul dapat diimpor oleh program lain dan menggunakan fungsinya. Cara ini juga kita pakai dalam memanfaatkan pustaka standar Python. Pertama, akan kita lihat dulu bagaimana menggunakan modul pustaka standar.

Contoh (simpan dengan nama pakai_sys.py):

import sys

print('Argumen baris perintahnya adalah:')
for i in sys.argv:
    print(i)

print('\n\n PYTHONPATH yang ditentukan adalah ', sys.path, '\n')

Keluaran:

$ python3 pakai_sys.py ini argumen kami
Argumen baris perintahnya adalah:
pakai_sys.py
ini
argumen
kami

PYTHONPATH yang ditentukan adalah [<nowiki>''</nowiki>, 'C:\\Windows\\system32\\python30.zip',
'C:\\Python30\\DLLs', 'C:\\Python30\\lib',
'C:\\Python30\\lib\\plat-win', 'C:\\Python30', 
'C:\\Python30\\lib\\site-packages']

Bagaimana Cara Kerjanya

Pertama, kita melakukan import modul sys lewat statemen import. Pada dasarnya, ini bisa diterjemahkan sebagai keinginan kita kepada Python bahwa kita ingin menggunakan modul ini. Modul sys berisi fungsi yang berkaitan dengan interpreter Python dan lingkungannya, antara lain system.

Saat Python mengeksekusi statemen import sys, dia akan mencari modul sys. Dalam hal ini, modul tersebut merupakan modul built-in, sehingga Python langsung tahu di mana mencarinya.

Jika modul yang diinginkan bukan modul terkompilasi, atau modul yang ditulis di Python, maka interpreter Python akan mencari direktori yang terdaftar dalam variabel sys.path. Jika modul ditemukan, maka isi modul tersebut dijalankan dan modul akan tersedia untuk Anda gunakan. Catat bahwa inisialisasi dilakukan saat pertama kali kita mengimpor modul.

Variabel argv di dalam modul sys akan diakses dengan notasi titik, misal sys.argv. Ini secara jelas mengindikasikan bahwa nama tersebut merupakan bagian dari modul sys. Keuntungan lain dari pendekatan ini adalah bahwa nama fungsi tersebut tidak akan bentrok dengan variabel argv yang digunakan di dalam program Anda.

Variabel sys.argv berisi list string (lists dijelaskan lebih detail di bab berikutnya). Secara lebih khusus sys.argv berisi list dari seluruh argumen baris perinta yakni seluruh argumen yang dituliskan pada program Anda saat menjalankannya di baris perintah.

Jika Anda menggunakan IDE untuk menulis dan menjalankan program ini, cari cara untuk menambahkan argumen program dari menu.

Di sini, ketika kita mengeksekusi python pakai_sys ini argumen kami, kita menjalankan modul pakai_sys.py lewat perintah python dan kata-kata yang ditulis setelahnya adalah argumen yang dilemparkan ke dalam program. Python menyimpan baris argumen di variabel sys.argv untuk dapat kita manfaaatkan.

Ingat, nama dari skrip yang dijalankan akan selalu menjadi argumen pertama dalam list sys.argv. Sehingga dalam kasus ini 'pakai_sys.py' sebagai sys.argv[0]'ini' sebagai sys.argv[1]'argumen' sebagai sys.argv[2] dan 'kami' sebagai sys.argv[3]. Perhatikan bahwa Python menghitung dari 0, dan bukan 1.

sys.path berisi daftar nama direktori tempat di mana modul-modul diimpor. Coba perhatikan bahwa string pertama dari sys.path tidak ada isinya – string kosong ini mengindikasikan bahwa direktori program tersebut dijalankan juga merupakan bagian dari sys.path, yang sama dengan environment variable PYTHONPATH. Ini berarti Anda dapat mengimpor modul secara langsung dari direktori tempat file berada saat ini. Jika tidak maka Anda harus meletakkan modul di dalam salah satu direktori yang terdaftar dalam sys.path.

Catat bahwa direktori saat ini adalah direktori tempat program ini dijalankan. Jalankan import os; print(os.getcwd()) untuk mencari direktori program Anda saat ini.

Berkas Byte-compiled .pyc

Mengimpor modul relatif sangat mahal sumber daya, sehingga Python punya trik untuk membuatnya lebih cepat. Salah satu cara adalah membuat berkas byte-compiled (terkompilasi dalam bahasa mesin) dengan ekstensi .pyc. Berkas .pyc ini merupakan bentuk lanjut yang diubah oleh Python ke dalam bahasa yang lebih dekat dengan mesin (ingat bagian pengenalan bagaimana Python bekerja?). Berkas .pyc ini berguna saat Anda lain kali mengimpor modul dari program yang berbeda – modul tersebut akan dijalankan lebih cepat mengingat bagian dari proses yang dibutuhkan untuk mengimpor modul sudah pernah dilaksanakan. Juga, berkas byte-compiled ini tidak tergantung terhadap platform (platform-independent).Catatan

Berkas .pyc biasanya dibuat di dalam direktori yang sama dari berkas .py. Jika Python tidak punya izin untuk menulis berkas ke dalam direktori tersebut, maka berkas .pyc tidak akan dibuat.

Statemen from … import

Jika Anda secara langsung mengimport argv ke dalam program Anda (untuk menghindari sys. setiap kali akan menggunakannya), maka Anda dapat menggunakan statemen from sys import argv.

Secara umum, Anda sebisa mungkin menghindari penggunaan statemen ini dan gunakan statemen import agar program Anda dapat menghindari bentrokan nama modul dan program lebih mudah dibaca.

Contoh:

from math import sqrt
print("Akar dari 16 adalah ", sqrt(16))

name di Dalam Modul

Setiap modul memiliki nama dan statemen yang dapat memberikan informasi nama modul. Hal ini bermanfaat untuk kepentingan khusus apakah modul tersebut jalan sendiri atau berjalan lewat import. Sebagaimana telah disebutkan sebelumnya, saat sebuah modul diimpor pertama kali, kode di dalamnya akan dieksekusi terlebih dahulu. Kita dapat menggunakan hal ini untuk membuat modul memberikan keluaran yang berbeda tergantung apakah modul tersebut digunakan secara sendiri, atau diimpor lewat modul lain. Ini dapat dicapai dengan atribut __name__ di dalam modul.

Contoh (simpan dengan nama pakai_nama.py):

if __name__ == '__main__':
    print('Program ini dijalankan sendiri')
else:
    print('Saya diimpor dari modul lain')

Keluaran:

$ python3 pakai_nama.py
Program ini dijalankan sendiri

$ python3
>>> import pakai_nama
Saya diimpor dari modul lain
>>>

Bagaimana Cara Kerjanya

Setiap modul python memiliki definisi __name__ di dalamnya. Jika saat ini program berjalan sama dengan nilai definisi '__main', maka hal tersebut menunjukkan bahwa modul dijalankan secara sendirian (standalone) oleh pengguna, dan kita dapat menuliskan tindak lanjut yang sesuai dari kondisi tersebut.

Membuat Modul Python Anda Sendiri

Membuat modul Anda sendiri relatif mudah, Anda sudah melakukannya selama ini! Hal ini terjadi karena setiap program Python adalah sebuah modul. Anda hanya perlu memastikan program tersebut memiliki ekstensi .py. Gambaran lebih jelas dapat dilihat dalam contoh berikut.

Contoh (simpan dengan nama modulku.py):

def katakanhai():
    print('Hai, ini modulku berbicara.')

__version__ = '0.1'

Baris kode di atas adalah contoh modul. Sebagaimana Anda lihat, tidak ada yang khusus tentangnya dibandingkan dengan program Python yang biasa kita buat. Kita akan lihat berikutnya, bagaimana menggunakan modul tersebut di dalam program Python yang lain.

Ingat bahwa modul harus diletakkan pada direktori yang sama dengan program yang mengimpornya, atau salah satu dari direktori yang terdaftar di sys.path.

Modul lain (simpan dengan nama demo_modulku.py):

import modulku

modulku.katakanhai()
print ('Versi', modulku.__version__)

Keluaran:

$ python3 demo_modulku.py
Hai, ini modulku berbicara.
Versi 0.1

Bagaimana Cara Kerjanya

Perhatikan bahwa kita menggunakan notasi bertitik yang sama untuk mengakses anggota modul. Python membuat penggunaan kembali secara baik dengan notasi yang sama untuk memberikan rasa ‘Pythonic’ sehingga kita tidak harus belajar cara baru untuk mengerjakan hal-hal lainnya.

Berikut versi yang menggunakan sintaks from..import (simpan dengan nama demo2_modulku.py):

from modulku import katakanhai, __version__

katakanhai()
print('Versi', __version__)

Keluaran demo2_modulku.py sama dengan keluaran demo_modulku.py.

Perhatikan bahwa jika ada __version__ yang dideklarasikan sebelumnya oleh demo_modulku.py atau demo2_modulku.py maka akan terjadi bentrok. Ini juga karena praktik yang umum pada setiap modul untuk mendeklarasikan versi dengan menggunakan namanya. Sehingga, selalu direkomendasikan untuk statemen import meskipun hal itu membuat program Anda sedikit lebih lama.

Anda dapat juga menggunakan:

from modulku import *

Ini akan mengimpor seluruh nama publik seperti katakanhai tapi tidak akan mengimpor __version__ karena nama tersebut diawali dengan dua garis bawah.Zen of Python

Salah satu prinsip panduan Python adalah bahwa “Eksplisit lebih baik daripada Implicit”. Jalankan import this untuk mempelajari prinsip-prinsip lainnya dan lihat diskusi di StackOverflow tentang hal ini yang membuat daftar contoh dari masing-masing prinsip.

Fungsi dir

Anda dapat menggunakan fungsi built-in (sudah ada secara otomatis) dir untuk melihat daftar seluruh nama yang didefinisikan oleh objek (dalam hal ini didefinisikan oleh sebuah modul). Dalam hal modul, fungsi dir() akan memuat daftar seluruh fungsi, kelas dan variabel yang didefinisikan oleh modul tersebut.

Jika Anda memberikan nama modul untuk fungsi dir(), akan memberikan daftar nama yang didefinisikan dalam modul yang dimasukkan tersebut. Jika tidak memasukkan argumen, maka akan mengembalikan nama yang didefinisikan oleh modul yang dipakai saat ini.

Contoh:

$ python3

>>> import sys # mengambil seluruh atribut, dalam kasus ini, dari modul sys

>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__s
tderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_compact_freelists',
'_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', '
byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle'
, 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable',
'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getfil
esystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof',
'gettrace', 'getwindowsversion', 'hexversion', 'intern', 'maxsize', 'maxunicode
', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platfor
m', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setprofile', 'setrecursionlimit
', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_in
fo', 'warnoptions', 'winver']

>>> dir() # menampilkan daftar seluruh atribut dari modul yang sedang dijalankan
['__builtins__', '__doc__', '__name__', '__package__', 'sys']

>>> a = 5 # membuat variabel baru 'a'

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'sys']

>>> del a # menghapus nama a

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'sys']

>>>

Bagaimana Cara Kerjanya:

Pertama, kita lihat penggunaan dir dari modul sys yang telah diimpor sebelumnya. Kita lihat banyak sekali daftar atribut yang ada di dalamnya.

Selanjutnya, kita menggunakan fungsi dir tanpa memasukkan parameter. Secara baku, fungsi tersebut mengembalikan daftar seluruh atribut dari modul yang sedang dijalankan. Perhatikan bahwa daftar modul yang diimpor juga merupakan bagian dari daftar ini.

Dalam rangka observasi dir, kita mendefinisikan variabel baru dengan nama a lalu memberinya nilai. Saat kita cek dengan dir kita akan melihat baris tambahan dari daftar yang sama. Kita menghapus variabel/atribut dari modul saat ini dengan statemen del dan perubahan tersebut akan langsung terlihat dalam keluaran fungsi dir.

A note on del – this statement is used to delete a variable/name and after the statement has run, in this case del a, you can no longer access the variable a – it is as if it never existed before at all.

Catat bahwa fungsi dir() dapat dijalankan dalam setiap objek. Sebagai contoh, jalankan dir('print') untuk mempelajari fungsi print, atau dir(str) untuk atribut-atribut yang ada dalam kelas str.

Paket

Hingga saat ini, Anda seharusnya sudah mulai belajar mengobservasi hierarki dari struktur program Anda. Variabel biasanya ada di dalam fungsi. Fungsi dan variabel global biasanya ada di dalam modul. Bagaimana jika Anda ingin mengatur modul supaya lebih terorganisir? Saatnya kita berkenalan dengan struktur baru bernama paket.

Paket hanyalah berupa folder yang didalamnya berisi modul, dengan satu tambahan berkas khusus bernama __init__.py, yang mengindikasikan kepada Python bahwa folder tersebut khusus berisi modul Python.

Sebagai contoh Anda ingin membuat paket bernama ‘world’ dengan sub paket bernama ‘asia’, ‘afrika’, dan seterusnya, dan sub paket ini berisi modul dengan nama ‘india’, ‘madagaskar’ dan seterusnya.

Begini seharusnya struktur di dalam folder:

- <salah satu folder yang ada dalam sys.path>/
    - world/
        - __init__.py
        - asia/
            - __init__.py
            - india/
                - __init__.py
                - foo.py
        - afrika/
            - __init__.py
            - madagaskar/
                - __init__.py
                - bar.py

Paket hanyalah berupa cara yang nyaman untuk menata modul secara lebih teroganisir. Anda dapat lihat contoh-contohnya dalam pustaka standar.

Ringkasan

Sebagaimana fungsi yang merupakan bagian dari program yang dapat digunakan kembali, modul adalah program yang dapat digunakan kembali. Paket adalah hierarki di atasnya untuk membuat modul dapat lebih tertata. Pustaka standar yang ada di dalam Python adalah contoh yang dapat dilihat bagaimana hierarki dari paket dan modul.

Kita telah melihat bagaimana menggunakan modul ini dan membuat modul kita sendiri.

Berikutnya, kita akan belajar konsep menarik lainnya yang bernama struktur data.

Kategori
Python

Fungsi

Fungsi merupakan bagian di dalam program yang dapat digunakan kembali. Fungsi tersebut memungkinkan Anda memberi nama terhadap blok statemen, yang memungkinkan Anda menjalankan blok tersebut di program Anda kapan saja berkali-kali dengan memanggil namanya. Ini dinamakan pemanggilanterhadap fungsi. Kita sudah pernah menggunakan beberapa fungsi yang sudah tertanam secara baku seperti len dan range.

Konsep tentang fungsi ini mungkin merupakan struktur pembangun perangkat lunak yang paling penting (dalam bahasa pemrograman apapun), dan dalam bab ini kita akan mengeksplorasi bermacam aspek dari fungsi.

Fungsi ditentukan dengan menggunakan kata kunci def. Setelah kata kunci, dilanjutkan dengan nama penanda dari fungsi tersebut, diikuti pasangan dalam kurung yang di dalamnya ada nama variabel. Setelah tanda kurung, akan ditutup dengan titik dua di akhir baris. Kemudian di baris baru akan diikuti blok statemen yang merupakan bagian dari fungsi tersebut. Contoh yang menunjukkan betapa sederhananya sebuah fungsi:

Contoh (simpan dengan nama fungsi1.py):

def apaKabar():
    print('Apa kabar dunia!') # blok ini milik fungsi apaKabar()
# Akhir fungsi

apaKabar() # memanggil fungsi
apaKabar() # memanggil fungsi sekali lagi

Keluaran:

$ python3 fungsi1.py
Apa kabar dunia!
Apa kabar dunia!

Bagaimana Cara Kerjanya

Kita mendefinisikan fungsi bernama apaKabar dengan menggunakan sintaks sebagaimana yang telah dijelaskan di atas. Fungsi ini tidak mengambil satu parameterpun, sehingga tidak perlu ada variabel yang dideklarasikan di dalam kurung. Parameter merupakan masukan yang hanya digunakan di dalam fungsi, sehingga kita dapat memasukkan nilai yang berbeda untuk memperoleh hasil yang diinginkan.

Perhatikan bahwa kita dapat memanggil fungsi dua kali, yang artinya kita tidak perlu menuliskan kode yang sama lagi untuk menginginkan keluaran sama.

Parameter Fungsi

Fungsi dapat menerima parameter. Parameter adalah nilai yang Anda masukkan ke dalam fungsi, sehingga fungsi dapat melakukan sesuatu terhadap nilai tersebut. Parameter ini seperti variabel, namun Anda harus mendefinisikan nilainya dulu sebelum dimasukkan ke dalam fungsi, dan sudah memiliki nilai ketika fungsi tersebut dijalankan.

Parameter ditentukan di dalam tanda kurung saat fungsi didefinisikan, dipisahkan dengan koma. Saat kita memanggil fungsinya, kita memasukkan nilai terhadap parameter tersebut dengan jumlah dan cara yang sama. Sebagai catatan terhadap terminologi yang digunakan – nama yang diberikan ke dalam definisi fungsi dinamakan parameter sedangkan nilai yang diberikan dalam pemanggilan fungsi disebut argumen.

Contoh (simpan dengan nama func_param.py):

def printMaks(a, b):
    if a > b:
        print(a, 'adalah angka tertinggi')
    elif a == b:
        print(a, 'adalah sama dengan', b)
    else:
        print(b, 'adalah angka tertinggi')

printMaks(3, 4) # langsung diberikan nilai terhadap parameter a dan b saat fungsi dipanggil

x = 5
y = 7

printMax(x, y) # memberi variabel sebagai argumen. Variabel ini harus didefinisikan dulu sebelumnya.

Keluaran:

$ python3 func_param.py
4 adalah angka tertinggi 
7 adalah angka tertinggi

Bagaimana Cara Kerjanya

Di sini, kita mendefinisikan fungsi dengan nama printMaks yang menggunakan dua parameter yang disebut a dan b. Kita mencari angka yang lebih besar dengan menggunakan statemen if..else sederhana, lalu mencetak angka yang lebih besar.

Saat pertama kali kita panggil fungsi printMaks, kita secara langsung memasukkan angka sebagai argumen. Dalam kasus kedua, kita memanggil fungsi dengan argumen berupa variabel. printMaks(x,y) membuat nilai argumen x dimasukkan dalam parameter a dan nilai argumen y dimasukkan dalam parameter b. Fungsi printMaks berfungsi sama saja di kedua kasus tersebut.

Variabel Lokal

Saat Anda mendeklarasikan variabel di dalam definisi fungsi, mereka tidak berhubungan dengan variabel lain dengan nama yang sama di luar fungsi – dengan kata lain nama variabel ini hanya berlaku secara lokal di dalam fungsi. Ini dinamakan skup (scope) dari variabel. Semua variabel memiliki blok skup saat dideklarasikan pertama kali.

Contoh (simpan dengan nama func_local.py):

x = 50

def func(x):
    print('x adalah', x)
    x = 2
    print('Mengganti nilai lokal x ke ', x)

func(x)
print('x masih tetap', x)

Keluaran:

$ python3 func_local.py
x adalah 50
Mengganti nilai lokal x ke 2
x masih tetap 50

Bagaimana Cara Kerjanya

Saat pertama kita mencetak nilai dari x di baris pertama badan fungsi, Python menggunakan nilai dari parameter yang dideklarasikan di blok utama, di atas definisi fungsi.

Lalu, kita memberikan nilai 2 kepada x. Jadi nama x hanya bernilai di lokal, di dalam fungsi. Saat kita mengganti nilai x yang berada di dalam fungsi, nilai x yang berada di blok utama tetap tidak terpengaruh.

Dengan pemanggilan fungsi print di baris terakhir, kita menampilkan nilai x yang berasal dari blok utama, sehingga hal ini dapat mengonfirmasi bahwa nilai tersebut benar-benar tidak terpengaruh oleh nilai lokal yang diganti dalam fungsi sebelumnya.

Menggunakan Statemen Global

Jika Anda ingin memberi nilai terhadap satu variabel yang didefinisikan di level tertinggi dalam satu program (atau dengan kata lain tidak berada di dalam skup apapun, baik fungsi maupun class), Anda harus memberitahu Python bahwa nama tersebut bukan local, tapi global. Kita melakukannya dengan statemen global. Tidak mungkin memberikan nilai di dalam variabel di luar fungsi tanpa statemen global.

Anda dapat menggunakan nilai dari variabel yang didefinisikan di luar fungsi (asumsikan bahwa tidak ada nama variabel yang sama di dalam fungsi). Bagaimanapun juga, ini sangat tidak disarankan dan Anda harus menghindarinya mengingat hal tersebut akan membingungkan pembaca program tentang di mana definisi variabelnya. Menggunakan statemen global membuatnya jelas bahwa variabel yang bersangkutan didefinisikan di luar blok.

Contoh (simpan dengan nama func_global.py):

x = 50

def func():
    global x

    print('x adalah ', x)
    x = 2
    print('Mengganti nilai global x ke', x)

func()
print('Nilai dari x adalah ', x)

Keluaran:

$ python3 func_global.py
x adalah 50
Mengganti nilai global x ke 2
Nilai dari x adalah 2

Bagaimana Cara Kerjanya

Statemen global digunakan untuk mendeklarasikan x – membuatnya menjadi variabel global – sehingga, saat kita mengganti nilai x di dalam fungsi, perubahan tersebut akan berlaku juga pada saat kita menggunakan nilai x di blok utama.

Anda dapat menentukan lebih dari satu variabel global, dengan menggunakan statemen global yang sama, misalnya global x, y, z.

Nilai Argumen Baku

Untuk beberapa fungsi, Anda mungkin ingin membuat beberapa parameter tidak wajib diisi, dan menggunakan nilai baku pada saat pengguna tidak ingin memberikan nilai terhadapnya. Ini dapat dilakukan dengan bantuan nilai argumen baku. Anda dapat menentukan nilai arguman baku untuk parameter yang diberikan, dengan menambahkan nilai baku lewat operator sama dengan (=).

Catat bahwa nilai argumen baku haruslah berupa konstanta. Lebih tepatnya, nilai argumen baku harus bersifat immutable – ini akan dijelaskan di bab berikutnya. Untuk sekarang Anda hanya perlu mengingatnya.

Contoh (simpan dengan nama func_default.py):

def katakan(pesan, kali = 1):
    print(pesan * kali)

katakan('Apakabar')
katakan('Dunia', 5)

Keluaran:

$ python3 func_default.py
Apakabar
DuniaDuniaDuniaDuniaDunia

Bagaimana Cara Kerjanya

Fungsi yang bernama katakan digunakan untuk menampilkan string sebanyak yang ditentukan. Jika pengalinya tidak ditentukan, maka secara baku, string akan ditampilkan sebanyak sekali. Kita dapat melakukan ini dengan menentukan nilai argumen baku ke 1 untuk parameter kali.

Jika dalam penggunaan katakan pertama, kita hanya mengisi string dan menampilkannya sekali, maka dalam penggunaan katakan kedua, kita mengisikan string dan sebuah arguman 5 yang menyatakan bahwa kita ingin mengatakan string tersebut sebanyak 5 kali.Penting

Hanya parameter yang berada di akhir daftar parameter yang dapat diberikan nilai argumen baku, dengan kata lain Anda tidak boleh menentukan nilai argumen baku di depan parameter yang tidak memiliki nilai argumen baku.

Ini karena nilai disematkan ke dalam parameter berdasarkan posisi. Sebagai contoh, def fun(a, b=5) dianggap valid, sedangkan def func(a=5, b) tidak valid.

Argumen Kata Kunci

Jika Anda memiliki fungsi dengan banyak parameter dan Anda hanya ingin menentukan beberapa saja, Anda dapat memberikan nilai terhadap parameter, dengan memberikan nama terhadapnya – ini disebut sebagai argumen kata kunci – kita gunakan kata kunci daripada posisi (yang selalu kita gunakan selama ini) untuk menentukan argumen terhadap fungsi.

Ada dua keuntungan – satu, menggunakan fungsi akan lebih mudah sebab kita tidak perlu khawatir terhadap urutan argumen. Kedua, kita dapat memberikan nilai hanya terhadap parameter yang kita inginkan, sebab parameter lain telah memiliki nilai baku.

Contoh (simpan dengan nama func_key.py):

def func(a, b=5, c=10):
    print('a adalah ', a, ' dan b adalah ', b, ' dan c adalah ', c)

func(3, 7)
func(25, c=24)
func(c=50, a=100)

Keluaran:

$ python3 func_key.py
a adalah 3 dan b adalah 7 dan c adalah 10
a adalah 25 dan b adalah 5 dan c adalah 24
a adalah 100 dan b adalah 5 dan c adalah 50

Bagaimana Cara Kerjanya

Fungsi tersebut bernama func dan hanya punya satu parameter tanpa nilai argumen baku, diikuti oleh dua parameter dengan nilai argumen baku.

Pada penggunaan pertama, func(3, 7), parameter a memperoleh nilai 3, parameter b memeperoleh nilai 7 dan c memperoleh nilai baku 10.

Pada penggunaan kedua, func(25, c=24), parameter a memperoleh nilai 25 mengingat posisinya di dalam argumen. Kemudian parameter c memperoleh nilai 24 berkaitan dengan penamaan argumen kata kunci. Variabel b akan memperoleh nilai baku 5.

Dalam penggunaan ketiga func(c=50, a=100), kita menggunakan argumen untuk seluruh nilai yang ditentukan. Perhatikan bahwa kita menentukan nilai untuk parameter c sebelum a didefinisikan.

Parameter VarArgs

Kadang Anda ingin mendefinisikan fungsi yang dapat mengambil parameter dalam jumlah berapapun, ini dapat dilakukan dengan menggunakan tanda bintang (simpan dengan nama total.py):

def total(awal=5, *angkas, **kuncis):
    hitung = awal
    for angka in angkas:
        hitung += angka
    for kunci in kuncis:
        hitung += kuncis[kunci]
    return hitung

print(total(10, 1, 2, 3, sayur=50, buah=100))

Keluaran:

$ python3 total.py
166

Bagaimana Cara Kerjanya

Ketika kita mendefinisikan parameter bintang seperti *param, maka seluruh argumen setelahnya akan dikumpulkan ke dalam tuple yang disebut param.

Mirip dengan itu, ketika kita mendeklarasikan parameter dua-bintang seperti **param, maka semua argumen dengan kata kunci akan dikumpulkan ke dalam dictionary yang disebut param.

Kita akan eksplorasi tentang tuples dan dictionaries di bab berikutnya.

Parameter Hanya-Kata-kunci

Jika kita ingin menentukan parameter kata kunci tertentu, tersedia dalam bentuk hanya kata kunci (keyword-only) dan bukan argumen yang bersifat posisional, hal tersebut dapat dideklarasikan setelah parameter berbintang (simpan dengan nama keyword_only.py):

def total(awal=5, *angkas, angka_tambahan):
    hitung = awal
    for angka in angkas:
        hitung += angka
    hitung += angka_tambahan
    print(hitung)

total(10, 1, 2, 3, angka_tambahan=50)
total(10, 1, 2, 3)
# Akan menampilkan pesan kesalahan, karena kita tidak memberikan argumen baku untuk nilai `angka_tambahan`

Keluaran:

$ python3 keyword_only.py
66
Traceback (most recent call last):
  File "keyword_only.py", line 12, in <module>
total(10, 1, 2, 3)
TypeError: total() needs keyword-only argument extra_number

Bagaimana Cara Kerjanya

Mendeklarasikan parameter setelah parameter bintang akan menghasilkan argumen hanya-kata-kunci (hanya berupa kata kunci). Jika argumen ini tidak diberi nilai, maka pemanggilan fungsi akan menghasilkan pesan error sebagaimana terlihat di atas.

Catat bahwa penggunaan += merupakan jalan pintas. Jadi untuk mengatakan x = x + y, Anda dapat menuliskan x += y.

Jika Anda ingin memiliki argumen hanya-kata-kunci, tapi tidak ingin menentukan nilai baku, cukup menggunakan bintang tanpa nama. contoh def total(nilai_awal=5, *, nomor_tambahan).

Statemen return

Statemen return digunakan untuk mengembalikan nilai dari sebuah fungsi, juga merupakan pemotong/akhir dari sebuah fungsi. Nilai return juga dapat digunakan untuk mengembalikan nilai dari sebuah fungsi.

Contoh (simpan dengan nama func_return.py):

def maximum(x, y):
    if x > y:
        return x
    elif x == y:
        return 'Nilai angkanya sama'
    else:
        return y

print(maximum(2, 3))

Keluaran:

$ python3 func_return.py
3

Bagaimana Cara Kerjanya

Fungsi maximum mengembalikan angka tertinggi dari seluruh parameter yang diberikan, dalam hal ini seluruh angka yang dimasukkan ke dalam fungsi tersebut. Fungsi ini menggunakan statemen if..else yang sederhana untuk mencari nilai lebih besar dari seluruh nilai, lalu mengembalikan hasilnya.

Catat bahwa statemen return tanpa nilai sama dengan return NoneNone adalah jenis yang sangat khusus di Python yang mewakili kosong. Sebagai contoh, None digunakan untuk mengindikasikan bahwa sebuah variabel tidak memiliki nilai, jika nilai yang dimilikinya None.

Setiap fungsi secara implisit memiliki return None meskipun Anda tidak menuliskannya. Kecuali Anda mendefinisikan sendiri nilai dari statemen return. Anda dapat melihat ini dengan menjalankan print(sebuahFungsi()) dimana sebuahFungsi tersebut tidak memiliki statemen return, seperti:

def sebuahFungsi():
    pass

Statemen pass digunakan di Python untuk mengindikasikan blok statemen yang kosong.Catatan

Ada fungsi tertanam yang bernama max yang sudah mengimplementasikan fungsi ‘find maximum’, jadi gunakan fungsi tertanam sebisa mungkin.

DocStrings

Python memiliki fungsi yang keren bernama documentation strings, biasanya dirujuk dengan nama yang lebih pendek, yakni docstrings. DocStrings sangat penting dan Anda harus menggunakannya karena fungsi tersebut dapat mendokumentasikan program secara lebih baik dan lebih mudah untuk dipahami. Kerennya, kita bisa mengambil docstring dari sebuah fungsi, meskipun program tersebut masih berjalan!

Contoh (simpan dengan nama func_doc.py):

def printMax(x, y):
    '''Mencetak nilai tertinggi dari dua angka.

    Kedua angka yang diberikan harus berupa integer.'''
    x = int(x) # konversi ke integer, jika memungkinkan
    y = int(y)

    if x > y:
        print(x, ' adalah nilai paling tinggi')
    else:
        print(y, ' adalah nilai paling tinggi')

printMax(3, 5)
print(printMax.__doc__)

Output:

$ python3 func_doc.py
5 adalah nilai paling tinggi
Mencetak nilai maksimal dari dua angka.

        Kedua angka yang diberikan harus berupa integer.

Bagaimana cara kerjanya

String dari baris logis pertama dari sebuah fungsi adalah docstring dari fungsi tersebut. Catat bahwa DocStrings juga berlaku untuk Modules dan classes yang akan kita pelajari di bab berikutnya.

Konvensi yang harus diikuti untuk sebuah docstring, adalah bahwa dia string dengan baris lebih dari satu di mana kata pertama dimulai dengan huruf besar dan diakhiri dengan tanda titik. Kemudian baris kedua dikosongkan, diikuti dengan penjelasan detail di baris ketiga. Anda sangat disarankan untuk mengikuti aturan ini untuk semua docstring bagi semua fungsi rumit Anda.

Kita dapat mengakses docstring dari fungsi printMax dengan menggunakan atribut __doc__ (perhatikan dua garis bawah) yang merupakan milik dari fungsi tersebut. Ingat bahwa Python memperlakukan semuanya sebagai object, termasuk fungsi ini. Kita akan belajar tentang object di bab berikutnya di classes.

Jika Anda telah menggunakan help() di python, Anda sudah pernah melihat penggunaan docstring! Apa yang dilakukan oleh help() hanyalah mengambil atribut __doc__ dan menampilkannya dalam format yang bagus untuk Anda. Silakan Anda coba fungsi di atas – cukup masukkan help(printMax) di program Anda. Selalu ingat untuk menekan tombol d untuk keluar dari help.

Beberapa program bantu otomatis dapat mengambil dokumentasi dari program dengan cara ini. Sehingga, saya sangat menyarankan Anda untuk menggunakan docstrings untuk fungsi-fungsi rumit yang Anda tulis. Perintah pydoc yang tersedia di distribusi Python Anda, cara kerjanya mirip help()menggunakan docstrings.

Selanjutnya kita belajar tentang Modul Python.

Kategori
Python

Alur Kontrol

Di dalam program yang kita lihat hingga saat ini, selalu saja ada beberapa urutan statemen yang dijalankan secara saklak oleh Python, berurutan dari atas ke bawah. Bagaimana jika Anda ingin mengubah alur kerjanya? Di sinilah kita belajar alur kontrol.

Sebagai contoh Anda ingin program untuk mengambil keputusan dan bertindak secara berbeda tergantung keputusan yang diambil. Sebagai contoh, misalnya mencetak ‘Selamat Pagi’ atau ‘Selamat Sore’ tergantung waktu yang ada saat itu?

Sebagaimana yang Anda bisa tebak, ini dapat dilakukan lewat statemen alur kontrol. Ini yang perlu Anda kuasai setelah belajar operator dan ekspresi. Ada tiga macam statemen alur kontrol di Python – iffor dan while.

Statemen if

Alur kontrol statemen if digunakan untuk mengecek kondisi: jika kondisi if bernilai benar, maka kita akan menjalankan satu blok statemen (disebut if-block), selain itu diteruskan dengan statemen else kita gunakan untuk memproses blok statemen yang lain (dinamakan else-block). Klausul else tersebut sifatnya tidak wajib.

Contoh (simpan dengan nama if.py):

angka = 23
tebakan = int(input('Masukkan sebuah angka : '))

if tebakan == angka:
    print('Selamat Anda telah menebaknya') # Blok baru mulai di sini
    print('(Tapi tidak ada satu hadiahpun untuk Anda!)') # Blok baru berakhir di sini
elif tebakan < angka:
    print('Tidak, angkanya sedikit lebih besar lagi') # Blok lainnya 
    # Anda dapat melakukan apapun di blok ini ...
else:
    print('Tidak, angkanya lebih kecil lagi')
    # Pesan ini keluar jika Anda menebak angka yang lebih besar

print('Selesai')
# Statemen terakhir ini selalu dieksekusi, setelah statemen if tersebut dijalankan.

Keluaran:

$ python3 if.py
Masukkan sebuah angka : 50
Tidak, angkanya lebih kecil lagi 
Selesai

$ python3 if.py
Masukkan sebuah angka : 22 
Tidak, angkanya sedikit lebih besar lagi 
Selesai

$ python3 if.py
Masukkan sebuah angka : 23
Selamat, Anda telah menbaknya
(Tapi tidak ada satu hadiahpun untuk Anda!)
Selesai

Bagaimana Cara Kerjanya

Dalam program ini, kita menebak dari pengguna dan mengeceknya dengan nomor yang kita punya. Di awal, kita sudah mengeset variabel angka ke dalam nilai integer yang kita inginkan, misalnya 23. Lalu, kita gunakan tebakan dari pengguna lewat fungsi input(). Fungsi adalah bagian dari program yang dapat digunakan kembali. Kita akan membaca tentang hal ini di bagian berikutnya.

Kita memasukkan sebuah string ke dalam fungsi built-in bernama input yang akan mencetak di layar sesuai dengan masukan yang diketikkan oleh pengguna di layar. Sekali dimasukkan, dan pengguna menekan tombol enter, maka fungsi input() akan mengembalikan apapun yang dimasukkan oleh pengguna, sebagai sebuah string. Lalu kita mengkonversi string ini ke dalam integer dengan menggunakan int lalu menyimpannya ke dalam variabel bernama tebakan. Sebetulnya, int merupakan class, tapi yang Anda perlu tahu saat ini adalah Anda dapat menggunakannya untuk mengonversi sebuah string ke dalam integer (asumsikan string tersebut berisi integer yang valid di dalamnya).

Berikutnya, kita bandingkan tebakan dari pengguna dengan nomor yang telah kita tentukan sebelumnya. Jika mereka bernilai sama, kita tampilkan pesan berhasil. Perhatikan bahwa kita menggunakan level indentasi untuk memberitahu Python, statemen mana ikut ke dalam blok mana. Inilah mengapa indentasi sangat penting di Python. Saya harap Anda menggunakan aturan “indentasi yang konsisten”. Betul kan?

Pengingat

Perhatikan bahwa dalam alur kontrol ini, jika statemen if berisi titik koma di akhir kalimat 0 kita mengindikasikan kepada Python bahwa blok statemen tersebut akan mengikuti.

Lalu kita cek lagi, apakah tebakan tersebut lebih kecil atau lebih besar dari angka yang kita tentukan, dan jika memang demikian kasusnya, kita informasikan kepada pengguna bahwa mereka harus menebak angka yang lebih tinggi daripada itu. Apa yang kita gunakan di sini adalah klausul elif yang sebenarnya bertugas untuk membandingkan dua statemen if else-if else yang berhubungan satu sama lain. Ini akan membuat program lebih mudah, dan mengurangi jumlah indentasi yang dibutuhkan.

Statemen elif dan else juga harus punya titik koma di akhir baris logis diikuti oleh blok statemen terkait (dengan indentasi yang benar tentu saja)

Anda dapat menambahkan statemen if yang lain di dalam blok statemen if dan seterusnya – ini dinamakan statemen if tergabung (nested).

Ingat bahwa bagian elif dan else sifatnya tidak wajib. Statemen if yang valid, minimal:

if True:
    print('Yak, itu benar')

Setelah Python menyelesaikan eksekusi dan melengkapi statemen if termasuk klausul elif dan else terkait, maka statemen berikutnya adalah print('Selesai'). Setelah ini, Python akan melihat bahwa program sudah selesai dan berhenti.

Meskipun program ini sangat sederhana, Saya telah menunjukkan banyak hal yang harus Anda perhatikan. Semua ini sangat langsung (dan sangat mudah jika Anda memiliki latar belakang C/C++). Anda hanya perlu menyadari ini di depan, dan setelah praktik beberapa kali Anda akan merasa nyaman dengan itu, sehingga terasa ‘natural’ untuk Anda.Catatan untuk programer C/C++

Tidak ada statemen switch di Python. Anda dapat menggunakan if..elif..else untuk melakukan hal yang sama (dalam beberapa kasus dapat menggunakan dictionary untuk mengerjakannya dengan cepat)

Statemen While

Alur kontrol statemen while memungkinkan Anda untuk mengeksekusi blok statemen berkali kali sepanjang kondisinya true. Statemen while adalah sebuah contoh terhadap apa yang dinamakan statemen looping. Statemen while dapat memiliki klausul opsional else.

Contoh (simpan dengan namawhile.py):

angka = 23
jalankan = True

while lari:
    tebak = int(input('Masukkan sebuah angka: '))
    if tebak == angka:
        print('Selamat, Anda telah menebaknya.')
        jalankan = False # ini akan menyebabkan loop while-nya berhenti
    elif tebak < angka:
        print('Tidak, sedikit lebih besar dari itu.')
    else:
        print('Tidak, sedikit lebih kecil dari itu.')
else:
    print('Loop while-nya telah selesai.')
    # Kerjakan hal lain yang Anda inginkan di sini.

print('Selesai')

Output:

$ python3 while.py
Masukkan sebuah angka: 50
Tidak, sedikit lebih kecil dari itu.
Masukkan sebuah angka: 22
Tidak, sedikit lebih besar dari itu.
Masukkan sebuah angka: 23
Selamat, Anda telah menebaknya.
Loop while-nya telah selesai.
Selesai

Bagaimana Cara Kerjanya

Dalam program ini, kita masih bermain dengan program tebakan, tapi dibanding yang sebelumnya, dalam program ini pengguna dapat terus menebak hingga dia menebak secara benar – pengulangan program pada setiap tebakan tidak dibutuhkan, sebagaimana yang sudah kita kerjakan pada bagian sebelumnya. Ini secara jelas mendemonstrasikan bagaimana statemen while bekerja.

Kita pindahkan statemen input dan if ke dalam putaran while dan kita tentukan variabel bernama jalankan dengan nilai True sebelum putaran while di mulai. Pertama jalan, kita cek dulu apakah vaiabel jalankan bernilai True lalu lanjut mengeksekusi while-block terkait. Setelah blok ini dieksekusi, program akan mengecek kembali apakah nilai variabel jalankan. Jika nilainya masih True, maka while-block akan dieksekusi kembali, begitu seterusnya.

Blok else akan dieksekusi ketika kondisi putaran while menemukan nilai False – bahkan ini bisa juga terjadi pada putaran pertama. Jika ada klausul else dalam putaran while, klausul tersebut akan selalu dieksekusi kecuali Anda menghentikannya dengan statemen break.

Nilai True dan False dianggap sebagai tipe Boolean, dan Anda dapat menganggapnya memiliki nilai 1 untuk True dan 0 untuk False.Catatan untuk Programmer C/C++

Selalu ingat bahwa Anda dapat menyisipkan klausul else dalam putaran while

alur kontrol

Putaran For

Ada lagi statemen putaran yang mengulang urutan objek seperti menjalankan tiap item dalam urutan (sequence). Statemen ini disebut for..in. Kita akan lihat tentang urutan di bab berikutnya secara detail. Apa yang pelru Anda ketahui sekarang bahwa urutan/sequence hanyalah kumpulan item berurut.

Contoh (simpan dengan nama for.py):

for i in range(1, 5):
    print(i)
else:
    print('Putaran telah selesai')

Keluaran:

$ python3 for.py
1
2
3
4
Putaran telah selesai

Bagaimana Cara Kerjanya

Dalam program ini, kita akan menampilkan urutan angka. Kita akan menghasilkan urutan angka ini dalam fungsi built-in dengan nama range.

Apa yang akan kita lakukan di sini adalah memberikan dua angka dan range akan mengembalikan urutan mulai dari angka yang paling kecil hingga angka yang paling besar. Sebagai contoh, range(1,5) akan memberikan urutan [1, 2, 3, 4]. Secara baku, range memulai langkah dalam hitungan 1. Jika kita memberikan angka ketiga ke dalam range, maka angka tersebut akan menjadi hitungan langkah. Contohnya, range(1,5,2) akan memberikan urutan [1,3]. Ingat bahwa range hanya memperluas hingga angka kedua, dengan kata lain tidak memasukkan angka kedua.

Sebagai catatan, range() menghasilkan urutan angka, tapi hanya satu angka dalam satu waktu, ketika menjalankan permintaan for loop dalam item berikutnya. Jika Anda ingin melihat urutan angka secara penuh dengan cepat, gunakan list(range()). Lists dijelaskan di bagian tentang struktur data.

for loop akan melakukan iterasi dalam range ini – for i in range(1,5) adalah sama dengan for i in [1, 2, 3, 4] yang akan menugaskan setiap angka (atau objek) di dalam urutan ke dalam variabel i, sekali dalam satu waktu, dan mengeksekusi statemn blok dari tiap nilai i. Dalam kasus ini kita akan mencetak statemen blok.

Pengingat

Ingat bahwa bagian else sifatnya tidak wajib. Jika dimasukkan, bagian tersebut hanya akan dijalankan setelah putaran for selesai, kecuali ketemu statemen break.

Ingat bahwa putaran for..in bisa berjalan di urutan appaun. Di sini, kita memiliki daftar angka yang dihasilkan oleh fungsi range secara built-in, namun secara umum kita dapat menggunakan segala macam urutan dari berbagai jenis objek! Kita akan mengeksplorasi ide ini secara detail di bab berikutnya.Catatan untuk Programmer /C++/Java/C#

Putaran for di Python secara radikal berbeda dengan putaran for di C/C++. Programmer C# akan mencatat bahwa putaran for di dalam Python mirip dengan putaran foreach di C#. Sedangkan programmer Java bisa mencatat bahwa hal ini sama dengan for (int i : IntArray) di JAva 1.5.

Di C/C++, jika Anda ingin menulis for (int i = 0; i &lt; 5; i++), maka di Python cukup tuliskan for i in range(0,5). Sebagaimana yang Anda lihat, putaran for di Python lebih sederhana, lebih ekspresif dan lebih kecil kemungkinan salahnya.

Statemen break

Statemen break digunakan untuk menghentikan statemen dalam sebuah loop (putaran), dengan kata lain akan menghentikan eksekusi dari statemen yang berputar, meskipun kondisinya tidak bernilai False atau item urutannya belum dijalankan secara keseluruhan.

Sebagai catatan yang cukup penting, jika Anda menghentikan putaran for atau while, setiap blok else yang terkait tidak akan dieksekusi.

Contoh (simpan dengan nama break.py):

while True:
    s = input('Masukkan sesuatu: ')
    if s == 'berhenti':
        break
    print('Panjang hurufnya adalah ', len(s))
print('Selesai')

Keluaran:

$ python3 break.py
Masukkan sesuatu:  Programming sangat menyenangkan
Panjang hurufnya adalah  31
Masukkan sesuatu:  Saat pekerjaan selesai
Panjang hurufnya adalah  22
Masukkan sesuatu:  jika Anda ingin pekerjaan Anda menyenangkan:
Panjang hurufnya adalah  44
Masukkan sesuatu:  gunakan Python!
Panjang hurufnya adalah  15
Masukkan sesuatu:  berhenti
Selesai

Bagaimana Cara Kerjanya

Dalam program ini, kita berulangkali minta masukan dari pengguna, dan menampilkan jumlah panjang seluruh input yang dimasukkan. Kita memberikan kondisi khusus untuk menghentikan program dengan mengecek apakah masukan dari pengguna adalah 'berhenti'. Kita menghentikan program dengan berhenti dari putaran (loop) dan menuju akhir dari program.

Panjang dari string yang dimasukkan dapat dicari dengan menggunakan fungsi built-in bernama len

Ingat bahwa statemen break dapat digunakan dalam putaran for juga.

Puisi Python dari Swaroop

Input yang saya gunakan di sini adalah puisi mini yang saya tulis dengan nama Puisi Python Swaroop:

Programming sangat menyenangkan
Saat pekerjaan selesai
jika Anda ingin pekerjaan Anda menyenangkan:
    gunakan Python!

Statemen Continue (Lanjutkan)

Statemen continue digunakan untuk memberitahu Python agar mengabaikan statemn yang tersisa dari blok putaran yang ada saat ini, dan melanjutkan blok putaran berikutnya.

Contoh (simpan dengan nama continue.py):

while True:
    s = input('Masukkan sesuatu: ')
    if s == 'berhenti':
        break
    if len(s) < 3:
        print('Terlalu kecil')
        continue
    print('Nilai yang Anda masukkan memiliki panjang yang cukup')
    # Lakukan pemrosesan lainnya di sini...

Output:

$ python3 continue.py
Masukkan sesuatu:  a
Terlalu kecil
Masukkan sesuatu:  12
Terlalu kecil
Masukkan sesuatu:  abc
Nilai yang Anda masukkan memiliki panjang yang cukup
Masukkan sesuatu:  quit

Bagaimana Cara Kerjanya

Dalam program ini, kita menerima masukan dari pengguna, tapi kita hanya memproses masukan tersebut jika panjangnya lebih besar daripada 3. Jadi, kita menggunakan fungsi built-in len untuk memperoleh panjang masukan, dan jika panjangnya kurang dari 3, kita mengabaikan statemen berikutnya di blok yang sama dengan statemen continue. Dan selanjutnya, statemen yang tersisa dalam putaran tersebut akan dieksekusi, apapun pemrosesan yang kita inginkan di sini.

Catat bahwa statemen continue juga bisa jalan untuk putaran for.

Ringkasan Alur Kontrol

Kita telah melihat bagaimana menggunakan tiga statemen alur kontrol – ifwhile dan for lengkap dengan statemen terkait yakni break dan continue. Ini merupakan bagian yang paling sering digunakan di Python, sehingga membuat kita terbiasa dengan statemen tersebut sangatlah penting dan mendasar.

Berikutnya, kita akan melihat bagaimana membuat dan menggunakan fungsi.