اختيار ما يُنفَّذ
حتى الآن كان كل سطر يُنفَّذ من الأعلى إلى الأسفل. جملة if تنفّذ كتلة شيفرة فقط عندما يكون الشرط True. أضف elif («وإلا إذا») لشروط أخرى وelse لكل ما تبقى. تفحصها Python بالترتيب وتنفّذ أول كتلة فقط يكون شرطها صحيحًا. ينتهي كل سطر شرط بنقطتين.
position, target = 100, 250
if target > position:
print("buy", target - position) # buy 150
elif target < position:
print("sell", position - target)
else:
print("hold")المسافة البادئة هي البنية
الأسطر المزاحة تحت if هي الكتلة التي تتبعه، وأول سطر يعود إلى الهامش الأيسر يكون خارجها. استخدم أربع مسافات لكل مستوى وبالطريقة نفسها دائمًا. لا توجد أقواس معقوفة في Python: المسافة البادئة هي البنية، لذا فإن مسافة خاطئة تغيّر ما يفعله البرنامج.
# The indented lines are the block that belongs to the if
price = 184.5
if price > 184:
print("above 184") # above 184
print("still inside the if")
print("always runs") # back at the left marginالترتيب مهم: أول تطابق هو الفائز
بما أن أول فرع صحيح فقط هو الذي يُنفَّذ، يمكن لسلّم elif أن يستخدم عتبات: يكفي أن يذكر كل فرع ما هو جديد. وجدول العمولات مثال كلاسيكي. ضع الشرط الأضيق أو الأكثر تحديدًا أولًا، وإلا ابتلع شرط واسع فوقه الحالة.
# elif branches are checked top to bottom; the first True wins
monthly_volume = 3_500_000
if monthly_volume < 1_000_000:
rate = 0.0010
elif monthly_volume < 10_000_000:
rate = 0.0007
else:
rate = 0.0004
print(rate) # 0.0007الإرجاع المبكر
داخل الدالة، ينهي return الدالة فورًا. وهذا يتيح لك معالجة كل حالة بـif وreturn خاصَّين بها دون else ودون تداخل عميق؛ والسطر الأخير هو الحالة الافتراضية. تبقى الشيفرة المكتوبة هكذا مسطّحة وتُقرأ كقائمة قواعد.
# Early returns keep a function flat
def side(position, target):
if target > position:
return "buy"
if target < position:
return "sell"
return "hold"
print(side(100, 250), side(250, 100), side(100, 100)) # buy sell holdاختيار في سطر واحد
عندما يختار if بين قيمتين فقط، يكون التعبير الشرطي أقصر: value_if_true if condition else value_if_false. وهو تعبير، لذا يمكن وضعه داخل f-string أو return. استخدمه للخيارات البسيطة، واستخدم if عاديًا بمجرد أن يكون هناك المزيد لتفعله.
# A one-line choice between two values
cash = 40.0
status = "ok" if cash >= 0 else "overdrawn"
print(status) # okis_open قيمة منطقية أصلًا، فاكتب if is_open: وif not is_open:. أما if is_open == True: فتقول الشيء نفسه بطريقة أثقل. والأمر نفسه مع if x: على الأعداد والنصوص: فهي تختبر «غير صفر» و«غير فارغ».- نتيجتان:
if/elseأو تعبير شرطي في سطر واحد. - عدة نطاقات مرتبة: سلّم
elifمع الشرط الأضيق أولًا. - الحالات الخاصة والمدخلات الخاطئة:
returnمبكر ثم الحالة العادية أخيرًا.
التالي: حلقات for ودالة range لتكرار كتلة شيفرة مرة لكل عنصر.
المختبر: ما الذي يُقيَّم
- قرّر الشراء أو البيع أو الإبقاء باستخدام
order_side25 نقطة - اختر نسبة العمولة حسب الحجم باستخدام
fee_tier25 نقطة - أبقِ القيمة بين حدّين باستخدام
clamp25 نقطة - حوّل متوسطين إلى إشارة باستخدام
crossover_signal25 نقطة