13-dars: Funksiya
4-blokO'z buyruqlaringizni yasash13–16 darslar
Bu darsdan keyin siz
defbilan funksiya yozib, uni bir necha marta chaqirasiz- parametr va argument farqini aytasiz
returnvaprintni chalkashtirmaysiz — bu darsning asosiy ko’nikmasi
Nazariya
“Nazariya” bo'limiga havolaBir marta yozib, ko’p marta chaqirish
“Bir marta yozib, ko’p marta chaqirish” bo'limiga havolaFunksiya — nomlangan kod bo’lagi. Uni bir marta yozasiz, keyin nomi bilan chaqirasiz. Ustama 15 foizga o’zgarsa, bitta joyda tuzatasiz.
funksiyafunction
Nomlangan va qayta ishlatiladigan kod bo’lagi. def kalit so’zi bilan
e’lon qilinadi va nomi bilan chaqiriladi.
def ustama_narx(narx): return narx * 1.12# Endi bitta qatorda hisoblanadi:print(ustama_narx(10000)) # 11200.0print(ustama_narx(2500)) # 2800.0Parametr va argument
“Parametr va argument” bo'limiga havoladef ustama_narx(narx) yozganingizda narx — parametr: funksiya ichida
ishlatiladigan nom. ustama_narx(10000) deb chaqirganda 10000 — argument:
o’sha nomga bog’lanadigan haqiqiy qiymat.
parametrparameter
Funksiya e’lonidagi nom. Chaqiruv paytida unga qiymat bog’lanadi.
argumentargument
Chaqiruvda beriladigan haqiqiy qiymat. Parametr — quti, argument — ichiga solingan narsa.
Parametrlar bir nechta bo’lishi mumkin va ularga standart qiymat berilishi ham mumkin. Standart qiymatli parametr chaqiruvda tashlab ketilsa, o’sha qiymat ishlatiladi.
def ustama_narx(narx, foiz=12): return narx * (1 + foiz / 100)print(ustama_narx(10000)) # 11200.0 — standart 12 foizprint(ustama_narx(10000, 15)) # 11500.0 — 15 foizreturn — qiymat qaytaradi
“return — qiymat qaytaradi” bo'limiga havolareturn funksiyani to’xtatadi va qiymatni chaqirgan joyga qaytaradi. Qaytgan
qiymatni o’zgaruvchiga yozish, hisobga qo’shish, boshqa funksiyaga berish mumkin.
qaytarishreturn
Funksiyaning natijasini chaqirgan joyga uzatish. return bajarilgach funksiya
tugaydi — undan keyingi qatorlar ishlamaydi.
return ≠ print
“return ≠ print” bo'limiga havolaBu darsning eng muhim joyi. print ekranga yozadi va hech narsa qaytarmaydi.
return esa qiymat qaytaradi va ekranga hech narsa chiqarmaydi.
Xato darhol ko’rinmasligi bilan xavfli: ekranda son chiqadi, programma ishlayotgandek tuyuladi, keyin bir necha qator pastda tushunarsiz xato paydo bo’ladi.
Bashorat qiling
“Bashorat qiling” bo'limiga havolaAvval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
def kvadrat(son): print(son * son)natija = kvadrat(5)print(natija)Haqiqiy natija:
25 None
Birinchi qator funksiya ichidagi print dan chiqdi. Ikkinchisi — natija ning qiymati: funksiyada return yo'q, shuning uchun u None qaytardi.
Javobni ko'rish
25 None
Birinchi qator funksiya ichidagi print dan chiqdi. Ikkinchisi — natija ning qiymati: funksiyada return yo'q, shuning uchun u None qaytardi.
Avval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
def salomlash(ism): return "Salom, " + ism print("Bu qator ishlaydimi?")print(salomlash("Aziza"))Haqiqiy natija:
Salom, Aziza
return bajarilgach funksiya darhol tugaydi. Undan keyingi print ga navbat kelmaydi — bunday kod «o'lik kod» deb ataladi.
Javobni ko'rish
Salom, Aziza
return bajarilgach funksiya darhol tugaydi. Undan keyingi print ga navbat kelmaydi — bunday kod «o'lik kod» deb ataladi.
Sinab ko’r
“Sinab ko’r” bo'limiga havolaIkki variantni ketma-ket qadamlab chiqing. Uchinchi qadamga alohida diqqat
qiling: aynan o’sha joyda natija ga None yoziladi va bu odatda sezilmaydi.
return va print
Variantni tanlab qadamlab boring. Klaviatura: → keyingi qadam.
Bu simulyatorda bitta funksiya ikki xil yozilgan: «return» bilan va «print» bilan. Har qadamda o'zgaruvchilar holati va terminal ekrani yonma-yon ko'rsatiladi.
JavaScript'siz eng muhim qadam: «print» bilan yozilgan funksiya ekranga 25 chiqaradi, lekin hech narsa qaytarmaydi. Demak «natija = kvadrat(5)» qatoridan keyin «natija» ning qiymati «None» bo'ladi va «None * 2» TypeError beradi.
O'zgaruvchilar
Terminal
Xatoni toping
“Xatoni toping” bo'limiga havolaBu kod ataylab buzuq — xatoni toping
def ortacha(a, b): print((a + b) / 2)natija = ortacha(4, 6)print("O'rtacha:", natija * 2)Python shunday javob beradi:
5.0
Traceback (most recent call last):
File "ortacha.py", line 4, in <module>
print("O'rtacha:", natija * 2)
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'Sababi va tuzatish
Funksiya natijani ekranga yozdi, lekin qaytarmadi. natija ning qiymati None bo'lib qoldi.
Tuzatish bitta so’zda: print o’rniga return. Ekranda 5.0 chiqqani
chalg’itadi — u funksiya ichidagi print dan kelgan, natija esa allaqachon
yo’qolgan edi.
def ortacha(a, b): return (a + b) / 2natija = ortacha(4, 6)print("O'rtacha:", natija * 2) # O'rtacha: 10.0O’zingizni sinang
“O’zingizni sinang” bo'limiga havola1Parametr va argument farqi nimada?
Javobni ko'rish
Parametr — funksiya e’lonidagi nom (def ustama(narx) dagi narx).
Argument — chaqiruvda berilgan haqiqiy qiymat (ustama(10000) dagi 10000).
2return yozilmagan funksiya nima qaytaradi?
Javobni ko'rish
None. Bu «hech narsa» degani va u bilan arifmetika qilib bo’lmaydi —
TypeError chiqadi.
3print va return ni qanday ajratib eslab qolasiz?
Javobni ko'rish
print odam uchun — ekranga yozadi. return programma uchun — qiymatni
qaytaradi. Bittasi ko’rinadi, ikkinchisi ishlatiladi.
4return dan keyingi qatorlar ishlaydimi?
Javobni ko'rish
Yo’q. return funksiyani darhol tugatadi. Undan keyin yozilgan kod hech
qachon bajarilmaydi — bunday kodni «o’lik kod» deyiladi.
5Bir xil hisob 10 joyda takrorlanayotgan bo'lsa, nima qilasiz?
Javobni ko'rish
Funksiyaga chiqaraman. Keyin o’zgarish kerak bo’lsa, 10 joy emas, bitta joy tuzatiladi.
Topshiriq
“Topshiriq” bo'limiga havolaTopshiriq — darajangizni tanlang
Asos · 5–7-sinf — Vizual va aniq ko'rsatmali
salomlash(ism) funksiyasini yozing: u "Salom, Aziza!" ko’rinishidagi
satrni qaytaradi. Uni uch xil ism bilan chaqirib, natijalarni chop
eting. Keyin print variantini ham yozib ko’ring va farqni daftaringizga
bir gapda yozing.
Mustahkam · 8–9-sinf — Matnli masala, o'zingiz tuzasiz
chegirma(narx, foiz) funksiyasini yozing: chegirmadan keyingi narxni
qaytarsin, foiz ning standart qiymati 10 bo’lsin. Keyin ikkinchi funksiya
yozing — jami(narxlar) — u ro’yxatdagi barcha narxlarga chegirma qo’llab
umumiy summani qaytarsin. Ikkinchi funksiya birinchisini chaqirsin.
Chuqur · 10–11-sinf — Algoritmik, chegara holatlari bilan
baho_harfi(ball) funksiyasini yozing: 90+ → "A", 70+ → "B", 50+ →
"C", aks holda "D". Chegara holatlarini alohida tekshirib chiqing: 90,
89, 70, 50, 0 va manfiy son. Manfiy ball kelganda funksiya nima qilishi
kerak — "D" qaytarsinmi yoki boshqa narsa? Qaroringizni izohda
asoslang.
Darsni belgilash uchun JavaScript kerak. Bu progressni saqlash uchun ishlatiladi — darslikning o'zi JavaScript'siz ham to'liq o'qiladi.