Tutorial Python untuk bukan pengatur cara/Kamus
Bab ini berkaitan dengan kamus. Jika anda membuka sebuah kamus, anda anda melihat bahawa setiap entri terkandung daripada dua bahagian, sebuah perkataan dan takrif perkataan tersebut. Perkataan merupakan kunci kepada pencarian maksud sebuah perkataan itu, dan maksud perkataan itu pula dianggap nilai bagi kunci tersebut. Dengan Python, kamus memiliki kunci dan nilai. Kunci digunakan bagi mencari nilai. Berikut adalah contoh penggunaan kamus:
def menu_cetak():
print '1. Cetak Kamus'
print '2. Tambah takrif'
print '3. Buang perkataan'
print '4. Cari perkataan'
print '5. Berhenti'
print
perkataan = {}
pilihan_menu = 0
menu_cetak()
while pilihan_menu != 5:
pilihan_menu = input("Taipkan nombor (1-5): ")
if pilihan_menu == 1:
print "Takrif:"
for x in perkataan.keys():
print x, ": ", perkataan[x]
print
elif pilihan_menu == 2:
print "Tambah takrif"
nama = raw_input("Perkataan: ")
maksud = raw_input("Takrif: ")
perkataan[nama] = maksud
elif pilihan_menu == 3:
print "Buang perkataan"
nama = raw_input("Perkataan: ")
if nama in perkataan:
del perkataan[nama]
print nama, " dibuang."
else:
print nama, " tidak terjumpa."
elif pilihan_menu == 4:
print "Cari Perkataan"
nama = raw_input("Perkataan: ")
if nama in perkataan:
print "Takrif ", nama, " ialah: ", perkataan[nama]
else:
print nama, "Tiada takrif bagi ", nama, " dijumpai."
elif pilihan_menu != 5:
cetak_menu()
Dan ini output saya:
1. Cetak Kamus 2. Tambah takrif 3. Buang perkataan 4. Cari perkataan 5. Berhenti Taipkan nombor (1-5): 2 Tambah takrif Perkataan: Python Takrif: Sejenis ular, sebuah bahasa pengaturcaraan, dan sebuah komedi British. Taipkan nombor (1-5): 2 Tambah takrif Perkataan: Kamus Takrif: Buku yang mengandungi takrif perkataan. Taipkan nombor (1-5): 1 Takrif: Python: Sejenis ular, sebuah bahasa pengaturcaraan, dan sebuah komedi British. Kamus: Buku yang mengandungi takrif perkataan. Taipkan nombor (1-5): 4 Cari Perkataan Perkataan: Python Takrif Python ialah: Sejenis ular, sebuah bahasa pengaturcaraan, dan sebuah komedi British. Taipkan nombor (1-5): 3 Buang Perkataan Perkataan: Kamus Kamus dibuang. Taipkan nombor (1-5): 1 Takrif: Python: Sejenis ular, sebuah bahasa pengaturcaraan, dan sebuah komedi British. Taipkan nombor (1-5): 5
Program ini seakan-akan dengan list
nama daripada bab terawal tentang list (perhatikan bahawa list menggunakan index sementara kamus tidak). Ini caranya program ini dilaksanakan:
- Mula-mula function atau fungsi
menu_cetak
diberi definisi.menu_cetak
hanya mencetak sebuah menu yang kemudiannya digunakan sebanyak dua kali oleh program. - Kemudian muncul baris yang kelihatan aneh,
perkataan = {}
. Tugas baris ini ialah memberitahu Python bahawaperkataan
ialah sebuah dictionary atau kamus. - Baris-baris berikutnya bertugas untuk melaksanakan program.
for x in perkataan.keys():
print x, ": ", perkataan[x]
- Ini menghurai kamus dan mencetak kesemua maklumat. Fungsi
perkataan.keys()
memulangkan sebuah list atau senarai yang kemudiannya diguna oleh loop atau gelungfor
. Senarai yang dipulangkan olehkeys()
tidak berada dalam aturan tertentu, jadi jika anda mahu ia berada dalam aturan mengikut abjad anda perlu membuatsort
atau pengisihan. Sama dengan senarai, kenyataanperkataan[x]
digunakan untuk mendapatkan ahli tertentu kamus. Sudah tentunya dalam kes ini,x
ialah sebuahstring
. - Kemudian baris
words[name] = means
menambah perkataan dan definisi pada kamus. Jikaname
sudah terdapat dalam kamus,means
akan menggantikannya.
if nama in perkataan:
del perkataan[nama]
- Lihat sama ada nama terdapat dalam perkataan, dan buangkan jika ada. Ungkapan
nama in perkataan
memulangkantrue
jikanama
merupakan kunci dalamperkataan
, tetapi akan memulangkanfalse
jika sebaliknya. Barisdel perkataan[nama]
membuang kuncinama
dan nilai yang terpaut dengan kunci tersebut.
if nama in perkataan:
print "Definisi ", nama, " ialah: ", perkataan[nama]
- Periksa sama ada perkataan memiliki kunci tertentu dan jika ya, mencetak definis yang berkaitan dengannya.
- Akhir sekali, jika pilihan menu tidak sah, ia akan mencetak semula menu buat tatapan anda.
Ulang kaji: Kamus, Dictionaries memiliki kunci dan nilai. Kunci boleh hadir dalam bentuk rentetan atau nombor. Kunci menunjuk kepada nilai. Nilai boleh terdiri daripada apa-apa jenis pemboleh ubah (termasuk senarai dan juga kamus (dan kamus atau senarai tersebut sudah tentu boleh mengandungi kamus atau senarai (menakutkan, betul tak? :-) )). Ini contoh penggunaan senarai dalam kamus:
markah_maksimum = [25, 25, 50, 25, 100]
kerja_rumah = ['hw ch 1', 'hw ch 2', 'kuiz ', 'hw ch 3', 'ujian']
pelajar = {'#Max': markah_maksimum}
def menu_cetak():
print "1. Tambah pelajar"
print "2. Buang pelajar"
print "3. Cetak gred"
print "4. Catat gred"
print "5. Cetak Menu"
print "6. Keluar"
def cetak_semua_gred():
print '\t',
for i in range(len(kerja_rumah)):
print kerja_rumah[i], '\t',
print
keys = pelajar.keys()
keys.sort()
for x in keys:
print x, '\t',
gred = pelajar[x]
cetak_gred(gred)
def cetak_gred(gred):
for i in range(len(gred)):
print gred[i], '\t', '\t',
print
menu_cetak()
pilihan_menu = 0
while pilihan_menu != 6:
print
pilihan_menu = input("Pilihan Menu (1-6): ")
if pilihan_menu == 1:
nama = raw_input("Pelajar yang ditambah: ")
pelajar[nama] = [0] * len(markah_maksimum)
elif pilihan_menu == 2:
nama = raw_input("Pelajar yang dibuang: ")
if nama in pelajar:
del pelajar[nama]
else:
print "Pelajar:", nama, "tidak terjumpa"
elif pilihan_menu == 3:
cetak_semua_gred()
elif pilihan_menu == 4:
print "Catat Gred"
nama = raw_input("Pelajar: ")
if nama in pelajar:
gred = pelajar[nama]
print "Taipkan nombor gred yang mahu dicatat"
print "Taip 0 (sifar) untuk keluar"
for i in range(len(kerja_rumah)):
print i + 1, kerja_rumah[i], '\t',
print
cetak_gred(gred)
mana = 1234
while mana != -1:
mana = input("Tukar gred yang mana: ")
mana = mana - 1
if 0 <= mana < len(gred):
gred_baru = input("Gred: ")
gred[mana] = gred_baru
elif mana != -1:
print "Nombor Gred Tidak Sah"
else:
print "Pelajar tidak terjumpa"
elif pilihan_menu != 6:
menu_cetak()
dan ini sampel output:
1. Tambah pelajar 2. Buang pelajar 3. Cetak gred 4. Catat gred 5. Cetak Menu 6. Keluar Pilihan Menu (1-6): 3 hw ch 1 hw ch 2 kuiz hw ch 3 ujian #Max 25 25 50 25 100 Pilihan Menu (1-6): 5 1. Tambah pelajar 2. Buang pelajar 3. Cetak gred 4. Catat gred 5. Cetak Menu 6. Keluar Pilihan Menu (1-6): 1 Pelajar yang ditambah: Ramlee Pilihan Menu (1-6): 4 Catat Gred Pelajar: Ramlee Taipkan nombor gred yang mahu dicatat Taip 0 (sifar) untuk keluar 1 hw ch 1 2 hw ch 2 3 kuiz 4 hw ch 3 5 ujian 0 0 0 0 0 Tukar gred yang mana: 1 Grade: 25 Tukar gred yang mana: 2 Grade: 24 Tukar gred yang mana: 3 Grade: 45 Tukar gred yang mana: 4 Grade: 23 Tukar gred yang mana: 5 Grade: 95 Tukar gred yang mana: 0 Pilihan Menu (1-6): 3 hw ch 1 hw ch 2 kuiz hw ch 3 ujian #Max 25 25 50 25 100 Ramlee 25 24 45 23 95 Pilihan Menu (1-6): 6
Ini caranya bagaimana program ini bekerja. Secara asasnya, pemboleh ubah pelajar
adalah sebuah kamus dengan nama pelajar sebagai kunci dan gred sebagai nilai. Dua baris pertama hanya mewujudkan dua senarai.
Baris berikut, pelajar = {'#Max': markah_maksimum}
mewujudkan sebuah kamus baharu dengan kunci {#Max
} dan nilai ditetapkan sebagai [25, 25, 50, 25, 100]
, memandangkan itulah markah_maksimum
apabila kerja rumah diberi (saya guna kunci #Max
kerana #
diisih sebelum aksara abjad). Kemudian cetak_menu
ditetapkan [diberi definisi]. Kemudian fungsi cetak_semua_gred
diberi definisi dalam baris-baris:
def cetak_semua_gred():
print '\t',
for i in range(len(kerja_rumah)):
print kerja_rumah[i], '\t',
print
keys = pelajar.keys()
keys.sort()
for x in keys:
print x, '\t',
gred = pelajar[x]
cetak_gred(gred)
Perhatikan bagaimana mula-mula kunci diperoleh daripada kamus pelajar
dengan fungsi keys
dalam baris keys = students.keys()
. keys
adalah satu senarai, jadi semua fungsi senarai dapat digunakan terhadapnya. Kemudian, memandangkan ia sebuah senarai, kunci diisih pada baris keys.sort()
. for
digunakan untuk menggelintar semua kunci. Gred-gred distor sebagai sebuah senarai dalam kamus, justeru umpukan gred = pelajar[x]
memberigred
senarai yang distor pada kunci x
. Fungsi cetak_gred
mencetak sebuah senarai dan diberi definisinya beberapa baris kemudian.
Baris-baris terkemudian program ini melaksanakan pilihan menu. Baris pelajar[nama] = [0] * len(markah_maksimum)
menambah pelajar pada kunci nama mereka. Notasi [0] * len(markah_maksimum)
mencipta sebuah senarai yang mengandungi '0' yang sama panjang dengan senarai markah_maksimum
.
Entri bagi 'buang pelajar' menyingkir pelajar sama dengan cara yang dibuat dalam contoh buku telefon. Pilihan 'catatan gred' sedikit kompleks. Gred-gred diperoleh dalam baris gred = pelajar[nama]
mendapat rujukan kepada gred nama
pelajar. Satu gred kemudiannya dicatat pada baris gred[mana] = gred_baru
. Anda mungkin perasan yang gred
tidak dimasukkan semula ke dalam kamus pelajar (tiada pelajar[nama] = gred
). Sebabnya ialah gred
sebenarnya sama dengan pelajar[nama]
, jadi mengubah gred
akan mengubah pelajar[nama]
.
Kamus menyediakan cara yang mudah untuk mengaitkan kunci dengan nilai. Ini dapat digunakan untuk mengesan data tang dikaitkan dengan pelbagai kunci.