12-ámeliy jumıs: Python programmalastırıw tilinde sózlikler (dictionaries)
Python programmalastırıw tilinde sózlikler (dictionaries) - bul programmalastırıw tiliniń áhmiyetli strukturalarınan biri.
1. Sózlikler haqqında ulıwma túsinik
Sózlik - bul juplıqlar toplamı bolıp, hárbir element gilt-mánilik (key-value) juplıǵınan ibarat. Sózliktiń tiykarǵı ózgeshelikleri:
• Gilt unikal bolıwı kerek
• Mánilik hár qanday tipte bolıwı múmkin
• Sózlikler ózgeriwshi (mutable)
• Gilt-mánilik juplıqları tártipsiz saqlanadı
2. Sózlik jaratıw usılları
3. Sózlik penen islewdiń tiykarǵı operaciyaları
4. Ámeliy máseleler
1-másele: Studentler dizimin sózlik járdeminde basqarıw
2-másele: Telefon knijkası
5. Qosımsha metodlar
ÁMELIY MÍSALLAR
1. Oqıwshınıń bahaların esaplaw sisteması:
2. Dúkan tovarlardı basqarıw sisteması:
3. Waqıyalar kalendarı:
4. Kórsetilgen xızmetler esabı:
5. Soraw-juwap sisteması:
Bul mısallarda sózliklerdiń hár túrli qollanıw usılların kórsetilgen. Hár bir mısal real máselelerdi sheshiwge arnalǵan hám sózliklerdiń hár qıylı múmkinshiliklerinen paydalanılǵan.
Test
Bul testlerdi orınlaw ushın programmanı iske túsirip, hár bir sorawǵa a, b, c yamasa d variantların kiritip juwap beriw kerek. Testtiń aqırında ulıwma bal hám procent kórsetiledi.
1. Sózlikler haqqında ulıwma túsinik
Sózlik - bul juplıqlar toplamı bolıp, hárbir element gilt-mánilik (key-value) juplıǵınan ibarat. Sózliktiń tiykarǵı ózgeshelikleri:
• Gilt unikal bolıwı kerek
• Mánilik hár qanday tipte bolıwı múmkin
• Sózlikler ózgeriwshi (mutable)
• Gilt-mánilik juplıqları tártipsiz saqlanadı
2. Sózlik jaratıw usılları
# 1-usıl: Bos sózlik
sozlik1 = {}
sozlik2 = dict()
# 2-usıl: Mánis berip jaratıw
student = {
"atı": "Azamat",
"jası": 20,
"kurs": 2
}
# 3-usıl: dict() funkciyası járdeminde
student2 = dict(atı="Gúlnaz", jası=19, kurs=1)
3. Sózlik penen islewdiń tiykarǵı operaciyaları
# Sózlikke element qosıw
student["telefon"] = "+998901234567890"
# Elementti ózgertiw
student["jası"] = 21
# Elementti óshiriw
del student["telefon"]
# Elementti alıw
jası = student["jası"]
# yamasa
jası = student.get("jası") # get() qáwipsizirek, sebebi gilt tawılmasa None qaytaradı
# Giltlerdi alıw
giltler = student.keys()
# Mánislerdi alıw
manisler = student.values()
# Gilt-mánilik juplıqların alıw
juplıqlar = student.items()
4. Ámeliy máseleler
1-másele: Studentler dizimin sózlik járdeminde basqarıw
# Studentler dizimin saqlaw ushın sózlik
studentler = {}
# Student qosıw funkciyası
def student_qosıw(id, atı, kurs):
studentler[id] = {
"atı": atı,
"kurs": kurs
}
# Student haqqında maǵlıwmat alıw
def student_koriw(id):
if id in studentler:
return studentler[id]
return "Student tabılmadı"
# Studentti óshiriw
def student_oshiriw(id):
if id in studentler:
del studentler[id]
return "Student óshirildi"
return "Student tabılmadı"
# Testlew
student_qosıw(1, "Azamat", 2)
student_qosıw(2, "Gúlnaz", 1)
print(student_koriw(1))
print(student_koriw(2))
print(student_oshiriw(1))
2-másele: Telefon knijkası
telefon_knijka = {}
def kontakt_qosıw(atı, nomer):
telefon_knijka[atı] = nomer
def kontakt_izlew(atı):
return telefon_knijka.get(atı, "Kontakt tabılmadı")
def barlıq_kontaktlar():
for atı, nomer in telefon_knijka.items():
print(f"{atı}: {nomer}")
# Testlew
kontakt_qosıw("Azamat", "+998901234567")
kontakt_qosıw("Gúlnaz", "+998907654321")
print(kontakt_izlew("Azamat"))
print("Barlıq kontaktlar:")
barlıq_kontaktlar()
5. Qosımsha metodlar
sozlik = {"a": 1, "b": 2}
# clear() - sózlikti tazalaw
sozlik.clear()
# copy() - sózliktiń kóshirmesin jaratıw
jan_sozlik = sozlik.copy()
# update() - sózlikti basqa sózlik penen biriktiriw
sozlik.update({"c": 3, "d": 4})
# setdefault() - gilt bolmasa, default mánisti qosıw
man = sozlik.setdefault("e", 5)
ÁMELIY MÍSALLAR
1. Oqıwshınıń bahaların esaplaw sisteması:
oqıwshı = {
"atı": "Alisher",
"klass": 9,
"pánler": {
"matematika": [5, 4, 5, 4],
"fizika": [4, 5, 4, 5],
"informatika": [5, 5, 5, 4]
}
}
def orta_baha_esaplaw(bahalar):
return sum(bahalar) / len(bahalar)
# Hárbir pán boyınsha orta bahanı esaplaw
for pán, bahalar in oqıwshı["pánler"].items():
orta_baha = orta_baha_esaplaw(bahalar)
print(f"{pán}: {orta_baha}")
2. Dúkan tovarlardı basqarıw sisteması:
tovarlar = {
"alma": {"baha": 12000, "muǵdar": 50},
"banan": {"baha": 25000, "muǵdar": 30},
"apelsin": {"baha": 15000, "muǵdar": 40}
}
def tovar_qosıw(atı, baha, muǵdar):
tovarlar[atı] = {"baha": baha, "muǵdar": muǵdar}
def tovar_satıw(atı, muǵdar):
if atı in tovarlar:
if tovarlar[atı]["muǵdar"] >= muǵdar:
tovarlar[atı]["muǵdar"] -= muǵdar
return muǵdar * tovarlar[atı]["baha"]
else:
return "Jetkilikli tovar joq"
return "Bunday tovar joq"
# Tovar qosıw
tovar_qosıw("nok", 8000, 60)
# Tovar satıw
print(tovar_satıw("alma", 5)) # 60000 qaytaradı
print(tovarlar["alma"]["muǵdar"]) # 45 qaytaradı
3. Waqıyalar kalendarı:
kalendar = {}
def waqıya_qosıw(sáne, waqıt, waqıya):
if sáne not in kalendar:
kalendar[sáne] = {}
kalendar[sáne][waqıt] = waqıya
def kún_waqıyaların_koriw(sáne):
if sáne in kalendar:
print(f"\n{sáne} kúngi waqıyalar:")
for waqıt, waqıya in kalendar[sáne].items():
print(f"{waqıt}: {waqıya}")
else:
print("Bul kúnde waqıyalar joq")
# Waqıyalardı qosıw
waqıya_qosıw("2024-10-26", "10:00", "Jumıs jıynalısı")
waqıya_qosıw("2024-10-26", "15:30", "Prezentaciya")
waqıya_qosıw("2024-10-27", "12:00", "Túslik")
# Waqıyalardı kóriw
kún_waqıyaların_koriw("2024-10-26")
4. Kórsetilgen xızmetler esabı:
xızmetler = {
"kompyuter remont": 200000,
"virus tazalaw": 100000,
"programa ornatıw": 50000
}
buyırtpalar = []
def buyırtpa_qosıw(klient, xızmet_atı):
if xızmet_atı in xızmetler:
buyırtpa = {
"klient": klient,
"xızmet": xızmet_atı,
"baha": xızmetler[xızmet_atı]
}
buyırtpalar.append(buyırtpa)
return "Buyırtpa qabıl etildi"
return "Bunday xızmet joq"
def esap_shıǵarıw(klient):
ulıwma_summa = 0
klient_buyırtpaları = []
for buyırtpa in buyırtpalar:
if buyırtpa["klient"] == klient:
klient_buyırtpaları.append(buyırtpa)
ulıwma_summa += buyırtpa["baha"]
if klient_buyırtpaları:
print(f"\n{klient}niń buyırtpaları:")
for b in klient_buyırtpaları:
print(f"{b['xızmet']}: {b['baha']} sum")
print(f"Ulıwma summa: {ulıwma_summa} sum")
else:
print("Buyırtpalar tabılmadı")
# Testlew
buyırtpa_qosıw("Azamat", "kompyuter remont")
buyırtpa_qosıw("Azamat", "virus tazalaw")
buyırtpa_qosıw("Gúlnaz", "programa ornatıw")
esap_shıǵarıw("Azamat")
5. Soraw-juwap sisteması:
sorawlar = {
"Python nege arnalǵan?": {
"juwap": "Python - ulıwma maqsetli programmalastırıw tili",
"qıyınlıq": "ańsat"
},
"Dictionary degenimiz ne?": {
"juwap": "Dictionary - gilt-mánilik juplıqlarınan ibarat struktura",
"qıyınlıq": "orta"
},
"List penen Dictionary arasında qanday ayırma bar?": {
"juwap": "List indeksler menen, al Dictionary giltler menen isleydi",
"qıyınlıq": "qıyın"
}
}
def soraw_beriw():
durıs_juwaplar = 0
for soraw, maǵlıwmat in sorawlar.items():
print(f"\nSoraw ({maǵlıwmat['qıyınlıq']}): {soraw}")
juwap = input("Siziń juwabıńız: ")
if juwap.lower() == maǵlıwmat["juwap"].lower():
print("Durıs!")
durıs_juwaplar += 1
else:
print(f"Nátiyjesi: {maǵlıwmat['juwap']}")
print(f"\nSiz {len(sorawlar)} sorawdan {durıs_juwaplar} durıs juwap berdińiz")
# Sistemanı iske túsiriw
soraw_beriw()
Bul mısallarda sózliklerdiń hár túrli qollanıw usılların kórsetilgen. Hár bir mısal real máselelerdi sheshiwge arnalǵan hám sózliklerdiń hár qıylı múmkinshiliklerinen paydalanılǵan.
Test
testler = {
1: {
"soraw": "Python tilinde bos sózlik jaratıwdıń durıs variantı qaysı?",
"variantlar": {
"a": "dict = []",
"b": "dict = {}",
"c": "dict = ()",
"d": "dict = <<>>"
},
"durıs_juwap": "b",
"túsindirme": "Bos sózlik {} járdeminde yamasa dict() funkciyası menen jaratıladı"
},
2: {
"soraw": "Sózlikte bir gilt neshe ret qaytalanıwı múmkin?",
"variantlar": {
"a": "Sheksiz ret",
"b": "2 ret",
"c": "3 ret",
"d": "Gilt unikal bolıwı kerek, qaytalanbawı shárt"
},
"durıs_juwap": "d",
"túsindirme": "Sózlikte giltler unikal bolıwı shárt, bir gilt tek bir ret paydalanıladı"
},
3: {
"soraw": "Sózliktiń mánisi qanday tipte bolıwı múmkin?",
"variantlar": {
"a": "Tek sanlı",
"b": "Tek tekstli",
"c": "Hár qanday tipte",
"d": "Tek spisok"
},
"durıs_juwap": "c",
"túsindirme": "Sózliktiń mánisi hár qanday tipte bolıwı múmkin: san, tekst, spisok, basqa sózlik h.t.b."
},
4: {
"soraw": "Sózlikten elementti óshiriw ushın qaysı operator qollanıladı?",
"variantlar": {
"a": "remove()",
"b": "pop()",
"c": "del",
"d": "clear()"
},
"durıs_juwap": "c",
"túsindirme": "del operatorı sózlikten belgili bir elementti óshiriw ushın qollanıladı"
},
5: {
"soraw": "Sózliktiń barlıq giltlerin alıw ushın qaysı metod qollanıladı?",
"variantlar": {
"a": "keys()",
"b": "values()",
"c": "items()",
"d": "get()"
},
"durıs_juwap": "a",
"túsindirme": "keys() metodı sózliktiń barlıq giltlerin qaytaradı"
},
6: {
"soraw": "Sózlikte joq giltke múrajat etkenimizde qátelik bolmawı ushın qaysı metodtı qollanıw kerek?",
"variantlar": {
"a": "find()",
"b": "get()",
"c": "search()",
"d": "index()"
},
"durıs_juwap": "b",
"túsindirme": "get() metodı gilt tawılmasa None qaytaradı, qátelik júz bermeydi"
},
7: {
"soraw": "Sózliktiń elementlerin sanaw ushın qaysı cikl eń qolay?",
"variantlar": {
"a": "while",
"b": "for in",
"c": "do while",
"d": "repeat until"
},
"durıs_juwap": "b",
"túsindirme": "for in cikli sózlik elementlerin sanaw ushın eń qolaylı usılı"
},
8: {
"soraw": "Sózliktiń barlıq mánislerin alıw ushın qaysı metod qollanıladı?",
"variantlar": {
"a": "keys()",
"b": "values()",
"c": "items()",
"d": "get()"
},
"durıs_juwap": "b",
"túsindirme": "values() metodı sózliktiń barlıq mánislerin qaytaradı"
},
9: {
"soraw": "Sózlikti tolıq tazalaw ushın qaysı metod qollanıladı?",
"variantlar": {
"a": "delete()",
"b": "remove()",
"c": "clear()",
"d": "empty()"
},
"durıs_juwap": "c",
"túsindirme": "clear() metodı sózliktiń barlıq elementlerin óshiredi"
},
10: {
"soraw": "Eki sózlikti birlestiriw ushın qaysı metod qollanıladı?",
"variantlar": {
"a": "merge()",
"b": "update()",
"c": "append()",
"d": "extend()"
},
"durıs_juwap": "b",
"túsindirme": "update() metodı eki sózlikti biriktiriw ushın qollanıladı"
}
}
def test_alıw():
bal = 0
for nomer, test in testler.items():
print(f"\n{nomer}. {test['soraw']}")
for variant, juwap in test['variantlar'].items():
print(f"{variant}) {juwap}")
user_juwap = input("\nJuwabıńızdı kiritiń (a/b/c/d): ").lower()
if user_juwap == test['durıs_juwap']:
print("Durıs! ✅")
bal += 1
else:
print(f"Nátiyjesi: {test['túsindirme']} ❌")
print(f"\nTest juwmaqlandı!")
print(f"Sizdiń balıńız: {bal} / {len(testler)}")
procent = (bal / len(testler)) * 100
print(f"Procent: {procent}%")
# Testti baslawıńız ushın tómendegi qatardı kommentariydan shıǵarıń
# test_alıw()
Bul testlerdi orınlaw ushın programmanı iske túsirip, hár bir sorawǵa a, b, c yamasa d variantların kiritip juwap beriw kerek. Testtiń aqırında ulıwma bal hám procent kórsetiledi.