Tutorial Python untuk bukan pengatur cara/Gelung For
Dan ini satu lagi latihan menaip bagi bab ini:
onetoten = range(1, 11)
for count in onetoten:
print count
dan output yang sering dilihat:
1 2 3 4 5 6 7 8 9 10
Outputnya kelihatan sama tapi kod programnya kelihatan lain. Baris pertama menggunakan fungsi range
. Fungsi range
mengguna dua argumen seperti ini range(start, finish)
. Kata "start" ialah nombor pertama yang dijana. Kata "finish" pula lebih besar daripada nombor terakhir. Perhatikan bahawa program ini boleh dilakukan dengan cara yang lebih pendek:
for count in range(1, 11):
print count
Berikut beberapa contoh bagi menunjukkan apa yang berlaku dengan perintah range
:
>>> range(1, 10) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(-32, -20) [-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21] >>> range(5,21) [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] >>> range(5) [0, 1, 2, 3, 4] >>> range(21, 5) []
Baris berikut, for count in onetoten:
mengguna struktur kawalan for
. Struktur kawalan for
berupa begini: for variable in list:
(bagi pemboleh ubah dalam list:). list
dihurai bermula dengan unsur pertama list hingga yang terakhir. Semasa for
memeriksa setiap unsur dalam list, ia meletakkan setiap unsur tersebut ke dalam variable
atau pemboleh ubah. Ini membolehkan penggunaan variable
setiap kali gelung for
dilaksana. Ini satu lagi contoh (anda tidak perlu taip kod ini) bagi menunjukkan penggunaan ini:
demolist = ['hayat', 42, 'alam', 6, 'dan', 9, 'semua']
for item in demolist:
print "Item semasa ialah:",
print item
Outputnya ialah:
Item semasa ialah: hayat Item semasa ialah: 42 Item semasa ialah: alam Item semasa ialah: 6 Item semasa ialah: dan Item semasa ialah: 9 Item semasa ialah: semua
Perhatikan bagaimana gelung for
menghurai setiap item dan meletakkan setiap item kepada unsur yang terdapat dalam list. Perhatikan juga bahawa sekiranya anda tidak mahu print
berada di baris berikutnya, anda boleh tambah koma di penghujung kenyataan (iaitu, sekiranya anda mahu mencetak perkara lain pada baris itu). Jadi, apa gunanya for
? Penggunaan pertama ialah untuk menghurai setiap unsur sesebuah list dan melakukan sesuatu dengan unsur tersebut. Ini satu cara bagi menghitung kesemua unsur:
list = [2, 4, 6, 8]
jumlah = 0
for num in list:
jumlah = jumlah + num
print "Jumlah ialah:", jumlah
dengan outputnya:
Jumlah ialah: 20
Ataupun anda boleh menulis program untuk memastikan sama ada terdapat pendua dalam sebuah senarai, seperti yang dilakukan program ini:
list = [4, 5, 7, 8, 9, 1, 0, 7, 10]
list.sort()
sebelum = list[0]
del list[0]
for item in list:
if sebelum == item:
print "Pendua atau duplicate ", sebelum, "dijumpai"
sebelum = item
dan untuk mendapatkan kepastian:
Pendua atau duplicate 7 dijumpai
Okey, jadi bagaimana kod ini bekerja? Ini sebuah versi nyahpepijat bagi membantu anda memahami (anda tidak perlu menaipnya):
l = [4, 5, 7, 8, 9, 1, 0, 7, 10]
print "l = [4, 5, 7, 8, 9, 1, 0, 7, 10]", "\t\tl:", l
l.sort()
print "l.sort()", "\t\tl:", l
sebelum = l[0]
print "sebelum = l[0]", "\t\tsebelum:", sebelum
del l[0]
print "del l[0]", "\t\tl:", l
for item in l:
if sebelum == item:
print "Pendua atau duplicate ", sebelum, "dijumpai"
print "if sebelum == item:", "\t\tprev:", sebelum, "\titem:", item
sebelum = item
print "sebelum = item", "\t\tsebelum:", sebelum, "\titem:", item
Dengan output:
l = [4, 5, 7, 8, 9, 1, 0, 7, 10] l: [4, 5, 7, 8, 9, 1, 0, 7, 10] l.sort() l: [0, 1, 4, 5, 7, 7, 8, 9, 10] sebelum = l[0] sebelum: 0 del l[0] l: [1, 4, 5, 7, 7, 8, 9, 10] if sebelum == item: sebelum: 0 item: 1 sebelum = item sebelum: 1 item: 1 if sebelum == item: sebelum: 1 item: 4 sebelum = item sebelum: 4 item: 4 if sebelum == item: sebelum: 4 item: 5 sebelum = item sebelum: 5 item: 5 if sebelum == item: sebelum: 5 item: 7 sebelum = item sebelum: 7 item: 7 Pendua atau duplicate 7 dijumpai if sebelum == item: sebelum: 7 item: 7 sebelum = item sebelum: 7 item: 7 if sebelum == item: sebelum: 7 item: 8 sebelum = item sebelum: 8 item: 8 if sebelum == item: sebelum: 8 item: 9 sebelum = item sebelum: 9 item: 9 if sebelum == item: sebelum: 9 item: 10 sebelum = item sebelum: 10 item: 10
Saya memuatkan banyak kenyataan print
dalam kod agar anda dapat melihat apa yang berlaku pada setiap baris. (Oh ya, jika anda tidak faham kenapa program tidak berjalan dengan betul, anda boleh cuba memuatkan banyak kenyataan print
agar anda boleh lihat apa yang sedang berlaku). Mula-mula sekali program berjalan dengan menjana list. Kemudian program mengisih list. Ini dilakukan agar apa jua pendua akan diletakkan bersebelahan. Program kemudian mengasal pemboleh ubah sebelum
. Selepas itu unsur pertama list dihapus agar item pertama tidak disalah anggap sebagai sebuah pendua. Kemudian program memasuki gelung for
. Setiap item dalam list diperiksa untuk memastikan sama ada ia sama dengan item sebelumnya. Jika ya, ini bermakna sebuah pendua telah dijumpai. Nilai sebelum
kemudiannya diubah supaya sebelum
menjadi item sebelum kepada item semasa apabila gelung for
dilaksanakan sekali lagi. Dan sudah tentu, 7 didapati sebagai pendua. (Lihat juga bagaimana \t
digunakan bagi mencetak "tab".)
Cara lain bagi menggunakan gelung for
ialah untuk melakukan sesuatu buat beberapa kali tertentu. Ini kod bagi mencetak 9 angka pertama siri Fibonacci:
a = 1
b = 1
for c in range(1, 10):
print a,
n = a + b
a = b
b = n
dengan output yang tidak dijangka:
1 1 2 3 5 8 13 21 34
Setiap perkara yang dapat dilakukan dengan gelung for
boleh juga dilakukan dengan gelung while
tetapi gelung for
menyediakan cara mudah bagi menghurai kesemua unsur dalam sesebuah list atau melakukan sesuatu buat beberapa kali tertentu.