Skip to content

9. Proc / Func — funksiyalar

Har bir masala uchun mos funksiya (def) yozilishi va u if __name__ == "__main__": blokidan chaqirilishi kerak. Python'da protsedura yo'q: natija qaytarmaydigan funksiya (None qaytaradi) uning o'rnini bosadi, bir nechta natija esa kortej (return a, b) orqali qaytariladi.

Oddiy funksiyalar

1. Ikki son a va b ni parametr sifatida qabul qilib, ularning eng kattasini qaytaruvchi funksiya yozing.
Misol: max(3, 7) → 7

2. Uchta son a, b, c ni qabul qilib, ularning o'rtancha qiymatini (medianasini) qaytaruvchi funksiya yozing.
Misol: median(5, 1, 3) → 3

3. Butun son n ni qabul qilib, uning tub son ekanligini (True/False) qaytaruvchi funksiya yozing.
Misol: is_prime(17) → True; is_prime(21) → False

4. Butun son n ni qabul qilib, n! (faktorial) ni qaytaruvchi funksiya yozing.
Misol: factorial(5) → 120

5. Uchburchak tomonlari a, b, c ni qabul qilib, bunday uchburchak mavjudligini (True/False) qaytaruvchi funksiya yozing.
Misol: exists(3, 4, 5) → True; exists(1, 2, 5) → False

6. Haqiqiy son x va butun son n ni qabul qilib, xⁿ ni qaytaruvchi funksiya yozing (n manfiy ham bo'lishi mumkin).
Misol: power(2, 10) → 1024; power(2, -2) → 0.25

7. Butun son n ni qabul qilib, uning raqamlari yig'indisini qaytaruvchi funksiya yozing.
Misol: digit_sum(12345) → 15

8. Uchburchak tomonlari a, b, c ni qabul qilib, uning yuzasini qaytaruvchi funksiya yozing (Geron formulasi bilan).
Misol: area(3, 4, 5) → 6

9. Butun son n ni qabul qilib, n-Fibonachchi sonini qaytaruvchi funksiya yozing.
Misol: fib(10) → 55

10. Natural son n ni qabul qilib, n dan katta eng kichik tub sonni qaytaruvchi funksiya yozing (3-masaladagi funksiyadan foydalaning).
Misol: next_prime(14) → 17

Bir nechta natija va o'zgaruvchan argumentlar

11. Python'da butun son o'zgarmas (immutable) bo'lgani uchun funksiya tashqaridagi o'zgaruvchini to'g'ridan-to'g'ri o'zgartira olmaydi. Ikki son a, b ni qabul qilib, ularni almashtirilgan holda kortej sifatida qaytaruvchi swap funksiyasini yozing (a, b = swap(a, b)). Natijani a, b = b, a yozuvi bilan solishtiring.
Misol: a = 3, b = 8 → chaqiruvdan keyin a = 8, b = 3

12. Ikki son a, b ni qabul qilib, ularning yig'indisi va ko'paytmasini ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing.
Misol: sum_prod(3, 4) → 7, 12

13. Butun son n ni qabul qilib, uning eng kichik va eng katta bo'luvchisini (1 va o'zidan tashqari) ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing.
Misol: min_max_divisor(36) → 2, 18

14. Kvadrat tenglama koeffitsientlari A, B, C ni qabul qilib, diskriminantni, ildizlar sonini va (mavjud bo'lsa) ildizlarni qaytaruvchi funksiya yozing.
Misol: A = 1, B = -3, C = 2 → D = 1, ildizlar soni 2, x1 = 1, x2 = 2

15. Ikki son a, b ni qabul qilib, ularning EKUB va EKUKini ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing.
Misol: gcd_lcm(12, 18) → 6, 36

16. Uch elementli ro'yxat [A, B, C] ni qabul qilib, uning elementlarini joyida o'sish tartibida joylashtiruvchi funksiya yozing (funksiya hech narsa qaytarmasin, natija shu ro'yxatning o'zida bo'lsin; sort() ishlatmang).
Misol: A = 5, B = 2, C = 9 → chaqiruvdan keyin A = 2, B = 5, C = 9

17. Kasrning surati va maxrajini [num, den] ro'yxati ko'rinishida qabul qilib, kasrni joyida qisqartiruvchi funksiya yozing (maxraj manfiy bo'lsa, ishorani suratga o'tkazing).
Misol: num = 6, den = -8 → chaqiruvdan keyin num = -3, den = 4

Raqamlar va sonlar bilan ishlovchi funksiyalar

18. Natural son n ni qabul qilib, uning birinchi (eng chapdagi) raqamini qaytaruvchi funksiya yozing.
Misol: first_digit(7345) → 7

19. Natural son n va raqam d ni qabul qilib, d raqami n da necha marta uchrashini qaytaruvchi funksiya yozing.
Misol: count(121321, 1) → 3

20. Natural sonlar n va k ni qabul qilib, n ning oxirgi k ta raqamini o'chirgandan keyin hosil bo'lgan sonni qaytaruvchi funksiya yozing (k raqamlar sonidan katta yoki teng bo'lsa, 0 qaytarilsin).
Misol: cut(12345, 2) → 123; cut(12345, 5) → 0

21. Natural son n ni qabul qilib, uning tub ko'paytuvchilari yig'indisini (takrorlanishlari bilan) qaytaruvchi funksiya yozing (masalan 12 = 2·2·3 → 7).
Misol: prime_sum(12) → 7

22. Natural sonlar K va N (N > 1) ni qabul qilib, K soni N ning biror butun darajasiga teng ekanligini (True/False) qaytaruvchi is_power(K, N) funksiyasini yozing.
Misol: is_power(81, 3) → True (3⁴); is_power(50, 3) → False

23. Natural son n ni qabul qilib, uning raqamlari chapdan o'ngga qat'iy o'sish tartibida joylashganligini qaytaruvchi funksiya yozing.
Misol: is_increasing(1358) → True; is_increasing(1338) → False

24. Ikki natural son a va b ni qabul qilib, ular bir xil raqamlardan tashkil topganligini (masalan 1223 va 3212) qaytaruvchi funksiya yozing (19-masaladagi funksiyadan foydalaning).
Misol: same_digits(1223, 3212) → True; same_digits(123, 124) → False

25. Ikki natural son a, b ni qabul qilib, ular do'st sonlar ekanligini (har birining xos bo'luvchilari yig'indisi ikkinchisiga teng, masalan 220 va 284) qaytaruvchi funksiya yozing.
Misol: amicable(220, 284) → True; amicable(220, 285) → False

26. Natural son n ni qabul qilib, uning bo'luvchilari soni va bo'luvchilari yig'indisini ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing.
Misol: divisors(28) → 6, 56

27. Ikki butun son a, b ni qabul qilib, ular orasidagi barcha sonlar yig'indisi va ko'paytmasini ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing.
Misol: sum_prod(3, 6) → 18, 360

Funksiyalarni birgalikda ishlatish

28. Natural son n ni qabul qilib, uning raqamlarini teskari tartibda yozishdan hosil bo'lgan sonni qaytaruvchi funksiya yozing. Undan foydalanib, n palindrom son ekanligini tekshiruvchi funksiya yozing.
Misol: reverse(1234) → 4321; is_palindrome(121) → True; is_palindrome(123) → False

29. 7-masaladagi funksiyadan foydalanib, natural son n ning raqamli ildizini qaytaruvchi funksiya yozing (raqamlar yig'indisi bir xonali son qolguncha qayta-qayta hisoblanadi, masalan 9875 → 29 → 11 → 2).
Misol: digital_root(9875) → 2

30. Haqiqiy son x ni qabul qilib, uning ishorasini (−1, 0 yoki 1) qaytaruvchi Sign(x) funksiyasini yozing. Undan foydalanib \(\operatorname{Sign}(A)\cdot B + \operatorname{Sign}(B)\cdot A\) ifodaning qiymatini hisoblang.
Misol: Sign(-5) → -1; A = 3, B = -4 → -7

31. Yil qabul qilib, uning kabisa yili ekanligini qaytaruvchi is_leap funksiyasini yozing. Undan foydalanib, oy raqami va yilni qabul qilib, shu oydagi kunlar sonini qaytaruvchi funksiya yozing.
Misol: is_leap(2024) → True; days_in_month(2, 2024) → 29; days_in_month(2, 2023) → 28

32. Natural son n va sanoq sistemasi asosi b (2–9) ni qabul qilib, n ning b asosli sanoq sistemasidagi yozuvini satr sifatida qaytaruvchi funksiya yozing.
Misol: to_base(10, 2) → "1010"; to_base(100, 8) → "144"

33. Ikki natural sonning EKUBini qaytaruvchi funksiya yozing. Undan foydalanib, to'rtta natural sonning EKUBini toping.
Misol: gcd(12, 18) → 6; 12 24 36 60 → 12

34. Ikki oddiy kasr (surat va maxraj) ni qabul qilib, ularning yig'indisini qisqarmas kasr ko'rinishida (surat va maxraj) qaytaruvchi funksiya yozing (EKUB uchun alohida funksiyadan foydalaning).
Misol: 1/6 + 1/3 → 1/2; 1/2 + 1/3 → 5/6

Geometrik funksiyalar

35. Aylananing radiusi R ni qabul qilib, uning yuzasi va uzunligini ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing.
Misol: R = 3 → yuza 28.2743, uzunlik 18.8495

36. Ikki nuqta koordinatalari (x1,y1), (x2,y2) ni qabul qilib, ular orasidagi masofani qaytaruvchi funksiya yozing.
Misol: dist(1, 2, 4, 6) → 5

37. Uchburchak uchlari koordinatalarini (oltita son) qabul qilib, uning perimetri va yuzasini ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing (ichida 36-masaladagi funksiyadan foydalaning).
Misol: (0, 0), (4, 0), (0, 3) → perimetr 12, yuza 6

38. To'rtburchak tomonlari a, b ni qabul qilib, uning perimetri va yuzasini qaytaruvchi ikkita alohida funksiya yozing.
Misol: a = 3, b = 5 → perimetr 16, yuza 15

39. Kub qirrasi a ni qabul qilib, uning hajmi va to'la sirtini ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing.
Misol: a = 2 → hajm 8, to'la sirt 24

40. To'rtburchakning ikki qarama-qarshi uchi koordinatalarini qabul qilib, uning perimetri va yuzasini ikkita qaytariladigan qiymat sifatida qaytaruvchi funksiya yozing.
Misol: (1, 1) va (4, 5) → perimetr 14, yuza 12

41. Ikki vektor koordinatalarini (x1,y1), (x2,y2) qabul qilib, ularning skalyar ko'paytmasini qaytaruvchi funksiya yozing.
Misol: (1, 2) va (3, 4) → 11

42. Nuqta koordinatalari x, y ni qabul qilib, nuqta qaysi chorakda yotishini (1–4) qaytaruvchi Quarter(x, y) funksiyasini yozing (nuqta koordinata o'qida yotsa, 0 qaytarilsin).
Misol: Quarter(3, -2) → 4; Quarter(0, 5) → 0

43. Uchburchak uchlari va M nuqta koordinatalarini qabul qilib, M uchburchak ichida yotishini tekshiruvchi funksiya yozing (uchburchaklar yuzalarini solishtirish orqali; yuza uchun alohida funksiyadan foydalaning).
Misol: A(0, 0), B(4, 0), C(0, 4), M(1, 1) → True; M(5, 5) → False

44. Nuqta (x0, y0) va Ax + By + C = 0 to'g'ri chiziq koeffitsientlarini qabul qilib, nuqtadan to'g'ri chiziqqacha bo'lgan masofani qaytaruvchi funksiya yozing.
Misol: (3, 4) va 3x + 4y − 5 = 0 → 4

45. Aylana markazi (a, b), radiusi R va nuqta (x, y) ni qabul qilib, nuqta aylana ichida bo'lsa −1, aylana ustida bo'lsa 0, tashqarisida bo'lsa 1 qaytaruvchi funksiya yozing.
Misol: markaz (0, 0), R = 5: (3, 4) → 0; (1, 1) → -1; (6, 0) → 1

46. Tomonlari koordinata o'qlariga parallel ikki to'g'ri to'rtburchak (har biri qarama-qarshi ikki uchi bilan) ni qabul qilib, ularning kesishmasi yuzasini qaytaruvchi funksiya yozing (kesishmasa, 0).
Misol: (0, 0)–(4, 4) va (2, 2)–(6, 6) → 4; (0, 0)–(1, 1) va (2, 2)–(3, 3) → 0

Vaqt va sana

47. Sana (kun, oy, yil) ni qabul qilib, u sana to'g'ri (mavjud) ekanligini qaytaruvchi funksiya yozing (kabisa yilini hisobga oling).
Misol: 29.02.2024 → True; 29.02.2023 → False

48. Bir yilga tegishli ikki sana (kun, oy) va yil raqamini qabul qilib, ular orasidagi kunlar sonini qaytaruvchi funksiya yozing (31-masaladagi funksiyadan foydalaning).
Misol: (10, 2) va (5, 3), yil 2023 → 23

49. Soat, minut va soniyani qabul qilib, sutka boshidan o'tgan soniyalar sonini qaytaruvchi funksiya hamda soniyalarni soat, minut va soniyaga ajratib qaytaruvchi funksiya yozing. Ular yordamida ikki vaqt orasidagi farqni toping.
Misol: 1:02:03 → 3723 soniya; 3723 → 1, 2, 3; 10:00:00 va 12:30:15 → farq 2:30:15

50. Sana (kun, oy, yil) ni qabul qilib, keyingi kun sanasini (kun, oy, yil) qaytaruvchi funksiya yozing (31-masaladagi funksiyadan foydalaning).
Misol: 28.02.2024 → 29.02.2024; 31.12.2023 → 01.01.2024

51. Sana (kun, oy, yil) ni qabul qilib, oldingi kun sanasini (kun, oy, yil) qaytaruvchi funksiya yozing.
Misol: 01.03.2024 → 29.02.2024; 01.01.2024 → 31.12.2023

52. Sana (kun, oy, yil) ni qabul qilib, uning yilning nechanchi kuni ekanini qaytaruvchi funksiya yozing.
Misol: 01.03.2024 → 61

53. Sana (kun, oy, yil) ni qabul qilib, haftaning qaysi kuni ekanini (1 — dushanba, …, 7 — yakshanba) qaytaruvchi funksiya yozing. 2001-yil 1-yanvar dushanba bo'lganidan foydalaning (sana 2001-yildan keyin deb hisoblang).
Misol: 01.01.2024 → 1 (dushanba)

Qatorlar yordamida hisoblash

54. Haqiqiy son x va aniqlik eps ni qabul qilib, eˣ ni qator yig'indisi orqali hisoblovchi Exp1(x, eps) funksiyasini yozing. Natijani standart funksiya qiymati bilan solishtiring.
\(\displaystyle e^x = 1 + x + \dfrac{x^2}{2!} + \dfrac{x^3}{3!} + \dots\)
Misol: x = 1, eps = 0.0001 → taxminan 2.7183

55. Haqiqiy son x (|x| < 1) va aniqlik eps ni qabul qilib, ln(1 + x) ni qator yig'indisi orqali hisoblovchi Ln1(x, eps) funksiyasini yozing.
\(\displaystyle \ln(1 + x) = x - \dfrac{x^2}{2} + \dfrac{x^3}{3} - \dots\)
Misol: x = 0.5, eps = 0.0001 → taxminan 0.405

Amaliy masalalar

56. Ish haqi va soliq stavkasini qabul qilib, soliqdan keyingi maoshni qaytaruvchi funksiya yozing.
Misol: maosh 5000000, soliq 12% → 4400000

57. Harorat va o'lchov birligi kodini (1-Selsiy, 2-Farengeyt) qabul qilib, Kelvinga o'tkazuvchi funksiya yozing.
Misol: 25, 1 → 298.15; 77, 2 → 298.15

58. Natural son n (1–3999) ni qabul qilib, uning rim raqamlaridagi yozuvini satr sifatida qaytaruvchi funksiya yozing (masalan 1994 → «MCMXCIV»).
Misol: 1994 → MCMXCIV; 58 → LVIII

59. Haqiqiy son x va natural son k ni qabul qilib, x ni k ta kasr xonasigacha yaxlitlovchi funksiya yozing (tayyor yaxlitlash funksiyasidan foydalanmasdan).
Misol: round(3.14159, 2) → 3.14; round(2.675, 1) → 2.7

60. Boshlang'ich aholi soni S, yillik o'sish foizi r va yillar soni n ni qabul qilib, yakuniy aholi sonini (har yilgi o'sish oldingi natijaga qo'llanadi) qaytaruvchi funksiya yozing. Undan foydalanib, aholi ikki baravar oshishi uchun kerak bo'ladigan eng kam yillar sonini toping.
Misol: S = 1000, r = 10, n = 2 → 1210; ikki baravar bo'lish uchun 8 yil kerak