{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Topshiriqlar 3 (Funksiyalar)\n", "\n", "Quyidagi mashqlar `source/python3/functions.ipynb` mavzulari asosida tuzilgan.\n", "\n", "## 1. Funksiya va `return`\n", "\n", "1. `hello()` nomli funksiya yozing. U chaqirilganda 2 ta satr chiqarib bersin (masalan, salomlashish va dars nomi).\n", "2. `find_square(n)` funksiyasini yozing: `n` ning kvadratini `return` qilsin. 3 ta turli qiymatda sinab ko‘ring.\n", "3. `sum_to_n(n)` funksiyasi: 1 dan `n` gacha bo‘lgan sonlar yig‘indisini qaytarsin.\n", "4. `find_area_per(a, b)` funksiyasi: to‘g‘ri to‘rtburchak yuza va perimetrini **bittadan ortiq qiymat** sifatida qaytarsin (tuple). Natijani `yuza, perimetr = ...` ko‘rinishida ajrating.\n", "5. `is_prime(n)` funksiyasi: `n` tub son bo‘lsa `True`, aks holda `False` qaytarsin. 1, 2, 3, 4, 9, 79 kabi sonlarda tekshiring.\n", "\n", "## 2. Argumentlar: tartib, kalit so‘zlar, default\n", "\n", "6. `full_name(fname, lname)` funksiyasi yozing va uni 2 xil usulda chaqiring:\n", " a) oddiy tartib bilan;\n", " b) keyword argument bilan (`lname=...`).\n", "7. `power(base, exp=2)` funksiyasi yozing: `base**exp` qaytarsin.\n", " - `exp` berilmasa kvadratini qaytarsin.\n", "8. `greet(country=\"Uzbekistan\")` funksiyasi yozing: mamlakatga qarab matn chiqarsin.\n", " - 3 marta turli qiymat bilan chaqiring, 1 marta argument bermasdan chaqiring.\n", "9. (Xatoni tushunish) `nameAge(name, age)` funksiyasi berilgan bo‘lsin.\n", " a) `nameAge(\"Ali\", 20)` va `nameAge(20, \"Ali\")` ni chaqirib ko‘ring.\n", " b) Ikkinchi holatda nima uchun mantiqiy xato bo‘lishini 2–3 gap bilan izohlang.\n", "\n", "## 3. `*args`\n", "\n", "10. `my_sum(*values)` funksiyasi yozing: ixtiyoriy sondagi sonlarni yig‘ib qaytarsin.\n", " - 1 ta, 2 ta, 5 ta argument bilan sinab ko‘ring.\n", "11. `max_of(*values)` funksiyasi yozing: eng katta qiymatni qaytarsin (tayyor `max()` ishlatmasdan).\n", "12. `print_args(*args)` funksiyasi yozing: kelgan argumentlarni tartib bilan chop qilsin va `type(args)` ni ham chiqarsin.\n", "\n", "## 4. `**kwargs`\n", "\n", "13. `print_profile(**kwargs)` funksiyasi yozing: har bir `kalit: qiymat` ni alohida satrda chiqarsin.\n", "14. `build_user(**kwargs)` funksiyasi yozing: kelgan `kwargs` ni aynan `dict` sifatida qaytarsin.\n", "15. (Aralash) `register(name, *skills, **info)` funksiyasi yozing.\n", " - `name` majburiy.\n", " - `skills` (masalan, `\"python\"`, `\"math\"`) ro‘yxat qilib chiqsin.\n", " - `info` (masalan, `age=20, city='Toshkent'`) lug‘at qilib chiqsin.\n", "\n", "## 5. Hujjat qatori (docstring)\n", "\n", "16. `evenOdd(x)` funksiyasini yozing va unga docstring qo‘shing:\n", " - docstring ichida `x` nimani anglatishi va qaytadigan natija/chiqaradigan matn yozilsin.\n", "17. `evenOdd.__doc__` ni chop eting.\n", "18. (Xato topish) Funksiyani argument bermasdan chaqirsangiz (`evenOdd()`), nima bo‘ladi? Nega? To‘g‘ri chaqirish misolini yozing.\n", "\n", "## 6. Parametr cheklovlari: `/` va `*` (positional-only / keyword-only)\n", "\n", "19. Positional-only parametrlar:\n", " - `def f(a, b, /, c=5): ...` ko‘rinishida funksiya yozing.\n", " - `f(1, 2, c=10)` ishlasin.\n", " - `f(a=1, b=2, c=10)` chaqiruv nega ishlamasligini izohlang.\n", "20. Keyword-only parametrlar:\n", " - `def g(a, b, *, c=5): ...` ko‘rinishida funksiya yozing.\n", " - `g(1, 2, c=10)` ishlasin.\n", " - `g(1, 2, 10)` nega xato berishini izohlang.\n", "\n", "## 7. Kichik amaliy masalalar\n", "\n", "21. `normalize_text(text, lower=True)` funksiyasi:\n", " - `lower=True` bo‘lsa matnni kichik harflarga o‘tkazsin.\n", " - bo‘sh joylarni ikki tomondan `.strip()` qilsin.\n", "22. `count_vowels(text)` funksiyasi: `text` ichidagi unli harflar sonini qaytarsin (o‘zbek lotin unli harflari bilan).\n", "23. `safe_div(a, b, default=None)` funksiyasi:\n", " - agar `b==0` bo‘lsa `default` ni qaytarsin;\n", " - aks holda `a/b` ni qaytarsin.\n", "24. `stats(nums)` funksiyasi: ro‘yxat uchun `(min, max, mean)` qaytarsin (`mean` ni o‘zingiz hisoblang).\n", "\n", "## 8. Ixtiyoriy (qiyinroq)\n", "\n", "25. `apply(func, values)` funksiyasi yozing: `values` ro‘yxatidagi har bir elementga `func` ni qo‘llab yangi ro‘yxat qaytarsin.\n", " - `apply(find_square, [1,2,3])` kabi sinab ko‘ring.\n", "26. `make_multiplier(k)` funksiyasi yozing: u ichida `mult(x)` degan ichki funksiya qaytarsin va `mult(x)=k*x` bo‘lsin.\n", " - `times2 = make_multiplier(2)` va `times2(7)` ni tekshiring.\n" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 5 }