{ "cells": [ { "cell_type": "raw", "metadata": { "vscode": { "languageId": "raw" } }, "source": [ "---\n", "title: \"مسألة البحث في التوثيق\"\n", "og:title: docs_random_problem\n", "toc: true\n", "format:\n", " html: default\n", "---\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "تمهيدًا: ستقرأ صفحة مكتبة `random` في مرجع بايثون الرسمي وتستخرج منها الدوال التي تحتاجها. اكتب حلّك في الخلايا البرمجية أدناه.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[تحميل الدفتر](https://raw.githubusercontent.com/HassanAlgoz/python/main/book/chapters/ch6-text-files/exercise_6a.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## أهداف التمرين\n", "\n", "- ممارسة قراءة **مرجع المكتبة** الأصلي لبايثون\n", "- التعرّف على دوال مكتبة `random` (أعداد صحيحة، تسلسلات، بذرة `seed`)\n", "- تركيب دوال تدمج أنواعًا مختلفة من القيم (نصوص، أرقام، رموز)\n", "- فهم أن التوليد «عشوائي» في الحاسوب غالبًا **شبه عشوائي** (pseudo-random)\n", "\n", "مكتبة `random` مدمجة في بايثون؛ يكفي `import random` بعد تفعيل بيئتك.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "import random" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "بينما تحل المسائل التالية، ستحتاج إلى البحث في صفحة المكتبة. جرب أن تضع في محرك البحث العبارة:\n", "\n", "[`python 3 docs random`](https://www.google.com/search?q=python+3+docs+random&oq=python+3+docs+random)\n", "\n", "وستظهر في النتائج الأولى صفحة المكتبة في مراجع بايثون:\n", "\n", "![صفحة مكتبة العشوائية](assets/python3-docs-random.png){width=\"100%\"}\n", "\n", "لا حاجة لقراءة الصفحة كاملةً في أول مرة؛ ركّز على الأقسام التالية عند الحاجة:\n", "\n", "1. الإجراء: `random.seed` الذي تجده تحت قسم: Bookkeeping functions بالنظر في قائمة المحتويات في الجانب الأيسر من الصفحة\n", "2. القسم: Functions for integers\n", "3. القسم: Functions for sequences\n", "4. القسم: Notes on Reproducibility\n", "5. الأمثلة: Examples" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## توليد كلمة مرور\n", "\n", "اكتب إجراءً يقبل المعاملات التالية ليُنتِج **كلمة مرور** (Password):\n", "\n", "- الطول\n", "- الأحرف الصغيرة\n", "- الأحرف الكبيرة\n", "- الأرقام\n", "- الحد الأدنى من الأرقام\n", "- الرموز: `!@#$%^&*`\n", "- الحد الأدنى من الرموز\n", "\n", "```python\n", "def generate_password(length: int, ...) -> str:\n", " ...\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "pass # اكتب هنا\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## توليد عبارة مرور\n", "\n", "اكتب إجراءً آخر يقبل المعاملات التالية ليُنتِج [**عبارة مرور** (Passphrase)](https://proton.me/blog/what-is-passphrase)، بحيث تكون سهلة الحفظ على البشر:\n", "\n", "- عدد الكلمات\n", "- فاصل الكلمات\n", "- تكبير الحرف الأول من كل كلمة\n", "- تضمين رقم\n", "\n", "```python\n", "def generate_passphrase(...):\n", " ...\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "pass # اكتب هنا\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 4 }