|
بايثون – פיתון – python
( ) الحلقة
التكرارية - while
(ج) شرط
الحلقة حسب
قيمة مُدخلة
شرط
الحلقة حسب
قيمة مُدخلة
حلقة while
في
أغلب الأحيان نحن نحتاج إلى استعمال حلقة لا نعرف
مُسبقًا عدد
المرات التي
يتم تنفيذها.
أمثلة:
·
إدخال
قائمة
بأسماء
الطلاب التي
غير معروف
طولها.
·
إدخال
قائمة
أسعار حتى يتم
إدخال سعر غير
منطقي (رقم
سالب).
·
إدخال
مبالغ من
التبرعات حتى
نصل إلى مبلغ
معين (مثلا 10,000 شيكل).
في هذه
الحالات،
نستخدم حلقة while - طالما
يتم تحقق
الشرط.
مثال: نريد
من السلحفاة
أن تتحرك خطوة
واحدة حتى
تقترب من
الخس.
هل
السلحفاة
بعيدة عن
الخس؟ نعم
- تحرك خطوة
واحدة. |
طالما
السلحفاة
بعيدة عن
الخس: تحرك
خطوة واحدة. |
مبنى
الأمر:
while
شرط التنفيذ
: الأوامر
البرمجية
للتنفيذ |
while: معناها
طالما، مادام، כול-עוד
طالما شرط الحلقة
يتحقق (True) استمر
بتنفيذ
الحلقة.
الحلقة
تتوقف (لا
تُنفذ)
عندما شرط
الحلقة قيمته False.
|
سؤال1 (מצגת, רחל)
اكتب
مقطع كود الذي
يقوم بإدخال
أعداداً
موجبة أو صفر.
عملية إدخال
الأعداد
تستمر حتى يتم
إدخال عدداً
سالباً.
عليك
طباعة
الأعداد
الموجبة،
والصفر، التي تم
إدخالها.
n = int(input('Enter number')) while (n >= 0): print (n) n = int(input('Enter number')) print ('End loop') |
(1) (2) (2.1) (2.2) (3) |
(1) نُدخل
عدداً.
(2) إذا
العدد يُحقق
الشرط، عندها
ننفذ كود الحلقة
(2.1) نطبع
العدد.
(2.2) نقرأ
عدداً جديداً.
نفحص مرة
أخرى شرط
الحلقةً.
(3) نصل إلى
هذا الأمر فقط
بعد أن لا
يتحقق شرط الحلقة
|
سؤال2 (מצגת, רחל)
اكتب
مقطع كود يطلب
من المستخدم
إدخال عدداً صحيحاً.
إذا لم
يكن العدد
المُدخل
مكونًا من
ثلاثة منازل،
سوف يُطلب من
المستخدم
إعادة إدخال
العدد مرة
أخرى.
إرشاد:
شرط الحلقة: طالما
العدد ليس من 3
منازل استمر
بالتكرار
num = int(input('Enter number')) while num < 100 or num > 999: num = int(input('Enter number')) print ('End loop') |
|
سؤال3 (מצגת, רחל)
أمامك مقطع
برمجي، الذي يُدخِل
من المستخدم
أعداداً
صحيحة حتى يتم
إدخال 3 أعداد
زوجية بالضبط.
أكمل الكود:
count = 0 while count < 3: n = int(input('Enter
number')) if n % 2 == 0: count += 1 |
(1) (2) (2.1) (2.2) (2.3) |
(1) count – عدد
المرات التي
أدخلنا فيها
عدداً زوجياً.
قبل
تنفيذ
الحلقة، نقوم
بتفريغ count – لم نقرأ
عدد زوجي.
(2) الحلقة
تُنفذ طالما
ما أدخلنا أقل
من 3 أعداد زوجية.
(2.1) نُدخل
عدداً.
(2.2) نفحص هل
العدد الذي
أدخلناه
يُنفذ الشرط
(هل هو عدد
زوجي).
(2.3) إذا نعم،
نُكبر متغير
الحلقة (count)
بــ 1.
|
سؤال4
اكتب
برنامج يقوم
بإدخال أسماء
اصدقائك،
ويقوم
بإلقاء
التحية welcome على كل واحد
مع ذكر اسمه.
عدد
اصدقائك غير
محدد.
البرنامج
ينتهي عند
إدخال الاسم 'end'. في النهاية
يطبع thank you""
مثال عند
التشغيل: your
name= 'Anat' welcome
Anat your
name= 'end' thank
you |
name = input("your
name=") while name !=
'end': print ("welcome ",
name) name = input("your
name=") print ("thank you") |
|
سؤال5
اكتب
برنامج يقوم
بمحاكاة لعبة
تخمين لعدد تم
اختياره في
البرنامج.
في كل
محاولة أدخل
عدد صحيح بين 1 و 10.
عندا
ادخال عدد غير
صحيح – تظهر
الرسال "خطأ".
البرنامج
ينتهي إذا
استطعت أن
تعرف وتخمن ما
هو العدد
المختبئ.
num = int(input("type
a number(1-10)?")) while num != 7: print (num, "incorrect-tray again") num = int(input("type
a number(1-10)?")) print ("nice - you guess
my number") |
|
سؤال6
اكتب
برنامج يقوم
بإدخال مبالغ
من التبرعات التي
تبرع بها طلاب
بمناسبة يوم
الطفل.
عدد
التبرعات غير
محدد.
البرنامج
ينتهي عندما
يصل مجموع
التبرعات إلى أكثر من
10000 شيكل.
استعمل
المتغير sum الذي
يقوم بجمع
مبالغ
التبرعات.
sum = 0 while sum <= 10000 : num = int(input("Enter your
donation?")) sum = sum + num print ("we have ", sum) print ("thank you, we
have=", sum) |
sum – جمع
التبرعات.
قيمته
الابتدائية 0 وكل مرة
نضيف له
المبلغ
التالي. هو
يسمى متغير
تراكمي (משתנה
צובר).
شرح وتوضيح: نبني
جدول متابعة
لتوضيح
البرنامج
المخرج |
sum |
num |
while |
|
0 |
|
|
|
|
|
0 < 10000
==>True |
we
have 4000 |
0
+ 4000 = 4000 |
4000 |
|
|
|
|
4000 < 10000 ==>True |
we have 7000 |
4000 + 3000=
7000 |
3000 |
|
|
|
|
7000 < 10000
==>True2 |
we
have 12000 |
7000 + 5000=
12000 |
5000 |
|
Thank you we have 12000 |
|
|
12000 < 10000 ==>False |
(ج)
شرط الحلقة
حسب قيمة مُدخلة
– شاذة
عندما
يكون عدد
المعطيات
المدخلة غير
محدد نقوم
بعمليتين:
1) نضع
في آخر
المعطيات
المدخلة عدد
خاص، شاذ (نسميه
القيمة
الحارسة)،
إدخاله
يدُلنا أننا وصلنا
لنهاية
المعطيات
التي نقوم
بإدخالها.
2)
في
شرط الحلقة
نفحص أن
الاعداد
المُدخلة مختلفة
عن هذا العدد
الخاص – وهذا
كي تستمر
الحلقة في العمل.
|
سؤال7
أكتب
برنامج يُدخل
أعداداُ،
عملية
الإدخال تستمر
حتى يُدخل
العدد 99- الذي
يشير إلى
نهاية الأعداد
المُدخلة.
على
البرنامج أن
يحسب:
أ. عدد
الأعداد
الموجبة.
ب. عدد
الأعداد
السالبة. الصفر
لا يتم حسابه.
مثال:
2, 5, -4, 7, -6, 1, -99
البرنامج
يطبع: عدد
الأعداد
الموجبة 4
عدد
الأعداد
السالبة 2
استخدم حلقة while
p = 0 ; n = 0; m
= int(input("your
number")) while (m != -99) : if (m > 0) : p = p + 1 elif (m < 0): n = n + 1 m = int(input("your number")) print ("positive numbers ", p) print ("negatives numbers ", n) |
|
سؤال8
·
اكتب
برنامج يقوم
بإدخال
علاماتك في
مواضيع مختلفة.
·
الخوارزمية
تجد معدل
العلامات.
· عدد المواضيع غير محدد، عملية الإدخال تنتهي عندما تُدخل العلامة -99
تذكر،
إرشادات:
·
لحساب
المعدل، عليك
جمع العلامات
المتراكمة (sum، في
البداية sum=0).
· يجب
استخدام عداد
(count) يحسب
عدد العلامات
المُدخلة
التي تم جمعها
sum = 0 count = 0 grade
= int(input("grade=")) while grade != -99 : sum = sum + grade count = count + 1 grade = int(input("grade=")) avg = sum / count print ("avg = ", avg) |
|
سؤال9
أكتب
برنامج يُدخل
مجموعة
من الأعداد،
عددها غير محد،
وتنتهي
بالعدد 99-
(الإدخال
يستمر حتى
يُدخل العدد 99-
الذي يشير إلى
نهاية
الأعداد).
على
البرنامج أن
يحسب: كم عددا يوجد
في
المجال 15 - 25 (يشمل)
مثال:
إذا أدخلنا
الأعداد: 20, 5, 22, 17, -3, -99
البرنامج
يطبع: عدد
الاعداد في
المجال 20-15 هو 3
count = 0 num = int(input("type a
number")) while (num !=
-99): if num >=15 and num <=25 : count = count + 1 num = int(input("type a
number")) print ("numbers between
15-25 are ", count) |
|
سؤال 10
اكتب
برنامج
يستقبل في
حلقة اعداداً
موجبة.
الحلقة
تتوقف عند
إدخال أي عدد
ليس موجبا.
البرنامج
يجد مجموع
الاعداد
الزوجية.
sum = 0 num
= int(input("num=")) while (num > 0): if num % 2 == 0 : sum = sum + num num = int(input("num=")) print ("sum of even numbers ", sum) |
|
سؤال
11
اكتب
برنامج
يُدخِل في
حلقة اعداداً
موجبة.
الحلقة
تتوقف عند
إدخال أي عدد
ليس موجبا.
البرنامج
يجد ضرب
الاعداد
الموجبة.
p = 1 num = int(input("num=")) while (num > 0): p = p * num num = int(input("num=")) print ("p =", p) |
|
سؤال 12 (פיראס)
أكتب
برنامج يُدخل
طول (ارتفاع)
مجموعة من الطلاب
لفريق كرة
السلة،
المُدخلات
تستمر حتى يتم
إدخال عدد
سالب.
البرنامج
يقوم بعد عدد
الطلاب الذين
طولهم أكبر من
1.85،
البرنامج
يطبع رسالة
مناسبة.
البرنامج
يحسب ويطبع
معدل الطول.
الحل:
total_h=0.0 count=0 h
= float(input('הכנס גובה')) while h >= 0.0 : if h
> 1.85 : count = count + 1 h = float(input('הכנס גובה')) total_h = total_h + h print('The average height is ', total_h/count ) |
تمارين
– من اختبارات المفمار
تمرين
15 (מבחן מפמ"ר,
כיתה ז, פיתון, 2018, שאלה 5)
|
سؤال 16 (جمع
تراكمي، צובר, זקיף)
الطالبة
آية تريد أن
تشتري لنفسها
ساعة جديدة،
ومن أجل ذلك
قررت أن تبيع
أغراضها
والعابها
التي ليست
بحاجة لها.
النقود التي
حصلت عليها
وضعتها في
محفظة.
من أجل
القيام بحساب
المبلغ الذي
في المحفظة (wallet) قامت
بكتابة سكربت
خاص بجمع
القطع
النقدية التي
في محفظتها.
·
السكربت
يستقبل كل مرة
قطعة نقود
بالشاقل إلى
المتغير shekels.
·
المُدخلات
تنتهي عند
ادخال المبلغ -9
·
القطع
النقدية من
فئة 1, 5, 10, 20
اكتب
سكربت مناسب.
الحل:
أكمل الاماكن
الناقصة:
wallet = 0 shekels = int(input("shekels=")) while shekels <> -9: wallet += shekels shekels = int(input("shekels=")) print ("total
money=", wallet ) |
|
سؤال 17
(مفمار
???)
תלמידי העתודה המדעית התבקשו לכתוב אלגוריתם
אשר מטרתו:
· קליטת רשימת התוצאות של תלמידי כיתתם
בתחרות הקליעה לסל.
לכל
תלמיד קולטים (מזינים) את מספר הקליעות המוצלחות שלו לסל.
· לכל תלמיד עשר ניסיונות זריקה לסל.
· כל קליעה מוצלחת מזכה בנקודה אחת.
· מספר התלמידים בכיתה אינו ידוע מראש.
· את סוף סדרת הציונים יציין המספר -999 (זקיף).
דוגמא לקלט
עבור תלמיד:
7 ç פירושו, קלע לסל 7 והחטיא
3, והוא זכה ב- 7 נקודות.
על האלגוריתם לחשב ולהציג:
1. הצגת רשימת התוצאות.
2. את מספר התלמידים שהשתתפו בתחרות.
3. סכום הנקודות שצברו כל תלמידי הכיתה
(שצברה הכיתה).
4. ממוצע קליעה לתלמיד.
לפניכם קטע קוד שחסרים בו כמה פקודות. השלימו
את החסר.
באלגוריתם משתמשים במשתנים הבאים:
count: משתנה שמונה את
מספר התלמידים שהשתתפו בתחרות הקליעה לסל.
sum: משתנה שצובר
(מסכם) את סה"כ הנקודות שנצברו על-ידי תלמיד הכיתה.
num: תגלו בעצמכם.
count = 0 ; sum = 0 num = int(input("הקלידו את מספר הקליעות לתלמיד==>")) while (num != -999): if (num >= 0 and num
<= 10): count = count + 1 sum = sum + num print num else: print ("המספר
שהקלדתם אינו חוקי, אנא נסו שנית") num = int(input("הקלידו את מספר הקליעות לתלמיד==>")) avg = sum / count # חישוב הממוצע print ( count, "מספר התלמידים שהשתתפו
בתחרות: ")
print
( sum, ": סך הנקודות שצברה הכיתה") print
( avg, "ממוצע סלים לתלמיד: ") |
إجمال – סיכום
·
إذا
شرط الحلقة لم
يتحقق - لن يتم تنفيذ
كود الحلقة.
·
من
المُتبع
استعمال هذه
الحلقة عندما
يكون عدد مرات
تنفيذ مقطع
الكود غير
معروف.
·
يمكن
استخدام هذه
الحلقة أيضاً
عندما يكون عدد
مرات تكرار
الحلقة
معروفًا
مسبقًا -
تمامًا مثل
حلقة for.
·
شرط
الحلقة يمكن
كتابته
كتعبير مًركب
(معقد) الذي
يتضمن عددًا
من الشروط
وذلك عن طريق
عمليات
منطقية (Or, and, not).
·
يجب
أن نتجنب
الوضع الذي لا
تنتهي فيه
الحلقة - حلقة
لا نهائية.
Daliaty School – Copywrite 2023
wahbem@gmail.com | https://daliaty.com
<meta name="viewport"
content="width=device-width, initial-scale=1">