7-dars: for va range
2-blokQarorlar va takrorlash5–8 darslar
Bu darsdan keyin siz
forbilan ro’yxat varangebo’ylab yurasiz- to’rt akkumulyator naqshini tanib olasiz va yozasiz
whilevafordan qaysi biri qachon qulay ekanini bilasiz
Nazariya
“Nazariya” bo'limiga havolafor — sanashni Python o’zi qiladi
“for — sanashni Python o’zi qiladi” bo'limiga havolawhile da hisoblagichni siz boshqarasiz: yaratasiz, oshirasiz, kuzatasiz. for esa
tayyor ketma-ketlik bo’ylab o’zi yuradi — adashish joyi qolmaydi.
iteratsiyaiteration
Sikl bir marta aylanishi. for b in baholar yozilganda Python ro’yxatning har
elementi uchun bitta iteratsiya bajaradi.
baholar = [4, 5, 3, 5, 2]for b in baholar: print(b)range — sonlar ketma-ketligi
“range — sonlar ketma-ketligi” bo'limiga havolarange(5) → 0, 1, 2, 3, 4 (oxirgisi kirmaydi). range(1, 6) → 1..5.
range(0, 10, 2) → 0, 2, 4, 6, 8. Uchinchi son — qadam.
for i in range(1, 6): print(i, "x 7 =", i * 7)To’rt akkumulyator naqshi
“To’rt akkumulyator naqshi” bo'limiga havolaBoshlang’ich masalalarning katta qismi to’rt naqshdan biriga tushadi. Hammasi bir xil skelet ustiga qurilgan: sikldan oldin boshlang’ich qiymat, sikl ichida yangilash, sikldan keyin natija.
jami = 0 # 1. Yig'indifor b in baholar: jami = jami + bsoni = 0 # 2. Sanoqfor b in baholar: if b == 5: soni = soni + 1eng = baholar[0] # 3. Maksimumfor b in baholar: if b > eng: eng = byaxshi = [] # 4. Filtrfor b in baholar: if b >= 4: yaxshi.append(b)Maksimum naqshida boshlang’ich qiymat 0 emas, baholar[0] bo’lgani muhim: ro’yxatdagi
barcha sonlar manfiy bo’lsa, 0 dan boshlagan kod xato javob beradi.
Bashorat qiling
“Bashorat qiling” bo'limiga havolaAvval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
for i in range(3): print(i)Haqiqiy natija:
0 1 2
range(3) noldan boshlanadi va 3 ga yetmaydi: 0, 1, 2. Uchta son — lekin 3 ning o'zi yo'q.
Javobni ko'rish
0 1 2
range(3) noldan boshlanadi va 3 ga yetmaydi: 0, 1, 2. Uchta son — lekin 3 ning o'zi yo'q.
Avval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
sonlar = [3, 1, 4, 1, 5]eng = sonlar[0]for s in sonlar: if s > eng: eng = sprint(eng)Haqiqiy natija:
5
Maksimum naqshi: eng dastlab 3, keyin 4 ga, keyin 5 ga yangilandi. 1 lar hech narsani o'zgartirmadi.
Javobni ko'rish
5
Maksimum naqshi: eng dastlab 3, keyin 4 ga, keyin 5 ga yangilandi. 1 lar hech narsani o'zgartirmadi.
Sinab ko’r
“Sinab ko’r” bo'limiga havolaBitta ro’yxat, to’rt naqsh bir vaqtda. Har qadamda bitta baho olinadi — to’rt natija qanday to’lishini yonma-yon kuzating.
Naqsh kutubxonasi
Ro'yxat bo'ylab yuring va to'rt naqsh bir vaqtda qanday to'lishini kuzating.
Bu simulyator bitta baholar ro'yxati ustida to'rt naqshni bir vaqtda ishlatadi: yig'indi, sanoq, maksimum va filtr. Har qadamda bitta baho olinadi va to'rt natija yangilanadi.
JavaScript'siz sinash: [4, 5, 3, 5, 2, 4, 5] ro'yxatini daftarga yozing va to'rt ustun chizing. Har bahoni ketma-ket olib, to'rt ustunni qo'lda to'ldirib chiqing. Javoblar: 28, uchta 5, maksimum 5, filtr [4, 5, 5, 4, 5].
Yig'indi
Baholar yig'indisi
jami = 0
for b in baholar:
jami = jami + b0
Sanoq
Nechta 5 bor
soni = 0
for b in baholar:
if b == 5:
soni = soni + 10
Maksimum
Eng yuqori baho
eng = baholar[0]
for b in baholar:
if b > eng:
eng = b4
Filtr
4 va undan yuqorilari
yaxshi = []
for b in baholar:
if b >= 4:
yaxshi.append(b)[]
«Bitta qadam» bilan ro'yxat bo'ylab yura boshlang.
Xatoni toping
“Xatoni toping” bo'limiga havolaBu kod ataylab buzuq — xatoni toping
baholar = [4, 5, 3]for b in baholar: jami = jami + bprint(jami)Python shunday javob beradi:
Traceback (most recent call last): File "yigindi.py", line 3, in <module> jami = jami + b NameError: name 'jami' is not defined
Sababi va tuzatish
Boshlang'ich qiymat yo'q. Birinchi iteratsiyada Python jami ni o'qishga urinadi, lekin bunday nom hali mavjud emas.
To’g’risi: sikldan oldin jami = 0 yozish. Har akkumulyator naqshida
boshlang’ich qiymat majburiy — bu naqshning birinchi qadami.
O’zingizni sinang
“O’zingizni sinang” bo'limiga havola1range(1, 6) qanday sonlarni beradi?
Javobni ko'rish
1, 2, 3, 4, 5. Boshlanishi kiradi, oxiri kirmaydi.
2Qachon for, qachon while qulayroq?
Javobni ko'rish
Ketma-ketlik oldindan ma’lum bo’lsa (ro’yxat, range) —
for. Necha marta aylanishi noma’lum bo’lsa (to’g’ri parolgacha) —
while.
3To'rt akkumulyator naqshini nomlab bering va har biri qanday savolga javob beradi.
Javobni ko'rish
Yig’indi (jami qancha), sanoq (nechta shunday element bor), maksimum (eng kattasi qaysi), filtr (shartga mos elementlar ro’yxati).
4Maksimum naqshida nega eng = 0 emas, eng = royxat[0] deb boshlanadi?
Javobni ko'rish
Ro’yxatdagi barcha sonlar manfiy bo’lsa, 0 dan boshlangan kod
maksimum sifatida 0 ni qaytaradi — bu esa ro’yxatda yo’q son.
530 o'quvchi bahosining o'rtachasini topish uchun qaysi naqsh kerak?
Javobni ko'rish
Yig’indi naqshi, keyin natijani element soniga bo’lish:
jami / len(baholar).
Topshiriq
“Topshiriq” bo'limiga havolaTopshiriq — darajangizni tanlang
Asos · 5–7-sinf — Vizual va aniq ko'rsatmali
for va range bilan 7 ning ko’paytirish jadvalini chiqaring (1 dan 10 gacha).
Keyin sinf baholari ro’yxatini yozib, ularning yig’indisini toping. Uchinchi
vazifa: range ning uchinchi argumenti bilan 2 dan 20 gacha juft sonlarni
chiqaring.
Mustahkam · 8–9-sinf — Matnli masala, o'zingiz tuzasiz
Sinf jurnali: kamida 10 bahodan iborat ro’yxat tuzib, to’rt naqshni ham
ishlatib hisobot chiqaring — o’rtacha baho, beshlar soni, eng yuqori va
eng past baho, hamda 4 dan yuqori baholar ro’yxati. Hisobot chiroyli
formatda, f-string bilan chiqsin.
Chuqur · 10–11-sinf — Algoritmik, chegara holatlari bilan
Baholar ro’yxatida eng ko’p uchraydigan bahoni (modani) topuvchi programma
yozing — faqat for, if va ro’yxat ishlatib. Chegara holatlari: bo’sh
ro’yxat, ikki bahoning teng ko’p uchrashi. Samaradorlik savoli: sizning
yechimingiz ro’yxat bo’ylab necha marta yuradi va buni kamaytirish mumkinmi?
(Lug’at bilan yechish 11-darsda ko’rsatiladi — hozircha faqat ro’yxat bilan.)
Darsni belgilash uchun JavaScript kerak. Bu progressni saqlash uchun ishlatiladi — darslikning o'zi JavaScript'siz ham to'liq o'qiladi.