def wage(hours: float, per_hour_rate: float) -> float:
pass # اكتب هنا
# أمثلة (غيّر القيم لتجرب):
print(wage(10, 50))
print(wage(3.5, 120))مسائل الدوال
عدد المسائل: 8 الوقت التقديري: 45–60 دقيقة
تم ترتيب المسائل من الأسهل إلى الأصعب. اكتب الحل في الخلايا البرمجية أدناه.
1. حساب الأجر
عرِّف الدالة wage التي تحسب الأجر من عاملين:
hours: float: عدد الساعاتper_hour_rate: float: سعر الساعة الواحدة
اجعل نوع العائد float باستعمال -> float.
2. حساب العمر
اكتب دالة age_at تحسب عمر الشخص في سنة معيّنة، معطى عمره الحالي والسنة الحالية والسنة المطلوبة.
age_now: int— العمر الآنcurrent_year: int— السنة الحاليةat_year: int— السنة التي تريد حساب العمر فيها
تلميح: الفرق بين السنتين يُضاف إلى العمر الحالي (أو يُطرح إذا كانت السنة المطلوبة في الماضي).
def age_at(age_now: int, current_year: int, at_year: int) -> int:
pass # اكتب هنا
print(age_at(0, 2000, 2010)) # بعد الولادة
print(age_at(20, 2000, 2010)) # في المستقبل
print(age_at(20, 2000, 1995)) # في الماضي3. المحاذاة إلى اليمين
المطلوب: اكتب الدالة print_right(text) بحيث يظهر آخر حرف من text في العمود 40 (كأن السطر مكوّنًا من 40 عمودًا).
تلميح: استخدم len، وجمع النصوص (+)، وتكرار النص (*).
def print_right(text: str) -> None:
pass # اكتب هنا
print_right('Monty')
print_right("Python's")
print_right('Flying Circus')4. هرم
المطلوب: اكتب الدالة triangle(letter, height) التي تطبع هرمًا من height مستويات باستخدام letter، بحيث يزداد طول كل صف حتى آخر مستوى.
def triangle(letter: str, height: int) -> None:
pass # اكتب هنا
triangle('L', 10)5. مستطيل
المطلوب: اكتب الدالة rectangle(letter, width, height) التي تطبع مستطيلًا بعرض width وارتفاع height من letter.
def rectangle(letter: str, width: int, height: int) -> None:
pass # اكتب هنا
rectangle('X', width=5, height=2)6. أبيات الشاي
المطلوب: اكتب الدالة tea_verse(number) لتطبع أربعة أسطر من البيت، يبدأ بعدد number كوبًا وينتهي بـ number - 1 كوبًا (وفق النموذج في المثال التوضيحي بعد الحل).
فكرة السطرين الأوسطين: مثلاً «Pour one out, pass it around».
def tea_verse(number: int) -> None:
pass # اكتب هنا
tea_verse(99)إذا أردت طباعة الأغنية عدة مرات، يمكنك استخدام حلقة for مع range (اختياري).
# اختياري — لا يلزم لإكمال المسألة:
# for n in range(5, 0, -1):
# tea_verse(n)
# print()7. طول الخط المستقيم بين نقطتين
المسافة الإقليدية بين نقطتين \((x_1, y_1)\) و \((x_2, y_2)\):
\[ \text{distance} = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} \]
وتذكّر أن \(\sqrt{x} = x^{1/2}\).
المطلوب: الدالة euclidean_distance(x1, y1, x2, y2) -> float.
def euclidean_distance(x1: float, y1: float, x2: float, y2: float) -> float:
pass # اكتب هنا
print(euclidean_distance(x1=0, y1=0, x2=3, y2=4))
print(euclidean_distance(1, 1, -2, -2))8. سحب الرصيد
نمذجة سحب نقدي:
- إن كان رصيد المستخدم يكفي للمبلغ المطلوب، فتأكد أن جهاز الصراف يملك نقودًا كافية لصرفه.
- إن تحققت الشروط، اطبع رسالة نجاح مناسبة؛ وإلا اطبع سبب الرفض.
المطلوب: الدالة withdraw_cash(balance, amount, atm_cash) (يمكنك إضافة تلميحات الأنواع إن رغبت).
def withdraw_cash(balance, amount, atm_cash):
pass # اكتب هنا
withdraw_cash(500, 200, 1000)
withdraw_cash(500, 200, 100)
withdraw_cash(500, 600, 1000)