ailiteracynepal 🇳🇵
पाठ आकार

अध्याय २ · खण्ड II · 30 मिनेट

फङ्क्सन, लूप, र फेरि पढ्न मिल्ने कोड

कार्यक्रमहरू बढ्छन्। दुई पटक नलेख्ने लाइनहरू दुई पटक लेख्नुहुँदैन। फङ्क्सन र लूप कोड सानो राख्ने दुई औजार हुन्। नामकरण र इन्डेन्ट सजिलोसँग पढ्न दिने औजार हुन्।

पछिल्लो खण्डमा तपाईंले सूची, शब्दकोश, र तालिकामा डाटा राख्नुभयो। यो खण्डमा तपाईं त्यसमा केही गर्न थाल्नुहुन्छ — उही तीन लाइन छ पटक कपी-पेस्ट नगरीकन। दुई औजारले अधिकांश काम गर्छन्: फङ्क्सन ले कामको टुक्रालाई नाममा बेर्छ; लूप ले उही कामलाई सङ्ग्रहमा दोहोर्‍याउँछ। यहाँदेखि अघि तपाईंले पढ्ने झन्डै हरेक कार्यक्रम यी दुईको कुनै सम्मिश्रण हुन्छ।

लूप, सरलमा

लूपले सूचीमा हिँड्छ र प्रति वस्तु एक पटक कोडको टुक्रा चलाउँछ। सबैभन्दा सरल रूप:

expenses = [120, 80, 250, 90, 45]

for expense in expenses:
    print(expense)

त्यसले प्रति वस्तु एक गरी पाँच लाइन प्रिन्ट गर्छ। आकार ध्यानले पढ्नुहोस्:

  • for expense in expenses: — सूचीको प्रत्येक वस्तुका लागि, यसलाई expense भन्नुहोस् (नाम तपाईंले छान्नुहुन्छ)। अन्त्यको कोलोनले बडी सुरु गर्छ।
  • तलको इन्डेन्ट गरिएको लाइन लूपको बडी हो। यो प्रत्येक वस्तुका लागि एक पटक चल्छ, expense ले प्रत्येक पटक अर्को मान लिँदै।
  • इन्डेन्ट सजावट होइन। Python ले यसलाई वास्तविक सिन्ट्याक्सका रूपमा प्रयोग गर्छ। उही प्रकारले इन्डेन्ट गरिएका दुई लाइन एउटै बडीको हुन्। असमान इन्डेन्ट दियो भने Python ले फाइल चलाउन इन्कार गर्छ।

सामान्य ढाँचा: निरन्तर जोड चलाइराख्ने।

expenses = [120, 80, 250, 90, 45]

total = 0
for expense in expenses:
    total = total + expense

print(total)   # 585

लाइनदर-लाइन पढ्नुहोस्। total शून्यबाट सुरु हुन्छ। लूपको प्रत्येक चक्करले अर्को खर्च त्यसमा थप्छ। लूप सकिएपछि total मा योग बस्छ।

फङ्क्सन, सरलमा

फङ्क्सन भनेको नाम भएको व्यवहारको टुक्रा हो। तपाईंले एक पटक परिभाषित गर्नुहुन्छ र जति पटक चाहियो उति पटक कल गर्नुहुन्छ:

def total(expenses):
    running = 0
    for expense in expenses:
        running = running + expense
    return running

बिस्तारै पढ्नुहोस्:

  • def total(expenses): — फङ्क्सन परिभाषा सुरु गर्नुहोस्। यसको नाम total हो। यसले एउटा इनपुट लिन्छ, जसलाई फङ्क्सनभित्र expenses भन्नेछौँ। कोलोनले बडी सुरु गर्छ।
  • इन्डेन्ट गरिएको ब्लक बडी हो। यो प्रत्येक पटक फङ्क्सन कल हुँदा चल्छ, परिभाषित हुँदा होइन।
  • return running — फङ्क्सनले यो मान कल गर्नेलाई फिर्ता दिन्छ। return बिना, फङ्क्सनले मौन रूपमा None (Python को “केही पनि होइन”) फिर्ता दिन्छ।

प्रयोग गर्न:

total([120, 80, 250, 90, 45])   # 585
total([200, 150])               # 350

एक पटक फङ्क्सन अस्तित्वमा आएपछि, भित्रका लाइनहरू तपाईंकै, नामसहित हुन्छन्। तपाईंले सूचीको योग निकाल्दा हरेक पटक कसरी काम गर्छ भन्ने सोच्नु पर्दैन। total(...) लेखेर पुरानो आफूलाई विश्वास गर्नुहुन्छ।

मिलाएर लगाउने

धेरै उपयोगी कार्यक्रमहरू लूप र फङ्क्सनको सम्मिश्रण हुन्। पछिल्लो खण्डको कारोबार तालिकासँगको सानो उदाहरण:

def total_by_vendor(transactions, vendor):
    running = 0
    for t in transactions:
        if t["vendor"] == vendor:
            running = running + t["amount"]
    return running


transactions = [
    {"vendor": "Khalti",  "amount": 5000},
    {"vendor": "eSewa",   "amount": 1200},
    {"vendor": "Khalti",  "amount":  450},
    {"vendor": "FonePay", "amount":  900},
]

print(total_by_vendor(transactions, "Khalti"))   # 5450
print(total_by_vendor(transactions, "eSewa"))    # 1200

दुई प्यारामिटर (transactionsvendor) भएको फङ्क्सन, सूचीमा एक लूप, र एउटा नयाँ टुक्रा — लूपभित्र if जाँच जसले “यदि विक्रेता सोधिएको सँग मेल खान्छ भने मात्र रकम थप्नुहोस्” भन्छ। == “बराबर हो” हो (एकल = असाइनमेन्ट हो — दुई फरक हुन्)।

अघि बढ्नुअघि यो कार्यक्रम दुई पटक पढ्नुहोस्। ट्र्याकको बाँकी अवधिभर तपाईंले लेख्ने कोडको सानै तर वास्तविक आकार यही हो।

फेरि पढ्न मिल्ने कोड

कार्यक्रम लेखिएभन्दा बढी पढिन्छ — सामान्यतया छ महिनापछिको आफै, जो विगतको आफूले के सोचेको थियो भनेर सम्झन कोसिस गर्दै हुन्छ। दुईवटा साना बानीले लगभग केही पनि लाग्दैनन् र ठूलो पीडाबाट जोगाउँछन्।

कुरालाई तिनको अर्थअनुसार नाम दिनुहोस्। तुलना गर्नुहोस्:

def f(x, y):
    r = 0
    for i in x:
        if i["v"] == y:
            r = r + i["a"]
    return r

माथिको संस्करणसँग। उही तर्क, उही आउटपुट। पहिलो संस्करण एक हप्तामा पढ्न नसकिने हुन्छ; दोस्रोले एक नजरमै के गर्छ बताउँछ। भेरिएबल नामहरूलाई रनटाइममा खर्च लाग्दैन। उदारतापूर्वक प्रयोग गर्नुहोस्।

लगातार इन्डेन्ट गर्नुहोस्। Python ले यो जे जसो भए पनि लाद्छ, तर त्योभन्दा बढी: ट्याब होइन, चार स्पेस प्रयोग गर्नुहोस्, र दुईलाई कहिल्यै नमिसाउनुहोस्। पृथ्वीमा हरेक सम्पादक — VS Code सहित — Tab थिच्दा चार स्पेस हाल्ने सेट गर्न मिल्छ। एक पटक त्यो गर्नुहोस् र भुल्नुहोस्।

टिप्पणी कमी प्रयोग गर्नुहोस्, र किन का लागि, के का लागि होइन। नराम्रो टिप्पणी:

total = total + expense   # add expense to total

कोडले पहिले नै यो भन्छ। उपयोगी टिप्पणी:

# Skip Saturdays — markets are closed and the totals are zero.
if date.weekday() == 5:
    continue

टिप्पणीले अनौठो देखिने लाइन किन छ भनेर बताउँछ। अधिकांश अवस्थामा यो मात्र लेख्न योग्य टिप्पणी हो।

आफ्नो बुझाइ जाँच्नुहोस्

Quick check

यो कार्यक्रमले के प्रिन्ट गर्छ? def double(x): return x + x values = [3, 5, 7] result = 0 for v in values: result = result + double(v) print(result)

Quick check

एक साथीले यो फङ्क्सन लेख्छिन् र सधैं None फिर्ता पाएकोमा छक्क पर्छिन्: def total(numbers): running = 0 for n in numbers: running = running + n बगको सबैभन्दा सही व्याख्या के हो?

अब के आउँछ

अब तपाईंले डाटा आकारमा राख्न र तिनलाई फङ्क्सन र लूपबाट सार्न जान्नुभयो। सादा Python को अन्तिम टुक्रा भनेको डिस्कबाट डाटा बाहिर निकाल्नु हो — कसैले निर्यात गरेको CSV, API ले फिर्ता गरेको JSON, तपाईंले आफै टाइप गरेको रसिदहरूको पाठ फाइल। त्यो अर्को खण्ड हो, र अध्याय 3 मा सङ्ख्यात्मक उपकरण-पेटी (NumPy, pandas, matplotlib) सुरु हुनुअघिको अन्तिम स्टप।