Daftar Isi

Topik sebelum

Operator dan Ekspresi

Topik berikutnya

Fungsi (Function)

Halaman Ini

Alur Kontrol

Di dalam program yang kita lihat hingga saat ini, selalu saja urutan statemen yang dijalankan oleh Python berurutan dari atas ke bawah. Bagaimana jika Anda ingin mengubah alur kerjanya? Sebagai contoh Anda ingin program untuk mengambil keputusan dan bertindak secara berbeda tergantung pada kondisi yang ada. Sebagai contoh, misalnya mencetak ‘Selamat Pagi’ atau ‘Selamat Sore’ tergantung waktu yang ada saat itu?

Hal ini dapat dilakukan lewat statemen alur kontrol. Ada tiga macam statemen alur kontrol di Python - if, for dan while.

Statemen If

Statemen if digunakan untuk mengecek kondisi: jika kondisi if bernilai benar, maka kita akan menjalankan satu blok statemen (disebut if-block), jika tidak akan diteruskan dengan statemen else kita gunakan untuk memproses blok statemen yang lain (dinamakan else-block). Bagian else tersebut sifatnya tidak wajib atau opsional.

Kita dapat menambahkan kondisi dalam else-block mengunakan elif.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# lat9.py

nomor_acak = 7
print 'tebak nomor acak dari 1 - 10'

# ``raw_input`` digunakan untuk mendapatkan input dari pengguna
# ``int`` digunakan untuk konversi tipe data ``str`` ke ``int``
tebakan = int(raw_input('Tebakan anda (bil bulat): '))

if tebakan == nomor_acak:
    print 'Selamat! tebakan anda benar'
    print 'tapi tidak ada hadiah untuk anda :('
elif tebakan < nomor_acak:
    print 'tebakan anda terlalu kecil'
else:
    print 'tebakan anda terlalu besar'

print 'selesai'

Catatan

Baris 11-12 adalah if-block, baris 14 adalah elif-block, dan baris 16 adalah else-block.

Bagaimana program ini bekerja?

Program ini akan meminta inputan tebakan dari pengguna berupa bilangan. Untuk mendapatkan inputan ini kita gunakan fungsi raw_input. Keluaran dari fungsi ini adalah string yang diinputkan oleh user, oleh karena itu kita harus melakukan konversi ke tipe data int. Untuk konversi ini kita gunakan fungsi int. Hasil dari inputan pengguna yang sudah dikonversi disimpan dalam variabel tebakan.

Sebelumnya program telah menentukan bilangan acak yang disimpan dalam variabel nomor_acak. Setelah mendapatkan input dari pengguna, program masuk kedalam alur kontrol if. Jika tebakan dan nomor acak sama maka tampilkan pesan berhasil, jika tebakan kurang dari nomor acak maka tampilkan pesan tebakan terlalu kecil, dan terakhir berarti tebakan terlalu besar.

Catatan

Cek modul random pada bab library standar untuk menghasilkan nomor acak.

Statemen While

Statemen while merupakan statemen untuk perulangan, block kode akan dijalankan terus menerus selama kondisi benar. Statemen while dapat mempunyai bagian else (opsional).

# lat10.py
# acak looping

nomor_acak = 77
berjalan = True

print 'tebak nomor acak dari 1 - 100'

while berjalan:
    tebakan = int(raw_input('Tebakan anda (bil bulat): '))

    if tebakan == nomor_acak:
        print 'Selamat! tebakan anda benar'
        print 'tapi tidak ada hadiah untuk anda :('
        berjalan = False
    elif tebakan < nomor_acak:
        print 'tebakan anda terlalu kecil'
    else:
        print 'tebakan anda terlalu besar'
else:
    print 'selesai'

Perulangan diatas berhenti jika berjalan (kondisi) bernilai False. True dan False merupakan obyek bertipe boolean, dan nilai True sama dengan nilai 1, nilai False sama dengan nilai 0.

>>> True == 1
True
>>> False == 0
True

Obyek dapat dinilai atau dikonversi ke nilai boolean

>>> bool('nama')
True
>>> bool('')
False
>>> bool(0)
False
>>> bool(-5)
True

Perulangan For (For Loop)

Statemen perulangan for ... in ... merupakan statemen perulangan selain while. Statemen ini melakukan iterasi dari rangkaian obyek, berjalan melalui tiap item yang ada pada rangkaian / sequence. Apa itu rangkaian / sequence? rangkaian yaitu koleksi item yang terurut.

# lat11.py

for i in range(1, 6):
    print i
else:
    print 'Perulangan sudah selesai'

Program ini akan mencetak rangkaian / sequence bilangan, dari 1 sampai 5. Kita membuat rangkaian bilangan ini menggunakan fungsi builtin range. Apa yang kita lakukan yaitu memanggil fungsi range dengan dua parameter, range akan mengembalikan rangkaian bilangan dari parameter pertama sampai batas parameter kedua (eksklusif). Sebagai contoh range(1, 6) menghasilkan rangkaian [1, 2, 3, 4, 5].

Jika kita memanggil range dengan parameter ketiga, yaitu parameter jumlah langkah. Contoh range(1, 6, 2) mengembalikan rangkaian [1, 3, 5].

Bagian else adalah opsional dan akan selalu dijalankan kecuali jika ada statemen break.

Statemen Break

Statemen break digunakan untuk keluar dari perulangan, misalnya keluar dari perulangan walaupun kondisi perulangan masih True atau rangkaian / sequence belum diiterasi seluruhnya.

# lat12.py

while True:
    data = raw_input('Masukkan sesuatu : ')
    if data == 'keluar':
        break
    print 'Inputan pengguna "%s"' % data
print 'Selesai'

Program ini akan terus meminta inputan pengguna dan akan berhenti ketika pengguna menginputkan keluar.

# lat13.py

for i in range(1, 11):
    print i
    if i == 5:
        break
else:
    print "Tidak dijalankan karena break"

Bagian else tidak akan dijalankan karena perulangan tidak berhenti secara normal.

Statemen Continue

Statemen continue digunakan untuk melewati statemen yang ada dalam blok perulangan dan continue / melanjutkan ke iterasi berikutnya.

# lat14.py

for i in range(1, 11):
    if i % 2 == 0:
        # skip bilangan genap
        continue
    print i