Python / الدوال

تدريب على الدوال

اكتب دوالًا بعدة وسائط أو بلا وسائط، وضع داخلها if و for، وحوّل مخططًا انسيابيًا إلى كود. منهج البكالوريا

الدالة قد تحتاج أكثر من قيمة. نكتب المعاملات بينها فواصل، ونمرّر الوسائط بنفس العدد والترتيب. هذه دالة تجمع أزمنة ثلاث مراحل في سباق، ثم نحفظ ناتجها لكل فريق:

Python
def add_times(stage1_time, stage2_time, stage3_time):
    time = stage1_time + stage2_time + stage3_time
    return time

teamA = add_times(37.5, 62.5, 56.5)
teamB = add_times(44, 57, 64)
print(teamA)
print(teamB)
print("The fastest time is " + str(min(teamA, teamB)))
وحدة التحكم
156.5
165
The fastest time is 156.5
إذا مرّرت عددًا من الوسائط أقل أو أكثر من المعاملات يظهر خطأ TypeError.

وقد لا تحتاج الدالة أي قيمة؛ نكتب قوسين فارغين عند تعريفها وعند استدعائها:

Python
def good_evening():
    greeting = "Good evening!"
    return greeting

print(good_evening())
وحدة التحكم
Good evening!

if و for داخل الدالة

جسم الدالة برنامج صغير، فيمكن أن يحتوي على شروط. وreturn تُنهي الدالة فورًا، فلا يُنفّذ ما بعدها:

Python
def grade(score):
    if score >= 85:
        return "Excellent"
    elif score >= 50:
        return "Pass"
    else:
        return "Try again"

for s in [92, 70, 40]:
    print(grade(s))
وحدة التحكم
Excellent
Pass
Try again

ويمكن أن تحتوي على حلقة. هذه دالة تضرب العدد في نفسه عددًا من المرات:

Python
def power(base, times):
    num = 1
    for i in range(times):
        num = num * base
    return num

print(power(3, 4))
print(power(2, 10))
وحدة التحكم
81
1024

من المخطط الانسيابي إلى الكود

قبل كتابة برنامج فيه شروط متداخلة نرسم مخططًا انسيابيًا يرتّب الخطوات. كل شكل في المخطط له مقابل في Python:

الشكلمعناهفي Python
معيّنسؤال نعم / لاif weather == "sunny":
سهم «لا»الطريق الآخرelse:
مستطيلعمل يُنفَّذprint("play soccer")
معيّن بعد «نعم»شرط داخل شرطif مُزاحة داخل if
Python
weather = "sunny"
friends = 11

if weather == "sunny":
    if friends >= 11:
        print("play soccer")
    else:
        print("play badminton")
else:
    print("watch a movie")
وحدة التحكم
play soccer

تدريبات

1أكمل الفراغتدريب المنهج

أضف المعامل الثالث stage3_time إلى الدالة وإلى المجموع، ومرّر 56.5 عند الاستدعاء.

Python Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
def add_times(stage1_time, stage2_time, ___):
    time = stage1_time + stage2_time + ___
    return time
teamA = add_times(37.5, 62.5, ___)
print(teamA)
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
2اكتب البرنامجتدريب المنهج

في السطر الأخير اطبع The fastest time is متبوعة بأصغر قيمة بين teamA و teamB و teamC (استخدم min و str).

Python Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
def add_times(stage1_time, stage2_time, stage3_time):
    time = stage1_time + stage2_time + stage3_time
    return time
teamA = add_times(37.5, 62.5, 56.5)
teamB = add_times(44, 57, 64)
teamC = add_times(42, 63.5, 59)
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
3اكتب البرنامجتدريب المنهج

أنشئ دالة mul معاملاها num1 و num2 تُرجع حاصل ضربهما، ثم اطبع ناتج mul(9, 7).

Python Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
4اكتب البرنامجتدريب المنهج

أنشئ دالة good_morning بلا وسائط تُرجع النص Good morning، ثم استدعها واطبع ناتجها.

Python Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
5عدّل البرنامجتدريب المنهج

حوّل المخطط إلى كود: داخل الفرع الأول، بدل السطر الموجود، إذا كانت main_ticket تساوي "fish and chips ticket" اطبع Swap it with a friend، وإلا اطبع Use the steak ticket.

Python Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
ticket_type = "main dish"
main_ticket = "fish and chips ticket"
if ticket_type == "main dish":
    print("Check the ticket")
else:
    print("Use the cake ticket")
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
6اكتب البرنامجتدريب إضافي

تذكرة المتحف: من عمره أقل من 12 يدفع 20، والطالب يدفع 30، وغيرهما يدفع 50. أنشئ دالة ticket_price معاملاها age و is_student تُرجع السعر، ثم اطبع ticket_price(10, False) و ticket_price(17, True) و ticket_price(30, False) بهذا الترتيب.

Python Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
7اكتب البرنامجتدريب إضافي

أنشئ دالة count_letter معاملاها word و letter تُرجع عدد مرات ظهور الحرف في الكلمة (استخدم for). اطبع count_letter("assessment", "s").

Python Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.

النقاط الرئيسية

  • بعدة وسائط: def f(a, b, c): ونمرّرها بنفس العدد والترتيب، وبلا وسائط: def f():.
  • يمكن وضع if و for داخل الدالة، وreturn تُنهيها فورًا.
  • في المخطط الانسيابي: المعيّن = if، وفرع «لا» = else، والمستطيل = عمل.