Tutorial Python untuk bukan pengatur cara/Senarai
Pemboleh ubah yang memiliki lebih daripada satu nilai
[sunting]Anda sudah melihat pemboleh ubah biasa yang menstor nilai tunggal. Walau bagaimanapun pemboleh ubah jenis lain dapat menstor lebih daripada satu nilai. Jenis yang paling ringkas atau mudah dipanggil list
atau senarai. Ini contoh penggunaan list
:
mana_satu = input("Bualan apa (1-12)? ")
bulan = ['Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai',
'Ogos', 'September', 'Oktober', 'November', 'Disember']
if 1 <= mana_satu <= 12:
print "Bulan ialah", bulan[mana_satu - 1]
dan outputnya:
Bulan apa (1-12)? 3 Bulan ialah Mac
Dalam contoh ini bulan
ialah list
. Pemboleh ubah bulan
ditakrifkan dengan baris bulan = ['Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai',
dan 'Ogos', 'September', 'Oktober', 'November', 'Disember']
(perhatikan bahawa sebuah \
juga boleh digunakan untuk membahagikan sebuah baris yang panjang, namun ia tidak perlu oleh sebab Python pintar dan tahu bahawa semua yang terkandung dalam kurungan harus disatukan). Tanda [
dan ]
memula dan mengakhiri list
dengan koma (,
) yang mengasingkan kandungan atau item list
atau senarai. list
digunakan dalam bulan[mana_satu - 1]
.
Sebuah list
terdiri daripada item yang diberi bilangan bermula dengan sifar (0). Dalam kata lain, jika anda mahu Januari anda akan mengguna bulan[0]
. Berikan nombor kepada list
dan ia akan memulangkan nilai yang terstor pada lokasi itu.
Kenyataan if 1 <= mana_satu <= 12:
hanya akan menjadi true (benar) jika mana_satu
antara satu dan dua belas inklusif (dalam kata lain, ia adalah apa yang anda sangkakan sekiranya anda melihat kod seakan-akan itu dalam algebra).
List
juga boleh difikirkan sebagi siri kotak. setiap kotak memiliki nilai berlainan. Misalnya kotak-kotak yang dijana demolist = ['hayat', 42, 'alam', 6, 'dan', 7]
akan kelihatan demikian:
nombor kotak | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
demolist | "hayat" | 42 | "alam" | 6 | "dan" | 7 |
Setiap kotak dirujuk dengan nombornya agar kenyataan demolist[0]
akan mendapat 'hayat'
, demolist[1]
akan mendapat 42
dan seterusnya sehinggalah demolist[5]
yang mendapat 7
.
Lagi tentang ciri-ciri list
[sunting]Contoh berikut ialah untuk mempamerkan operasi-operasi lain yang dapat dilakukan list
(buat kali ini saya tidak memerlukan anda menaipnya, tetapi anda patut mencuba-cuba list
sehingga anda berasa selesa dengannya.). Ini dia:
demolist = ["hayat", 42, "alam", 6, "dan", 7]
print "demolist = ",demolist
demolist.append("semua")
print "selepas 'semua' ditambah, demolist sekarang ialah:"
print demolist
print "len(demolist) =", len(demolist)
print "demolist.index(42) =", demolist.index(42)
print "demolist[1] =", demolist[1]
# Kemudian kita akan masuk gelung <code>list</code>
c = 0
while c < len(demolist):
print "demolist[", c, "] =", demolist[c]
c = c + 1
del demolist[2]
print "Selepas 'alam' dibuang, demolist sekarang ialah:"
print demolist
if "hayat" in demolist:
print "'hayat' hadir dalam demolist"
else:
print "'hayat' tidak hadir dalam demolist"
if "amoeba" in demolist:
print "'amoeba' hadir dalam demolist"
if "amoeba" not in demolist:
print "'amoeba' tidak hadir dalam demolist"
demolist.sort()
print "Demolist yang sudah sort ialah", demolist
Output ialah:
demolist = ['hayat', 42, 'alam', 6, 'dan', 7] selepas 'semua' ditambah, demolist sekarang ialah: ['hayat', 42, 'alam', 6, 'dan', 7, 'semua'] len(demolist) = 7 demolist.index(42) = 1 demolist[1] = 42 demolist[ 0 ] = hayat demolist[ 1 ] = 42 demolist[ 2 ] = alam demolist[ 3 ] = 6 demolist[ 4 ] = dan demolist[ 5 ] = 7 demolist[ 6 ] = semua Selepas 'alam' dibuang, demolist sekarang ialah: ['hayat', 42, 6, 'dan', 7, 'semua'] 'hayat' hadir dalam demolist 'amoeba' tidak hadir dalam demolist Demolist yang sudah sort ialah [6, 7, 42, 'dan', 'semua', 'hayat']
Nota penterjemah: |
Contoh di atas menggunakan beberapa fungsi baharu. Perhatikan bahawa anda boleh print
sebuah list
. Kemudian fungsi append
digunakan untuk menambah item baharu pada penghujung list
. len
memulangkan bilangan item yang terdapat dalam list
. Index
yang sah (seperti nombor yang boleh digunakan dalam []
) sebuah list memiliki julat daripada 0 hingga ke len - 1
. Fungsi index
memberitahu di mana lokasi item pertama dalam list. Perhatikan bagaimana demolist.index(42)
memulangkan 1, dan apabila demolist[1]
dilaksanakan ia memulangkan 42. Baris # Kemudian kita akan masuk gelung list
hanya sebuah peringatan kepada pengatur cara (juga digelar ulasan). Python akan mengabaikan apa jua baris yang bermula dengan #
. Kemudian baris-baris:
c = 0
while c < len(demolist):
print 'demolist[', c, '] =', demolist[c]
c = c + 1
menjana pemboleh ubah c
, yang bermula daripada 0 dan ditokok (increment) sehingga ia sampai kepada indeks terakhir senarai. Sementara itu kenyataan print
mencetak setiap unsur yang terdapat dalam senarai tersebut. Perintah del
dapat digunakan bagi menyingkir sesuatu unsur daripada senarai. Baris-baris berikutnya mengguna operator in
untuk menguji sama ada sesuatu unsur itu berada dalam senarai atau tidak. Fungsi sort
mengisih senarai. Ini amat berguna sekiranya anda memerlukan senarai yang bermula dengan angka paling kecil sehingga yang paling besar, ataupun sekirannya anda memerlukan senarai mengikut abjad. Perhatikan bahawa ini akan mengatur semula senarai. Secara ringkas, bagi senarai, operasi-operasi berikut berlaku:
contoh | penjelasan |
---|---|
demolist[2]
|
mengakses unsur di indeks 2 |
demolist[2] = 3
|
menetapkan unsur di indeks 2 pada 3 |
del demolist[2]
|
menyingkir unsur pada indeks 2 |
len(demolist)
|
memulangkan panjang demolist
|
"nilai" dalam demolist
|
ialah Benar jika "nilai" ialah unsur dalam demolist
|
"nilai" tiada dalam demolist
|
ialah Benar jika "nilai" bukan unsur dalam demolist
|
demolist.sort()
|
mengisih demolist
|
demolist.index("nilai")
|
memulangkan indeks tempat pertama berlakunya "nilai" |
demolist.append("nilai")
|
menambah "nilai" unsur pada penghujung senarai
|
demolist.remove("nilai")
|
menyingkir kejadian pertama nilai daripada demolist (sama dengan del demolist[demolist.index("nilai")] )
|
Contoh berikutnya menggunakan ciri-ciri ini dalam cara yang lebih berguna:
item_menu = 0
senarainama = []
while item_menu != 9:
print "--------------------"
print "1. Cetak senarai"
print "2. Tambah nama pada senarai"
print "3. Singkir nama daripada senarai"
print "4. Tukar item dalam senarai"
print "9. Berhenti"
item_menu = input("Pilih item daripada menu: ")
if item_menu == 1:
semasa = 0
if len(senarainama) > 0:
while semasa < len(senarainama):
print semasa, ".", senarainama[semasa]
semasa = semasa + 1
else:
print "Senarai kosong"
elif item_menu == 2:
nama = raw_input("Taip nama yang mahu ditambah: ")
namelist.append(nama)
elif item_menu == 3:
buang_nama = raw_input("Taip nama yang mahu dibuang: ")
if buang_nama in senarainama:
# senarainama.remove(buang_nama) juga boleh diguna
nombor_item = senarainama.index(buang_nama)
del senarainama[nombor_item]
# Kod di atas hanya menyingkirkan kejadian pertama
# nama. Kod di bawah daripada Gerald menyingkirkan semua.
# while buang_nama in senarainama:
# nombor_item = senarainama.index(buang_nama)
# del senarainama[nombor_item]
else:
print buang_nama, "tidak diketemu"
elif item_menu == 4:
nama_lama = raw_input("Nama apa yang ingin anda ubah: ")
if nama_lama in senarainama:
nombor_item = senarainama.index(nama_lama)
nama_baru = raw_input("Apa nama baharu: ")
senarainama[nombor_item] = nama_baru
else:
print nama_lama, "tidak diketemu"
print "Sayonara"
Dan ini sebahagian daripada output:
-------------------- 1. Cetak senarai 2. Tambah nama pada senarai 3. Singkir nama daripada senarai 4. Tukar item dalam senarai 9. Berhenti Pilih item daripada menu: 2 Taip nama yang mahu ditambah: Jack Pilih item daripada menu: 2 Taip nama yang mahu ditambah: Jill Pilih item daripada menu: 1 0 . Jack 1 . Jill Pilih item daripada menu: 3 Taip nama yang mahu dibuang: Jack Pilih item daripada menu: 4 Nama apa yang ingin anda ubah: Jill Apa nama baharu: Jill Kuppusamy Pilih item daripada menu: 1 0 . Jill Kuppusamy Pilih item daripada menu: 9 Sayonara
Itu satu atur cara yang panjang. Mari kita lihat kod sumber. Baris senarainama = []
membuat pemboleh ubah senarainama
sebuah senarai yang tidak mengandungi item (ataupun unsur). Baris penting berikutnya ialah while item_menu != 9:
. Baris ini memulakan gelung yang membolehkan sistem menu bagi program ini. Baris-baris selanjutnya menampilkan menu dan membuat keputusan bahagian mana atur cara akan dilaksanakan (P: bergantung pada pilihan pengguna).
Bahagian
semasa = 0
if len(senarainama) > 0:
while semasa < len(senarainama):
print semasa, ".", senarainama[semasa]
semasa = semasa + 1
else:
print "Senarai kosong"
memperlelar senarai dan mencetak setaip nama. len(namelist)
memberitahu bilangan item dalam senarai. Jika len
memulangkan 0
, senarai tidak mengandungi apa-apa item.
Beberapa baris kemudian, penyataan senarainama.append(nama)
pula muncul. Ia menggunakan fungsi append
untuk menambah item pada penghujung senarai. Langkah dua baris lagi dan lihat kod berikut:
nombor_item = senarainama.index(buang_nama)
del senarainama[nombor_item]
Di sini, fungsi index
digunakan untuk mencari nilai indeks yang akan digunakan kemudian bagi menyingkir item berkenaan. del senarainama[nombor_item]
digunakan bagi menyingkir sebuah unsur senarai.
Bahagian berikut
nama_lama = raw_input("Nama apa yang ingin anda ubah: ")
if nama_lama in senarainama:
nombor_item = senarainama.index(nama_lama)
nama_baru = raw_input("Apa nama baharu: ")
senarainama[nombor_item] = nama_baru
else:
print nama_lama, "tidak diketemu"
mengguna index
untuk mencari nombor_item
dan kemudian meletakkan nama_baru
di tempat terletaknya nama_lama
.
Tahniah, memandangkan sekarang anda sudah memahami senarai atau >code>list, anda sudahpun mengetahui sebahagian yang mencukupi tentang bahasa ini dan anda sekarang boleh melakukan pengkomputan yang dapat dilakukan sesebuah komputer (secara teknikal, ini dikenali sebagai Turing-Completeness). Sudah tentu masih ada lagi ciri-ciri lain yang boleh digunakan yang dapat memudahkan tugas anda.
Contoh
[sunting]ujian.py
## Program ini melaksana ujian pengetahuan
# Mula-mula dapatkan soalan ujian
# Kemudian ini akan diubah suai
# untuk mengguna io fail.
def dapat_soalan():
# perhatikan bagaimana data distor sebagai senarai beberapa senarai
return [["Apakah warna langit pada siang hari? ", "biru"],
["Apakah jawapan kepada persoalan tentang alam semesta dan semuanya? ", "42"],
["Apakah perkataan 6 huruf yang merujuk kepada perangkap tikus? ", "kucing"]]
# Ini akan menguji soalan tunggal
# ia mengutarakan satu soalan
# dan memulangkan True jika jawapan yang dimasukkan pengguna itu betul,
# jika tidak, False
def periksa_soalan(soal_jawab):
# sari soalan dan jawapan daripada senarai
soalan = soal_jawab[0]
jawapan = soal_jawab[1]
# berikan jawapan kepada pengguna
jawapan_diberi = raw_input(soalan)
# bandingkan jawapan pengguna dengan jawapan tukang uji
if jawapan == jawapan_diberi:
print "Betul"
return True
else:
print "Tidak betul, jawapannya ialah:", jawapan
return False
# Ini akan melaksanakan semua soalan
def laksana_ujian(soalan):
if len(soalan) == 0:
print "Tiada soalan diberikan."
# "return" akan menghentikan fungsi
return
index = 0
betul = 0
while index < len(soalan):
# Semak soalan
if periksa_soalan(soalan[index]):
betul = betul + 1
# pergi ke soalan berikutnya
index = index + 1
# perhatikan urutan pengkomputan, mula-mula darab,
# kemudian bahagi
print "Anda mendapat", betul * 100 / len(soalan),\
"% jawapan betul daripada", len(soalan), "soalan yang dikemukakan."
# laksana soalan
laksana_ujian(dapat_soalan())
Nilai-nilai True
dan False
masing-masing merujuk kepada 1 dan 0. Nilai-nilai ini sering digunakan dalam "ujian kewarasan", syarat-syarat gelung, dll. Anda akan mempelajari lebih lanjut tentang perkara ini kemudian (bab Ungkapan Boolean).
Sampel Output:
Apakah warna langit pada siang hari? hijau Tidak betul, jawapannya ialah: biru Apakah jawapan kepada persoalan tentang alam semesta dan semuanya? 42 Betul Apakah perkataan 6 huruf yang merujuk kepada perangkap tikus? kucing Betul Anda mendapat 66 % jawapan betul daripada 3 soalan yang dikemukakan.
Latihan
[sunting]Kembangkan program ujian.py agar ia memiliki menu yang memberikan pilihan mengambil ujian, membelek senarai soalan dan jawapan, dan pelihan untuk berhenti. Lagi, tambah soalan baharu yang menanyakan, "Apakah bunyi yang dibuat mesin yang betul-betul maju?" dengan jawapannya "ping".
Kembangkan program ujian.py agar ia memiliki menu yang memberikan pilihan mengambil ujian, membelek senarai soalan dan jawapan, dan pelihan untuk berhenti. Lagi, tambah soalan baharu yang menanyakan, "Apakah bunyi yang dibuat mesin yang betul-betul maju?" dengan jawapannya "ping".
## Program ini merupakan ujian pengetahuan
soalan = [["Apakah warna langit pada siang hari? ", "biru"],
["Apakah jawapan kepada persoalan tentang alam semesta dan semuanya? ", "42"],
["Apakah perkataan 6 huruf yang merujuk kepada perangkap tikus? ", "kucing"],
["Apakah bunyi yang dibuat mesing yang paling maju? ", "ping"]]
# Ini akan menguji soalan tunggal
# ia mengutarakan satu soalan
# dan memulangkan True jika jawapan yang dimasukkan pengguna itu betul,
# jika tidak, False
def periksa_soalan(soal_jawab):
# sari soalan dan jawapan daripada senarai
soalan = soal_jawab[0]
jawapan = soal_jawab[1]
# berikan jawapan kepada pengguna
jawapan_diberi = raw_input(soalan)
# bandingkan jawapan pengguna dengan jawapan tukang uji
if jawapan == jawapan_diberi:
print "Betul"
return True
else:
print "Tidak betul, jawapannya ialah:", jawapan
return False
# This will run through all the questions
def laksana_ujian(soalan):
if len(soalan) == 0:
print "Tiada soalan diberikan."
# "return" akan menghentikan fungsi
return
index = 0
betul = 0
while index < len(soalan):
# Semak soalan
if periksa_soalan(soalan[index]):
betul = betul + 1
# pergi ke soalan berikutnya
index = index + 1
# perhatikan urutan pengkomputan, mula-mula darab,
# kemudian bahagi
print "Anda mendapat", betul * 100 / len(soalan),\
"% jawapan betul daripada", len(soalan), "soalan yang dikemukakan."
#memaparkan senarai soalan dan jawapan
def papar_soalan():
s = 0
while s < len(soalan):
j = 0
print "S:" , soalan[s][j]
j = 1
print "J:" , soalan[s][j]
s = s + 1
# sekarang kita beri definisi fungsi menu
def menu():
print "-----------------"
print "Menu:"
print "1 - Ambil ujian"
print "2 - Belek senarai soalan dan jawapan"
print "3 - Belek menu"
print "5 - Berhenti"
print "-----------------"
pilih = "3"
while pilih != "5":
if pilih == "1":
laksana_ujian(soalan)
elif pilih == "2":
papar_soalan()
elif pilih == "3":
menu()
print
pilih = raw_input("Nyatakan pilihan anda daripada menu di atas: ")
Nota penterjemah: |