داليتي سكول -

Daliaty School

   صفحة البيت  |

 

 

 

 

 

بايثون – ôéúåï – python

 

 

 

 

 

 (5) الشرط المنطقي المركب – or – القسم 2

 

 

الشرط المنطقي المركب

 

العلاقة المنطقية or (أو)

 

 

·       or هو عامل منطقي، يتم استخدامه للربط بين العبارات الشرطية (المنطقية).

·       التعبير المنطقي مع or تكون نتيجته True (صدقإذا كان على الأقل قيمة أحد التعابير المنطقية فيه True

(بمعنى: يكفي أن تكون قيمة أحد التعابير True).

 

 

 

 

مثال:

 

a, b, c = 2, 3, 5

if a > b or c > a:

  print ("At least one is True")

 

الشرط يتحقق. نوضح لماذا: 

a > b  or c > a

2 > 3  or 5 > 2

False or True  ==> True

 

في المخرج يطبع:  At least one is True

 

 

 

 

 تـــــمــــــاريــــن

 

 

 

 

 تمارين أساسية 

 

 

سؤال   (and, or, not )

 

جد المخرج من الكود التالي؟

(تذكر أولا يتم تنفيذ and وبعدها or)

 

x = True

y = False

z = False

if x or y and z:

  print ("yes")

else:

  print ("no")

 

     a) yes      b) no       c) فشل في التشغيل       d) True

 

 

الحل:    ( a ) yes  

 

 

  

 

 

سؤال  (مساواة بين أعداد)

 

نريد كتابة برنامج يُدخل 3 أعداد من لوحة المفاتيح.
البرنامج يفحص إذا يوجد عددان متساويان أو أكثر، من بين هذه الأعداد.

إذا نعم يطبع yes وإلا يطبع no.

 

a = int(input('a='))

b = int(input('b='))

c = int(input('c='))

if a == b or a == c or b == c:

  print('yes')

else:

  print('no')

 

مثال: نفرض أن المُدخلات: a=5, b=4, c=5 ، المخرج yes

         نفرض أن المُدخلات: a=4, b=5, c=5 ، المخرج yes

 

 

  

 

 

ملاحظة:  السؤال السابق يمكن طرحه بالشكل التالي، ويبقى نفس الحل

أكتب برنامج يُدخل 3 أعداد صحيحة تمثل أطوال أضلاع مثلث.

البرنامج يفحص إذا هذه الأضلاع تشكل أضلاع مثلث متساوي الساقين.

البرنامج يطبع "yes" إذا المثلث متساوي الساقين (يوجد على الأقل ضلعان متساويان)،

و "no" إذا لا.

- نفترض أن الأعداد المُدخلة هي بالفعل تشكل أضلاع مثلث، ولا داع لفحص صحة المُدخلات.

 

 

 

   

 

 

 

 

 تمارين تتعلق بباقي القسمة %

 

 

 

تمرين (مساواة بين أعدادـ تخليص منازل)

 

اقرأوا عدد من منزلتين، وافحصوا بطريقتين مختلفتين أنه في هذا العدد على الأقل منزلة واحدة هي 7.

 

n=int(input("number="))

d1  = n  % 10  # منزلة الآحاد

 

d10 = n // 10  # منزلة العشرات

 

if d1 == 7 or d10 == 7:

  print ("yes")

else:

  print ("no")

# print (d1==7 or d10==7)

 

 

 

  

 

 

تمرين (مساواة بين أعداد، تخليص منازل)

 

أكتبوا برنامج يقرأ عدداُ موجباً مكّون من منزلتين (افترض أن العدد المدخل صحيح).

أطبعوا win إذا كان على الأقل أحد المنازل هو 7، وإذا لا أطبعوا lose

استخدام الشرط المركب.

 

n = int(input("two digits="))

x = n % 10    # منزلة احاد

 

y = n // 10   # منزلة عشرات

 

if x == 7 or y == 7 :

  print ("win") 

else:

  print ("lose")

 

 

 

  

 

 

تمرين (تحقق شرط، مركب) 

أكتب برنامج الذي يقرأ 2 أعداد. البرنامج يفحص هل العددان زوجيان وأحد الأعداد هو على الأقل أكبر بمرتين من العدد الثاني

(لا يهم أي عدد) إذا تحق ذلك، يطبع "yes" وإذا لا يطبع "no".

 

num1=int(input("number1="))

num2=int(input("number2="))

 

if (num1 % 2 == 0) and (num2 % 2 == 0) and (num1 >= 2*num2) or (num2 >= 2*num1):

 

  print ("yes")

else:

  print ("no")

 

 

 

  

 

 

سؤال  (الفحص في مجال)

بفندق "شرتون" بمدينة تورنتو بكندا 42 طابق.

في الطوابق 5-1 توجد معدات الفندق المختلفة (مطاعم، غرفة رياضة، بركة سباحة والخ)

وفي باقي الطوابق توجد غرف النوم.

للفندق يوجد 4 مصاعد.

·       جميع المصاعد تتوقف في الطوابق 1-5.

·       المصعدان 1 و 2 يتوقفان في الطوابق 6 – 26

·       والمصعدان 3 و 4 يتوقفان ابتداءً من الطابق الـ 27.

 

شخص ما يختار الطابق الذي يرغب أن يصعد إليه وجهاز المراقبة للمصعد يشير ويدله

على أي مصعد عليه أن يختار (من بين الـ 4 مصاعد).

امامك كود الذي يخبر الشخص أي مصعد عليه أن يختار.

 

( أ ) عليك تكملة الأماكن الناقصة التي في الكود.

 

floor = int(input("to what floor="))

if floor >= 1 and floor <= 5:

  print ("Every elevator")

elif floor >= 6 and floor <= 26:

  print ("elevator 1 , 2")

else:

  print ("elevator 3 , 4")

 

(ب) لقد قرروا أن يغيروا من طريقة توقف المصاعد، بحيث المصاعد الفردية تقف في الأماكن الفردية،

       والمصاعد الزوجية تقف في الأماكن الزوجية. السكربت أيضا تم تغييره بالشكل المناسب.

 

floor = input("to what floor=")

if floor % 2 == 0 :

  print ("elevator 2, 4")

else:

  print ("elevator 1, 3")

ارشاد: استعمل العملية % التي تعطي الباقي من قسمة عددين صحيحين.

 

 

 

 

   

 

 

 

 تمارين تتعلق بالمجال – على محور الأعداد 

 

 

سؤال (الفحص في مجال)

 

أكتب برنامج يقرأ عدد صحيح ويفحص إذا كان هذا العدد ليس أحادي المنزلة

أي مكون من أكثر من منزلة (من منزلتين أو أكثر).

العدد ليس أحادي المنزلة يجب أن يتواجد خارج المجال الذي بين (-10) و 10 (يشمل -10 و 10)

وبالرموز:        x <= -10  or  x >= 10

 

             

الحل:

 

num = int(input("num="))

if num <= -10 or num >= 10:

  print ("not one digit")

else:

  print ("one digit")

 

 

ملاحظة: الشرط يمكن صياغته بشكل آخر

if num < (-9) or num > 9:

 

 

 

 

سؤال (الفحص في مجال)

 

لا يتم تجنيد الأشخاص اللذين أعمارهم أقل من 18 عاما أو أكبر من 26 عاما.

أكتب برنامج يقرأ عمر شخص، ويفحص إذا كان لا يتم تجنيده، عندها اطبع الرسالة "not going"

وإذا لا أكتب رسالة "going"

 

الحل:

 

age = int(input("age="))

if age <18 or age >26:

 

  print ("not going")

else:

  print ("going")

 

 

 

 

 

 

سؤال   (الفحص في مجال)   (îöâú éåí òéåï 2017, ôééúåï ìëéúä è) (úé÷åï ùâéàåú)

 

علامة طالب تعتبر قانونية إذا كانت بين 40 و 100 (يشمل).

أي علامة ليست في هذا المجال تعتبر علامة غير صحيحة (خطأ).

أمامك عدة شروط. هدف كل شرط طباعة Correct إذا العلامة قانونية، و Mistake إذا لا.

 

لكل شرط يجب إحاطة بدائرة "صحيح" إذا في الشرط يتم طباعة Correct للعلامة الصالحة

وفي أي حالة أخرى احاطة "خطأ". الشرط الذي اعتبرته خطأ يجب الشرح باختصار عن السبب.

نفرض أن الأعداد المدخلة في num هي أعداد صحيحة (من نوع int)

 

(أ)

صحيح / خطأ


خطأ

 

السبب: الشرط لا يشمل العلامات التي في الأطراف (40, 100)  

if num > 40 and num < 100:

  print ("Correct")

else:

  print ("Mistake")

(ب)

صحيح / خطأ

الاجابة: صحيح

if num > 39 and num <= 100:

  print ("Correct")

else:

  print ("Mistake")

 

(ج)

صحيح / خطأ

الاجابة: خطأ بسبب or – يقبل العدد السالب ويقبل الاعداد الأكبر من 100

if num >= 40 or num <= 100:

  print ("Correct")

else:

  print ("Mistake")

 

(د)

صحيح / خطأ

خطأ، السبب: الشرط يشمل العلامة 39. ويقبل السالب.

if num >= 39 or num <= 100:

  print ("Correct")

else:

  print ("Mistake")

 

(هـ)

صحيح / خطأ

الاجابة: صحيح

 

if num <= 39 or num > 100:

  print ("Mistake")

if num > 39 and num < 101:

  print ("Correct")

 

 

 

 

 

 

سؤال   (الفحص في مجال، ، تعبئة جدول)

 

أمامك قطعة من كود برمجي، أكمل الجدول وسجل مقابل كل واحد من المدخلات ما هو المخرج.

 

math = input("math grade:")

comp = input("Computer grade:")

eng  = input("English grade:")

 

if (math > 85 and comp > 85 and eng > 85):

  print("group A")

elif (math < 56 or comp < 56 or eng < 56):

  print("group B")

else:

  print("group C")

 

 

المخرج

English

Computer

math

 أ)

group A

95

95

95

ب)

group C

85

90

85

ت)

group C

56

56

56

ث)

group B

87

90

45

ج)

group C

72

64

78

ح)

group B

92

88

45

 

 

  

 

الحل:    

  أ )   group A      ب)   group C     ت)   group C  

ث)   group B       ج)   group C      ح)   group B 

 

 

تفسير:

أ )

    math       Computer    English

     95          95          95 

if (math>85 and comp>85 and eng>85): 

   ( 95>85  and  95>85  and  95>85): 

   (  True  and  True   and  True): ===> True

  print("group A")  ===> group A

    ::::

ب)     

      math     Computer    English

      85         90          85

if (math>85 and comp>85 and eng>85):

   ( False  and  True   and  False): ===> False

    ::::

elif (math<56 or comp<56 or eng<56):

     ( False  or  False  or  False ): ===> False

    ::::

else: ===> True

    print("group C") ===> group C

ت)

     math      Computer     English

      56         56           56                      

if (math>85 and comp>85 and eng>85):

   ( False  and  False  and False ): ===> False

    ::::

elif (math<56 or comp<56 or eng<56):

     ( False  or  False  or False ): ===> False

    ::::

else: ===> True

    print("group C") ===> group C

ث)

     math      Computer     English

      45         90           87                    

if (math>85 and comp>85 and eng>85):

   ( False  and  True   and  True ) ===> False

    ::::

elif (math<56 or comp<56 or eng<56):

     ( True   or   False or  False)  ===> True

    print("group B")  ===> group B

    ::::

ج)

    math      Computer      English

     78         64           72                

if (math>85 and comp>85 and eng>85):

   ( False  and  False  and  False)  ===> False

    ::::

elif (math<56 or comp<56 or eng<56):

     ( False  or  False  or  False)  ===> False

    ::::

else:  ===> True

    print("group C") ===> group C

ح) 

    math    Computer    English

     45       88          92                  

if (math>85 and comp>85 and eng>85):

   ( False  and  True   and  True ): ===> False

    ::::

elif (math<56 or comp<56 or eng<56):

     ( True   or  False  or  False): ===> True

    print("group B")  ===> group B

    ::::

 

 

 

 

 

 

سؤال: (الفحص في مجال، فراس)

 

أكتب برنامج يقرأ 3 أعداد إلى المتغيرات x, L, R

إذا x في المجال [L,R]، البرنامج يطبع inside.

إذا x ليس في المجال [L,R]، البرنامج يطبع outside.

 

انتبه: نفرض انه معطى L < R

أ) حل بواسطة العملية المنطقية and فقط.

ب) حل بواسطة العملية المنطقية or فقط.

ج) حل باستخدام العملية in وبواسطة range.

 

 

  

 

 

حل:

 

(أ)

x = int(input('x='))

L = int(input('L='))

R = int(input('R='))

if x>=L and x<=R:

  print ('inside')

else:

  print ('outside')

 

(ب)

x = int(input('x='))

L = int(input('L='))

R = int(input('R='))

if x<L or x>R:

  print ('outside')

else:

  print ('inside')

 

(ج)

x = int(input('x='))

L = int(input('L='))

R = int(input('R='))

if x in range (L, R):

  print ('inside')

else:

  print ('outside')

 

قسم ب (‘ثراء):

مثل السؤال السابق بحيث نقرأ 3 أعداد x, y, z كما ترغبون.

انتبه: المجال له امكانيتان: أما [y , z]، أو [z , y]

اختاروا في حلكم كما جاء في بند (أ) أو كما جاء في بند (ب)

 

 

  

 

 

الحل:

 

(ب)

(أ)

x=int(input('x='))

y=int(input('y='))

z=int(input('z='))

if z>y:

  if x<y or x>z :

    print ('outside')

  else:

    print ('inside')

else:

  if x<z and x>y :

    print ('outside')

  else:

    print ('inside')

x=int(input('x='))

y=int(input('y='))

z=int(input('z='))

if z>y:

  if x>=y and x<=z :

    print ('inside')

  else:

    print ('outside')

else:

  if x>=z and x<=y :

    print ('inside')

  else:

    print ('outside')

 

 

 

 

  

 

 

 

 

 

   

 

 

 

   

 

 

 

Daliaty School – Copywrite  2023

wahbem@gmail.com | https://daliaty.com

 

 

 

 

 

<meta name="viewport" content="width=device-width, initial-scale=1">