داليتي سكول -

Daliaty School

   صفحة البيت  |

 

 

 

 

 

بايثون – פיתון – 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">