Topshiriqlar 3 (Funksiyalar)
Quyidagi mashqlar source/python3/functions.ipynb mavzulari asosida tuzilgan.
1. Funksiya va return
hello()nomli funksiya yozing. U chaqirilganda 2 ta satr chiqarib bersin (masalan, salomlashish va dars nomi).find_square(n)funksiyasini yozing:nning kvadratinireturnqilsin. 3 ta turli qiymatda sinab ko‘ring.sum_to_n(n)funksiyasi: 1 danngacha bo‘lgan sonlar yig‘indisini qaytarsin.find_area_per(a, b)funksiyasi: to‘g‘ri to‘rtburchak yuza va perimetrini bittadan ortiq qiymat sifatida qaytarsin (tuple). Natijaniyuza, perimetr = ...ko‘rinishida ajrating.is_prime(n)funksiyasi:ntub son bo‘lsaTrue, aks holdaFalseqaytarsin. 1, 2, 3, 4, 9, 79 kabi sonlarda tekshiring.
2. Argumentlar: tartib, kalit so‘zlar, default
full_name(fname, lname)funksiyasi yozing va uni 2 xil usulda chaqiring:oddiy tartib bilan;
keyword argument bilan (
lname=...).
power(base, exp=2)funksiyasi yozing:base**expqaytarsin.expberilmasa kvadratini qaytarsin.
greet(country="Uzbekistan")funksiyasi yozing: mamlakatga qarab matn chiqarsin.3 marta turli qiymat bilan chaqiring, 1 marta argument bermasdan chaqiring.
(Xatoni tushunish)
nameAge(name, age)funksiyasi berilgan bo‘lsin.nameAge("Ali", 20)vanameAge(20, "Ali")ni chaqirib ko‘ring.Ikkinchi holatda nima uchun mantiqiy xato bo‘lishini 2–3 gap bilan izohlang.
3. *args
my_sum(*values)funksiyasi yozing: ixtiyoriy sondagi sonlarni yig‘ib qaytarsin.1 ta, 2 ta, 5 ta argument bilan sinab ko‘ring.
max_of(*values)funksiyasi yozing: eng katta qiymatni qaytarsin (tayyormax()ishlatmasdan).print_args(*args)funksiyasi yozing: kelgan argumentlarni tartib bilan chop qilsin vatype(args)ni ham chiqarsin.
4. **kwargs
print_profile(**kwargs)funksiyasi yozing: har birkalit: qiymatni alohida satrda chiqarsin.build_user(**kwargs)funksiyasi yozing: kelgankwargsni aynandictsifatida qaytarsin.(Aralash)
register(name, *skills, **info)funksiyasi yozing.namemajburiy.skills(masalan,"python","math") ro‘yxat qilib chiqsin.info(masalan,age=20, city='Toshkent') lug‘at qilib chiqsin.
5. Hujjat qatori (docstring)
evenOdd(x)funksiyasini yozing va unga docstring qo‘shing:docstring ichida
xnimani anglatishi va qaytadigan natija/chiqaradigan matn yozilsin.
evenOdd.__doc__ni chop eting.(Xato topish) Funksiyani argument bermasdan chaqirsangiz (
evenOdd()), nima bo‘ladi? Nega? To‘g‘ri chaqirish misolini yozing.
6. Parametr cheklovlari: / va * (positional-only / keyword-only)
Positional-only parametrlar:
def f(a, b, /, c=5): ...ko‘rinishida funksiya yozing.f(1, 2, c=10)ishlasin.f(a=1, b=2, c=10)chaqiruv nega ishlamasligini izohlang.
Keyword-only parametrlar:
def g(a, b, *, c=5): ...ko‘rinishida funksiya yozing.g(1, 2, c=10)ishlasin.g(1, 2, 10)nega xato berishini izohlang.
7. Kichik amaliy masalalar
normalize_text(text, lower=True)funksiyasi:lower=Truebo‘lsa matnni kichik harflarga o‘tkazsin.bo‘sh joylarni ikki tomondan
.strip()qilsin.
count_vowels(text)funksiyasi:textichidagi unli harflar sonini qaytarsin (o‘zbek lotin unli harflari bilan).safe_div(a, b, default=None)funksiyasi:agar
b==0bo‘lsadefaultni qaytarsin;aks holda
a/bni qaytarsin.
stats(nums)funksiyasi: ro‘yxat uchun(min, max, mean)qaytarsin (meanni o‘zingiz hisoblang).
8. Ixtiyoriy (qiyinroq)
apply(func, values)funksiyasi yozing:valuesro‘yxatidagi har bir elementgafuncni qo‘llab yangi ro‘yxat qaytarsin.apply(find_square, [1,2,3])kabi sinab ko‘ring.
make_multiplier(k)funksiyasi yozing: u ichidamult(x)degan ichki funksiya qaytarsin vamult(x)=k*xbo‘lsin.times2 = make_multiplier(2)vatimes2(7)ni tekshiring.