From 9521d51ed67f47cd9829e35503aabd8ead24cb76 Mon Sep 17 00:00:00 2001 From: baloola Date: Wed, 1 Jan 2025 00:54:00 +0100 Subject: [PATCH] loops lesson --- lessons/beginners-en/colabturtle/index.md | 170 +++++++++--------- lessons/beginners-en/colabturtle/info.yml | 3 +- lessons/beginners-en/while/index.md | 46 +++-- lessons/beginners-en/while/info.yml | 1 + .../pyladies-en-vienna-2024-spring/info.yml | 26 +-- 5 files changed, 124 insertions(+), 122 deletions(-) diff --git a/lessons/beginners-en/colabturtle/index.md b/lessons/beginners-en/colabturtle/index.md index a1cb759b7a..46fff8ab87 100644 --- a/lessons/beginners-en/colabturtle/index.md +++ b/lessons/beginners-en/colabturtle/index.md @@ -1,55 +1,57 @@ # 🐍 🐢 -In this lesson, we will be drawing with the [ColabTurtle](https://github.com/tolgaatam/ColabTurtle) module a lot. +في هذا الدرس ، سنرسم كثيرًا باستخدام مكتبة [ColabTurtle](https://github.com/tolgaatam/ColabTurtle). > [note] -> In the older versions of the materials, we have used the turtle module -> which is available in for every Python installation -> but more and more Mac users started to have unfixable issues with it -> so we have decided to switch to ColabTurtle that we also use for the homework -> for this lesson. +> في الإصدارات الأقدم من المواد ، لقد استخدمنا مكتبة turtle +> وهي متوفرة في كل تثبيت لبايثون +> ولكن بدأ المزيد والمزيد من مستخدمي Mac في مواجهة مشكلات غير قابلة للإصلاح معها +> لذلك قررنا التبديل إلى ColabTurtle الذي نستخدمه أيضًا للواجبات المنزلية +> لهذا الدرس. -Start the Google Colab with a newly created notebook and install and initialize the ColabTurtle in a following way. +ابدأ تشغيل Google Colab باستخدام دفتر ملاحظات تم إنشاؤه حديثًا وقم بتثبيت وتشغيل ColabTurtle بالطريقة التالية. -First run this line in a first cell: +أولاً ، قم بتشغيل هذا السطر في الخلية الأولى: ```console !pip3 install ColabTurtle ``` -This will install the ColabTurtle module inside your colab environment for this lesson. -You need to do it once in every colab notebook, where you want to use it. You also need to run this cell if you close and open this colab notebook again. +سيؤدي هذا إلى تثبيت مكتبة ColabTurtle داخل بيئة colab الخاصة بك لهذا الدرس. +تحتاج إلى القيام بذلك مرة واحدة في كل دفتر ملاحظات colab ، حيث تريد استخدامه. تحتاج أيضًا إلى تشغيل هذه الخلية إذا قمت بإغلاق دفتر ملاحظات colab هذا وفتحه مرة أخرى. + +عندما يتم ذلك ، يمكنك استيراد جميع الدالات من وحدة ColabTurtle باستخدام هذا: -When this is done, you can import all functions from ColabTurtle module using this: ```python from ColabTurtle.Turtle import initializeTurtle, forward ``` -Don't worry, we will talk about the possible ColabTurtle functions throughout the lesson. +لا تقلق ، سنناقش دوال ColabTurtle المحتملة طوال الدرس. -Before you start using any turtle commands in a new cell, you need to initialize it by typing this: +قبل البدء في استخدام أي أوامر السلحفاة في خلية جديدة ، تحتاج إلى تهيئتها عن طريق كتابة هذا: ```python initializeTurtle() ``` -Initialization means that a fresh canvas window is created below the current cell, turtle image is rotated with a head north and you can start drawing! +التهيئة تعني أنه يتم إنشاء نافذة جديدة أسفل الخلية الحالية ، ويتم تدوير صورة السلحفاة مع رأسها شمالًا ويمكنك البدء في الرسم! + +جرب تحريك السلحفاة للأمام بمقدار 50 وحدة (بكسل الشاشة) عن طريق تشغيل ما يلي في خلية جديدة: -Try moving the turtle forward by 50 units (screen pixels) by running following in a new cell: ```python forward(50) ``` -You can see that a new canvas is drawn below the current cell and the turtle is leaving a drawn line behind itself with length 50. +يمكنك أن ترى أنه تم رسم نافذة (canvas) جديد أسفل الخلية الحالية وأن السلحفاة تترك خطًا مرسومًا خلفها بطول 50. -## Rotation +## الدوران (Rotation) -In order to clear the canvas for next drawing, you need to call the `initializeTurtle()` again. +من أجل مسح نافذة (canvas) الرسم للرسم التالي ، تحتاج إلى استدعاء `initializeTurtle()` مرة أخرى. -The turtle can rotate and crawl across the "paper". +يمكن للسلحفاة الدوران والزحف عبر "الورقة". ```python from ColabTurtle.Turtle import forward, left, right, initializeTurtle @@ -61,18 +63,19 @@ forward(50) right(60) forward(50) ``` +## تكرار (Repetition) -This is already really powerful way how to draw a lot of beautiful pictures. +هذه بالفعل طريقة قوية للغاية لرسم العديد من الصور الجميلة. -For the further steps you can freely consult the ColabTurtle API description (what each available function does and what parameters does each function have) on [https://github.com/tolgaatam/ColabTurtle#api](https://github.com/tolgaatam/ColabTurtle?tab=readme-ov-file#api). +لمزيد من الخطوات ، يمكنك الرجوع بحرية إلى وصف واجهة برمجة تطبيقات ColabTurtle (ما تفعله كل وظيفة متاحة وما هي المعلمات التي تحتوي عليها كل دالة) على [https://github.com/tolgaatam/ColabTurtle#api](https://github.com/tolgaatam/ColabTurtle?tab=readme-ov-file#api). -### Square +### مربع (Square) -Draw a square. +ارسم مربعًا. ![Turtle square](static/turtle-square.png) -A square has four equal straight sides and four 90° angles. +المربع له أربعة جوانب مستقيمة متساوية وأربع زوايا قائمة 90 درجة. {% filter solution %} ```python @@ -89,11 +92,11 @@ left(90) ``` {% endfilter %} -### Rectangle +### مستطيل (Rectangle) -Draw a rectangle. +ارسم مستطيلًا. -Try to make it so that the turtle will "look" to the top in the end (like it was in the beginning). +حاول أن تجعل السلحفاة "تنظر" إلى الأعلى في النهاية (كما كانت في البداية). ![Turtle rectangle](static/turtle-rect.png) @@ -113,9 +116,9 @@ left(90) ``` {% endfilter %} -### Three squares +### ثلاثة مربعات (Three squares) -Now draw three squares, each rotated by 20° from the previous one!. +الآن ارسم ثلاثة مربعات ، كل منها يدور بزاوية 20 درجة عن المربع السابق\! ![Three turtle squares](static/turtle-squares.png) @@ -158,16 +161,15 @@ left(90) ``` {% endfilter %} -### Can we write it better? +### هل يمكننا تحسين ذلك؟ (Can we write it better?) -So much code! There has to be a way how to simplify it. +هناك الكثير من الكود! يجب أن يكون هناك طريقة لتبسيطه. -There is. -Now we will learn the command `for`. +الآن سوف نتعلم الأمر `for`. -## Repetition +## التكرار (Repetition) -What does the following code do? +ماذا يفعل الكود التالي؟ ```python for number in range(5): @@ -177,29 +179,29 @@ for greeting in 'Ahoj', 'Hello', 'Hola', 'Hei', 'Hallo': print(greeting + '!') ``` -What does the command `for` do? +ماذا يفعل الأمر `for`؟ {% filter solution %} -The command `for` repeats part of a program. -It repeats commands that are indented after `for`. -It's the same as with `if` - it applies only to -commands that are indented below. +يقوم الأمر `for` بتكرار جزء من البرنامج. +إنه يكرر الأوامر التي يتم جمعها (باستعمال مسافات البداية indnent ) بعد `for`. +إنه مشابه لـ `if` - فهو ينطبق فقط على +الأوامر التي يتم جمعها أدناه. -The command `for x in range(n):` repeats the commands below n times -and it increments the variable `x` gradually from 0 to n-1. +يقوم الأمر `for x in range(n):` بتكرار الأوامر أدناه n مرات +يزيد تدريجياً من قيمة المتغير `x` من 0 إلى n-1. -The command `for x in a, b, c, d, ...:` repeats the commands below; -it changes the variable `x` gradually to a, b, -c d, ... +يقوم الأمر `for x in a, b, c, d, ...:` بتكرار الأوامر أدناه ؛ +يغير المتغير `x` تدريجياً إلى a ، b ، +c d ، ... -In computer programming, a loop is a sequence of instructions that is continually repeated until a condition is reached. -Very powerful concept allowing you to significantly reduce duplication of commands. +في برمجة الكمبيوتر ، الحلقة (loop) هي تسلسل من التعليمات التي يتم تكرارها باستمرار حتى يتم الوصول إلى شرط معين. +مفهوم قوي جدًا يسمح لك بتقليل تكرار الأوامر بشكل كبير. {% endfilter %} -### Overwriting variables +### إعادة كتابة المتغيرات (Overwriting variables) -What does the following program do? +ماذا يفعل البرنامج التالي؟ ```python sum = 0 @@ -215,23 +217,23 @@ print('loop ended, sum is', sum) ``` {% filter solution %} -The command `sum = sum + number` calculates the value of -`sum + number`, adds the current number to the sum, -and stores the result in the variable `sum`. -The new value of `sum` will be used in the next loop. +يقوم الأمر `sum = sum + number` بحساب قيمة +`sum + number` ، ويضيف الرقم الحالي إلى المجموع ، +ويخزن النتيجة في المتغير `sum`. +سيتم استخدام القيمة الجديدة لـ `sum` في الحلقة التالية. -In the beginning the sum is 0, and in the end the sum of -our numbers will be printed. +في البداية يكون المجموع 0 ، وفي النهاية سيتم طباعة مجموع +أرقامنا. {% endfilter %} -### Square +### مربع (Square) -Back to drawing! This time we will use loops. +عودة إلى الرسم! هذه المرة سنستخدم الحلقات (loops). -Draw a square. +ارسم مربعًا. -Use `forward` only twice, once in the import -and once as function. +استخدم `forward` مرتين فقط ، مرة واحدة في الاستيراد +ومرة ​​واحدة كدالة. ![Turtle square](static/turtle-square.png) @@ -246,12 +248,12 @@ for i in range(4): ``` {% endfilter %} -### Discontinuous line +### خط متقطع (Discontinuous line) -The functions `penup` and `pendown` from the `ColabTurtle` -module tell the turtle to stop/start drawing. +الدالتان `penup` و `pendown` من مكتبة `ColabTurtle` +تخبر السلحفاة بالتوقف / البدء في الرسم. -Try to draw a discontinuous line. +حاول رسم خط متقطع. ![Turtle and discontinuous line](static/turtle-dashed.png) @@ -268,15 +270,15 @@ for i in range(10): ``` {% endfilter %} -Now try to make it so that the lines that are drawn become -gradually bigger. +الآن حاول أن تجعل الخطوط التي يتم رسمها تصبح أكبر تدريجيًا. -![Turtle and discontinuous line]](static/turtle-dashed2.png) +![Turtle and discontinuous line](static/turtle-dashed2.png) -> [note] Help +> [note] مساعدة > -> What exactly does the command `for` do? -> Can we use the variable that it sets up? +> ماذا يفعل الأمر `for` بالضبط؟ +> هل يمكننا استخدام المتغير الذي يصنعه؟ + {% filter solution %} ```python @@ -293,20 +295,20 @@ for i in range(20): ``` {% endfilter %} ->[note] Loop variable Naming ->Always use a meaningful loop variable name, like **for index_tab_browser in range(3, 18): close_tab_in_browser(index_tab_browser) ** not just i, j, x, y etc. ->When using meaningful names: -> - the code is more understandable to colleagues reading your code, -> - it's easier to find errors in the loop logic -> - text searches for the variable name return relevant pieces of code operating on the same data are more reliable +>[note] تسمية متغير الحلقة (Loop variable Naming) +> استخدم دائمًا اسم متغير حلقة معنيًا ، مثل **for index_tab_browser in range(3, 18): close_tab_in_browser(index_tab_browser) ** وليس فقط i ، j ، x ، y وما إلى ذلك. +> عند استخدام أسماء ذات معنى: +> - يكون الكود أكثر قابلية للفهم من قبل الزملاء الذين يقرأون كودك ، +> - من الأسهل العثور على أخطاء في منطق الحلقة +> - عمليات البحث النصي عن اسم المتغير تعيد أجزاءًا ذات صلة من التعليمات البرمجية التي تعمل على نفس البيانات بشكل أكثر موثوقية > -> There is one exception - when it's a single-level loop and the variable has no meaning other than "the number of times I've been through this loop", in which case `i` is usually be used. +> هناك استثناء واحد - عندما تكون هذه حلقة أحادية المستوى ولا معنى للمتغير بخلاف "عدد المرات التي مررت بها خلال هذه الحلقة" ، وفي هذه الحالة يتم استخدام `i` عادةً. -### Three squares +### ثلاثة مربعات (Three squares) -Finally, draw three squares, each rotated by 20°. -Now you know how to write it in a simple way: repeat the code -by using `for`, do not copy the same code three times. +أخيرًا ، ارسم ثلاثة مربعات ، كل منها يدور بزاوية 20 درجة. +الآن أنت تعرف كيفية كتابتها بطريقة بسيطة: كرر الكود +باستخدام `for` ، لا تكرر نفس الكود ثلاث مرات. ![Three turtle squares](static/turtle-squares.png) @@ -323,12 +325,12 @@ for i in range(3): {% endfilter %} -## Extra tasks +## المهام الإضافية (Extra tasks) -When you are done, try to draw stairs: +عندما تنتهي ، حاول رسم السلالم: ![Turtle stairs](static/turtle-stairs.png) -When you are also done with the stairs, try to draw 7 hexagons: +عندما تنتهي أيضًا من السلالم ، حاول رسم 7 سداسيات: ![Turtle hexagons](static/turtle-hexagons.png) diff --git a/lessons/beginners-en/colabturtle/info.yml b/lessons/beginners-en/colabturtle/info.yml index a93208a25c..afebf80659 100644 --- a/lessons/beginners-en/colabturtle/info.yml +++ b/lessons/beginners-en/colabturtle/info.yml @@ -1,5 +1,6 @@ -title: Colab Turtle and loops +title: الحلقات (Loops) و Colab Turtle style: md attribution: +- Translated by Mussab Abdalla - Written by Lubomir Dolezal, 2024 for [PyLadies Vienna]. license: cc-by-sa-40 diff --git a/lessons/beginners-en/while/index.md b/lessons/beginners-en/while/index.md index 19097f5241..d5fd8fb971 100644 --- a/lessons/beginners-en/while/index.md +++ b/lessons/beginners-en/while/index.md @@ -1,8 +1,7 @@ # While -In addition to the `for` loop, we have a second type of loop, namely, the `while` loop. -Unlike `for`, where we *know the number of repetitions* in advance, `while` is used when the -loop depends on some condition. The loop body is repeated until the condition is met. +بالإضافة إلى حلقة `for` ، لدينا نوع ثانٍ من الحلقات ، وهو حلقة `while`. +على عكس `for` ، حيث *نعرف عدد التكرارات* مسبقًا ، يتم استخدام `while` عندما يعتمد ذلك على بعض الشروط. يتم تكرار جسم (ما بداخل) الحلقة حتى يتم استيفاء الشرط. ```python response = input('Say aaa!') @@ -11,8 +10,8 @@ while response != 'aaa': response = input('Say aaa!') ``` -But pay attention! It is very easy to write a loop with a condition that is always true. -This kind of loop will be repeated forever. +ولكن انتبه! من السهل جدًا كتابة حلقة بشرط صحيح دائمًا. +سيؤدي هذا النوع من الحلقات إلى التكرار إلى الأبد. ```python from random import randrange @@ -22,15 +21,16 @@ while True: print('(Wait for the computer to get tired…)') ``` -The program can be interrupted with +ولكن انتبه! من السهل جدًا كتابة حلقة بشرط صحيح دائمًا. +سيؤدي هذا النوع من الحلقات إلى التكرار إلى الأبد.**يمكن مقاطعة البرنامج باستخدام** Ctrl+C. > [note] -> This shortcut will raise an error -> and the program will end - like after every error. +> سيؤدي هذا الاختصار إلى إثارة خطأ +> وسينتهي البرنامج - مثل بعد كل خطأ. -Finally, we have the `break` command, that will signal the process to ‘jump out’ of the loop, -and commands after the loop will be performed immediately. +أخيرًا ، لدينا الأمر `break` ، والذي سيُرسل إشارة إلى العملية "للخروج" من الحلقة ، +وسيتم تنفيذ الأوامر بعد الحلقة على الفور. ```python @@ -45,8 +45,8 @@ while True: print('Yay and it did not even hurt') ``` -The break command can only be used inside a loop (`while` or `for`), -and if we have nested loops, it will only jump out of the one where it is used. +الأمر `break` يمكن استخدامه فقط داخل حلقة (`while` أو `for`) ، +وإذا كان لدينا حلقات متداخلة ، فسوف يخرج فقط من الحلقة التي تم استخدامها فيها. ```python for i in range(10): # Outer loop @@ -56,22 +56,20 @@ for i in range(10): # Outer loop break print() ``` -`Break` will jump out of the inner loop and back to the outer loop -when i is less or equal than j. +`سيؤدي الأمر `break` إلى الخروج من الحلقة الداخلية والعودة إلى الحلقة الخارجية عندما يكون i أصغر من أو يساوي j. -Back to `while`! -Can you write the following program? +لنعد للحديث عن `while` مجددا! -## 21 +هل يمكنك كتابة البرنامج التالي؟ -* You start with 0 points -* In each round, the computer shows how many points you have, and asks if you want to continue -* If you answer ‘No’, the game ends. -* If you answer ‘Yes’, the computer ‘turns a card’ (randomly selects a number from 2 to 10) - and adds its value to the current points. -* If you go over 21, you lose -* The aim of the game is to get as many points as possible, but you win only if you get 21. +## 21 +* تبدأ برصيد 0 نقطة +* في كل جولة ، يعرض الكمبيوتر عدد النقاط التي لديك ، ويسأل عما إذا كنت تريد المتابعة +* إذا أجبت "لا" ، تنتهي اللعبة. +* إذا أجبت "نعم" ، فإن الكمبيوتر "يقلب بطاقة" (يختار رقمًا عشوائيًا من 2 إلى 10) ويضيف قيمته إلى النقاط الحالية. +* إذا تجاوزت 21 ، تخسر +* الهدف من اللعبة هو الحصول على أكبر عدد ممكن من النقاط ، لكنك تفوز فقط إذا حصلت على 21. {% filter solution %} ```python diff --git a/lessons/beginners-en/while/info.yml b/lessons/beginners-en/while/info.yml index 40d3a22dcc..37e4a8648d 100644 --- a/lessons/beginners-en/while/info.yml +++ b/lessons/beginners-en/while/info.yml @@ -1,6 +1,7 @@ title: While style: md attribution: +- Translated by Mussab Abdalla - Translated by Alexandru Dumitru - | Originally written by Petr Viktorin, 2014-2017 for [PyLadies CZ]. diff --git a/runs/2024/pyladies-en-vienna-2024-spring/info.yml b/runs/2024/pyladies-en-vienna-2024-spring/info.yml index ef5afc447c..86f05c4a26 100644 --- a/runs/2024/pyladies-en-vienna-2024-spring/info.yml +++ b/runs/2024/pyladies-en-vienna-2024-spring/info.yml @@ -99,21 +99,21 @@ plan: url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc.pdf type: cheatsheet - title: Homework - url: https://docs.google.com/document/d/1cTDxe2Wy1zrS_mXwxheUT4iOZo26-8Y2VqiBLSYOiYQ + url: https://docs.google.com/document/d/1ZX-fsMmQzQBvgHDRM9EuRk4TaetT5kP2fWXV5HuaXZ4 type: homework -# - title: Loops, for and while -# date: 2024-04-09 -# slug: strings -# materials: -# - lesson: beginners-en/colabturtle -# - lesson: beginners-en/while -# - title: If/While cheatsheet -# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_if_while.pdf -# type: cheatsheet -# - title: Homework -# url: https://docs.google.com/document/d/1FO4J7l2oKN_vdrXVgvbrKOpJEx1Vu3f6gLnZe-tKIM4/edit -# type: homework + - title: الحلقات (Loops) , (for و while) + date: 2025-01-12 + slug: strings + materials: + - lesson: beginners-en/colabturtle + - lesson: beginners-en/while + - title: If/While cheatsheet + url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_if_while.pdf + type: cheatsheet + - title: Homework + url: https://docs.google.com/document/d/1lsA28-Np3AyLuR6U-prwGijm5b3vwGWczjCuD0EVDQM/edit + type: homework # - title: Strings, Custom functions # date: 2024-04-16