Asosiy mazmunga o'tish

7-dars: for va range

2-blokQarorlar va takrorlash5–8 darslar

Bu darsdan keyin siz

  • for bilan ro’yxat va range bo’ylab yurasiz
  • to’rt akkumulyator naqshini tanib olasiz va yozasiz
  • while va for dan qaysi biri qachon qulay ekanini bilasiz

while 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.

royxat.py
baholar = [4, 5, 3, 5, 2]for b in baholar:  print(b)

range(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.

jadval.py
for i in range(1, 6):  print(i, "x 7 =", i * 7)

Boshlang’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.

naqshlar.py
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.

Avval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.

Bashorat qiling
for i in range(3):  print(i)
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.

Bashorat qiling
sonlar = [3, 1, 4, 1, 5]eng = sonlar[0]for s in sonlar:  if s > eng:      eng = sprint(eng)
Javobni ko'rish
5

Maksimum naqshi: eng dastlab 3, keyin 4 ga, keyin 5 ga yangilandi. 1 lar hech narsani o'zgartirmadi.

Bitta 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].

baholar =4535245

Yig'indi

Baholar yig'indisi

jami = 0
for b in baholar:
    jami = jami + b

0

Sanoq

Nechta 5 bor

soni = 0
for b in baholar:
    if b == 5:
        soni = soni + 1

0

Maksimum

Eng yuqori baho

eng = baholar[0]
for b in baholar:
    if b > eng:
        eng = b

4

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.

Bu kod ataylab buzuq — xatoni toping

Buzuq kod
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.

1range(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 — 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.