Tutorial Break, Continue, Else setelah For/While di Python


Pernyataan break menghentikan perulangan kemudian keluar, dilanjutkan dengan mengeksekusi pernyataan (statement) setelah blok perulangan. 

Salah satu penggunaannya yang paling sering adalah sebuah kondisi eksternal yang membutuhkan program untuk keluar dari perulangan. Jika Anda memiliki perulangan bertingkat, 
break akan menghentikan perulangan sesuai dengan tingkatan atau di perulangan mana ia berada. Namun jika ia diletakkan di perulangan dengan kedalaman kedua misalnya, hanya perulangan itu saja yang berhenti, tidak dengan perulangan utama.
Contoh 1:

  1. for letter in 'Python':     # First Example

  2.     if letter == 'h':

  3.         break

  4.     print('Current letter: {}'.format(letter))


Output contoh 1:
Current Letter : P
Current Letter : y
Current Letter : t
Contoh 2:

  1. var = 10 # Second Example

  2. while var > 0:

  3. print('Current variable value: {}'.format(var))

  4. var = var - 1

  5. if var == 5:

  6. break



Output contoh 2:
Current variable value : 10
Current variable value : 9
Current variable value : 8
Current variable value : 7
Current variable value : 6


Continue

Pernyataan continue akan membuat iterasi saat ini berhenti, kemudian melanjutkan ke iterasi berikutnya, mengabaikan pernyataan (statement) yang berada antara continue hingga akhir blok perulangan.
Contoh 1:

  1. for letter in 'Python':     # First Example

  2.     if letter == 'h':

  3.         continue

  4.     print('Current letter: {}'.format(letter))


Output contoh 1:
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : o ##perhatikan huruf h dilewati
Current Letter : n
Contoh 2:

  1. for a in [0, 1, -1, 2, -2, 3, -3]: #Second Example

  2.     if a <= 0:

  3.         continue

  4.     print('Elemen positif: {}'.format(a))


Output contoh 2:
Elemen positif: 1
Elemen positif: 2
Elemen positif: 3
Contoh 3:

  1. var = 10 # Third Example

  2. while var > 0:             

  3.     var = var -1

  4.     if var == 5:

  5.         continue

  6. print('Current variable value: {}'.format(var))


Output contoh 3
Current variable value: 9 
Current variable value: 8 
Current variable value: 7 
Current variable value: 6 
Current variable value: 4 
Current variable value: 3 
Current variable value: 2 
Current variable value: 1 
Current variable value: 0

Else setelah For

Pada Python juga dikenal fungsi else setelah for. Fungsinya diutamakan pada perulangan yang bersifat pencarian - untuk memberikan jalan keluar program saat pencarian tidak ditemukan.
Struktur umumnya adalah sebagai berikut:

  1. for item in container:

  2.     if search_something(item):

  3.         # Found it!

  4.         process(item)

  5.         break

  6. else:

  7.     # Didn't find anything..

  8.     not_found_in_container()


Anda mungkin melihat sesuatu yang menarik. Ada If dan Else, namun dalam tingkatan yang berbeda, apakah mereka terkait? Saat sebuah perulangan dijalankan, fungsi if akan dievaluasi. Saat ia pernah sekali saja benar, maka else tidak akan dieksekusi. Dengan kata lain, if yang berada dalam perulangan harus selalu salah untuk memicu blok statemen else dijalankan. Lebih singkat lagi, struktur pseudocode yang diikuti dalam membuat else pada perulangan adalah seperti berikut:

  1. if any(something_about(thing) for each thing in container):

  2.     do_something(that_thing)

  3. else:

  4.     no_such_thing()


Contoh penggunaan dari for-else dapat dilihat pada potongan kode berikut (jalankan di konsol sebelum melanjutkan ke bagian selanjutnya):

  1. for n in range(2, 10):

  2.     for x in range(2, n):

  3.         if n % x == 0:

  4.             print(n, 'equals', x, '*', n/x)

  5.             break


Potongan kode di atas melakukan pencarian faktor dari setiap bilangan antara 2 s/d 9. Namun demikian, pada saat bilangan n bernilai 2, 3, 5, 7, program tidak akan mencetak apapun. Ini karena bilangan-bilangan tersebut merupakan bilangan prima. Hal ini bisa diatasi dengan menambahkan keterangan else:

  1. for n in range(2, 10):

  2.     for x in range(2, n):

  3.         if n % x == 0:

  4.             print( n, 'equals', x, '*', n/x)

  5.             break

  6.     else:

  7.         # loop fell through without finding a factor

  8.         print(n, 'is a prime number')



Else setelah While

Berbeda dengan Else setelah For, pada statement while, blok statement else akan selalu dieksekusi saat kondisi pada while menjadi salah. Contoh mudahnya adalah sebagai berikut:

  1. n = 5

  2. while n > 0:

  3.     n = n - 1

  4.     if n == 2:

  5.         break

  6.     print(n)

  7. else:

  8.     print("Loop is finished")



Pass

Digunakan jika Anda menginginkan sebuah pernyataan atau blok pernyataan (statement), namun tidak melakukan apapun - melanjutkan eksekusi sesuai dengan seharusnya. Kontrol ini banyak digunakan saat Anda belum melakukan implementasi (dan mengisi pernyataan dengan seharusnya), serta membiarkan program tetap berjalan saat misalnya Anda mengalami kegagalan atau exception.
Pass statement adalah operasi bersifat Null (kosong), tidak ada yang terjadi saat ia dipanggil. Contohnya:

  1. for letter in 'Python':

  2.     if letter == 'h':

  3.         pass

  4.         print ("This is pass block")

  5.     print('Current letter: {}'.format(letter))


Output:
Current Letter : P
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n

  1. for letter in 'Python':

  2.     if letter.isupper():

  3.         pass  # will process later

  4.     else:

  5. print('Lower letter: {}'.format(letter))


Output:
Lower letter: y
Lower letter: t
Lower letter: h
Lower letter: o
Lower letter: n

Contoh untuk mengantisipasi exception/kegagalan fungsi, perhatikan contoh kode yang belum ditambahkan pass berikut:

  1. var1=""

  2. while(var1!="exit"):

  3.     var1=input("Please enter an integer (type exit to exit): ")

  4.     print(int(var1))


Output:
Please enter an integer (type exit to exit): 1
1
Please enter an integer (type exit to exit): a
Traceback (most recent call last):
File "testp3.py", line 7, in <module>
print(int(var1))
ValueError: invalid literal for int() with base 10: 'a'
Kita dapat membaca bahwa program gagal saat mencoba proses konversi variabel var1. Saat program mengalami kegagalan atau exception, ia akan langsung keluar. Bandingkan dengan pendekatan berikut (mengenai exception, import/library sys, dan try/except akan dibahas pada modul-modul pembelajaran berikutnya:

  1. import sys

  2. data=''

  3. while(data!='exit'):

  4.     try:

  5.         data=input('Please enter an integer (type exit to exit): ')

  6.         print('got integer: {}'.format(int(data)))

  7.     except:

  8.         if data == 'exit':

  9.             pass  # exit gracefully without prompt any error

  10.         else:

  11.             print('error: {}'.format(sys.exc_info()[0]))


Outputnya saat dijalankan:
Please enter an integer (type exit to exit): 1
got integer: 1
Please enter an integer (type exit to exit): a
Unexpected error: <class 'ValueError'>
Please enter an integer (type exit to exit): b
Unexpected error: <class 'ValueError'>
Please enter an integer (type exit to exit): c
Unexpected error: <class 'ValueError'>
Please enter an integer (type exit to exit): exit
Pada pendekatan kedua, program akan memberitahu kegagalan yang terjadi sesuai dengan yang kita tuliskan pada baris berwarna kuning, namun tetap terus berjalan, dalam hal ini hingga dituliskan exit. Anda dapat melakukan antisipasi apapun sebelum menulis pass (misalnya memasukkan informasi terkait error ke log, memberi notifikasi ke admin, dan sebagainya).

List Comprehension (membuat list dengan inline loop dan if)

Ada kalanya Anda perlu untuk membuat sebuah list baru dari dengan sebuah operasi dari list sebelumnya. Misalnya membuat nilai kuadrat dari semua item dalam list:

  1. #Cara 1

  2. numbers = [1, 2, 3, 4]

  3. squares = []

  4. for n in numbers:

  5.   squares.append(n**2)

  6. print(squares)


Cara yang umum digunakan adalah cara di atas, yakni melakukan perulangan sejumlah item pada list numbers, kemudian membuat list baru (squares) dan menambahkan hasil operasinya dalam list baru (squares). Bandingkan dengan cara berikut:

  1. #Cara 2 List Comprehension

  2. numbers = [1, 2, 3, 4]

  3. squares = [n**2 for n in numbers]

  4. print(squares)


Cobalah kedua contoh di atas. Hasilnya sama bukan?
Output:
[1, 4, 9, 16]

List comprehension adalah salah satu cara untuk menghasilkan list baru berdasarkan list atau iterables yang telah ada sebelumnya. Sintaksis dasarnya adalah sebagai berikut:

  1. new_list = [expression for_loop_one_or_more conditions]


Contoh kedua di atas dapat diartikan sebagai: untuk setiap anggota numbers, buatlah nilai kuadratnya. List comprehension dapat digunakan lebih lanjut, misalnya:

  1. #Contoh3 menemukan bilangan yang ada di kedua list

  2. list_a = [1, 2, 3, 4]

  3. list_b = [2, 3, 4, 5]

  4. common_num = []

  5. for a in list_a:

  6.   for b in list_b:

  7.     if a == b:

  8.       common_num.append(a)

  9.      

  10. print(common_num)  # Output [2, 3, 4]


Bandingkan dengan:

  1. #Contoh4 Implementasi dengan list comprehension

  2. list_a = [1, 2, 3, 4]

  3. list_b = [2, 3, 4, 5]

  4. common_num = [a for a in list_a for b in list_b if a == b]

  5. print(common_num) # Output: [2, 3, 4]


Sangat memudahkan bukan? Dari 5 baris cukup disingkat menjadi 1 baris saja. Contoh penggunaan yang lain dapat dilihat pada contoh 5 berikut:

  1. # Contoh 5 kecilkan semua huruf

  2. list_a = ["Hello", "World", "In", "Python"]

  3. small_list_a = [_.lower() for _ in list_a]

  4. print(small_list_a) # Output: ['hello', 'world', 'in', 'python']


Anda tidak perlu bingung saat melihat kode di Internet yang menuliskan seperti contoh di atas, karena garis bawah (underscore) termasuk penamaan variabel yang valid.
Banyak hal yang mungkin dilakukan dengan list comprehension. Coba perkirakan apa yang akan dimunculkan oleh potongan kode berikut dan pilih jawaban yang tepat pada kuis di bagian berikutnya:

  1. list_a = range(1, 10, 2)

  2. x = [[a**2, a**3] for a in list_a]

  3. print(x)


Posting Komentar

0 Komentar