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_cetakdiberi definisi.menu_cetakhanya mencetak sebuah menu yang kemudiannya digunakan sebanyak dua kali oleh program. - Kemudian muncul baris yang kelihatan aneh,
perkataan = {}. Tugas baris ini ialah memberitahu Python bahawaperkataanialah 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 membuatsortatau pengisihan. Sama dengan senarai, kenyataanperkataan[x]digunakan untuk mendapatkan ahli tertentu kamus. Sudah tentunya dalam kes ini,xialah sebuahstring. - Kemudian baris
words[name] = meansmenambah perkataan dan definisi pada kamus. Jikanamesudah terdapat dalam kamus,meansakan menggantikannya.
if nama in perkataan:
del perkataan[nama]
- Lihat sama ada nama terdapat dalam perkataan, dan buangkan jika ada. Ungkapan
nama in perkataanmemulangkantruejikanamamerupakan kunci dalamperkataan, tetapi akan memulangkanfalsejika sebaliknya. Barisdel perkataan[nama]membuang kuncinamadan 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.