σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyالمسارات
Ctrl K
AO
+1.2k متعلّم
تسجيل الدخولانضم ↗
المسارات
AO
+1.2k متعلّم
تسجيل الدخول
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
مسار Python›الوحدة 1 · أساسيات Python للمحللين الكميين›الموضوع 1.5·~30 دمبتدئ

الشروط: if وelif وelse

الموضع في المسارالوحدة 1 من 11 · الموضوع 5 من 33
1.5 الشروط: if وelif وelse
—درجة المختبر— / 100إجمالي XP—التتابع—

اختيار ما يُنفَّذ

حتى الآن كان كل سطر يُنفَّذ من الأعلى إلى الأسفل. جملة 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)  # ok
لا تقارن القيمة المنطقية بـ Trueإذا كانت is_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 نقطة
المستكشف · lab-5-1
▾ lab-5-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-5-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

هل تريد إعادة ضبط هذا الموضوع؟

سيعود كل ما في lab-5-1 إلى الملفات الابتدائية وستُمسح الطرفية. ستفقد حلّك الحالي ولا يمكن التراجع عن ذلك.

سيُعاد ضبطه
  • main.py ← الشيفرة الابتدائية
  • سجل الطرفية ومخرجات الاختبارات
  • التغييرات غير المُرسلة
سيُحتفظ به
  • أفضل درجة في المختبر
  • نقاط XP والتتابع
  • تقدّم المحاضرة والملاحظات

سجّل الدخول لتشغيل الكود الخاص بك.

قراءة كل المحاضرات مجانية. أنشئ حسابًا أو سجّل الدخول لتشغيل الكود وتنفيذ الاختبارات وتسليم هذا المختبر.

  • بيئة تطوير داخل المتصفح مع طرفية bash — لا حاجة لتثبيت أي شيء
  • تصحيح فوري ونقاط خبرة ومكانك في المسار
إنشاء حسابتسجيل الدخول
أو
المتابعة عبر GitHub