मुख्य सामग्री पर जाएं
मॉड्यूल 2 · पाठ 1 का 4पाठ्यक्रम में 5/36~10 min
मॉड्यूल पाठ (1/4)

लूप और रेंज के लिए

पायथन में for लूप का उपयोग आइटमों के अनुक्रम को पुनरावृत्त करने के लिए किया जाता है: एक सूची, एक स्ट्रिंग, एक श्रेणी, एक निर्देश... कुछ भी जो "पुनरावर्तनीय" है।

Python
parole = ["ciao", "mondo", "!"]
for p in parole:
    print(p)
# ciao
# mondo
# !

पैटर्न हमेशा एक जैसा होता है: for <variable> in <iterable>: इसके बाद इंडेंटेड ब्लॉक जिसे प्रत्येक आइटम के लिए एक बार निष्पादित किया जाएगा।

range(...): पूर्णांक अंतराल उत्पन्न करना

range पूर्णांकों का एक आलसी अनुक्रम उत्पन्न करता है। तीन रूप:

Python
range(5)         # 0, 1, 2, 3, 4
range(2, 6)      # 2, 3, 4, 5
range(0, 10, 2)  # 0, 2, 4, 6, 8     (step)
range(5, 0, -1)  # 5, 4, 3, 2, 1     (negative step)

range दाहिने छोर पर अनन्य है, जैसे slice। यह एक आलसी वस्तु है: यह सभी नंबरों के लिए मेमोरी आवंटित नहीं करता है, यह उन्हें एक समय में एक उत्पन्न करता है।

Python
totale = 0
for i in range(1, 11):
    totale = totale + i
totale  # 55  (1+2+...+10)

एक सूचकांक के साथ पुनरावृत्ति: enumerate

जब आपको आइटम और उसके इंडेक्स की एक साथ आवश्यकता हो, तो enumerate का उपयोग करें:

Python
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
    print(i, p)
# 0 ciao
# 1 mondo
# 2 !

enumerate (index, value) जोड़े तैयार करता है जिन्हें हम सीधे दो को असाइन करते हैं ट्यूपल अनपैकिंग के माध्यम से वेरिएबल्स (हम इसे समर्पित मॉड्यूल में देखेंगे डेटा संरचनाएं)।

दो अनुक्रमों को समानांतर में दोहराना: zip

Python
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
    print(f"{n} ha {a} anni")

zip सबसे छोटे क्रम पर रुकता है।

रेंज() और पायथन का आलस्य

पायथन में, range() फ़ंक्शन मेमोरी में एक वास्तविक सूची आवंटित नहीं करता है: यह एक आलसी जनरेटर लौटाता है जो अनुरोध के अनुसार एक समय में नंबर एक उत्पन्न करता है (उदाहरण के लिए, for लूप में)। यह रैम को फुलाए बिना लाखों पूर्णांकों को पुनरावृत्त करने की अनुमति देता है। सूची के रूप में श्रेणी मानों का निरीक्षण करने के लिए, आप इसे list(range(5)) के साथ स्पष्ट रूप से डाल सकते हैं।

खुद कोशिश करना

व्यायाम#python.m2.l1.e1
प्रयास: 0लोड हो रहा है...

रेंज(...) पर लूप के उपयोग से 1 से 100 (समावेशी) तक की संख्याओं के योग की गणना करें, इसे `कुल` पर निर्दिष्ट करें और इसका मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

रेंज(1,101) 1, 2, ..., 100 उत्पन्न करता है (दाईं ओर विशेष)।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#python.m2.l1.e2
प्रयास: 0लोड हो रहा है...

सूची `शब्द = ['uno', 'due', 'tre']` को देखते हुए, गणना का उपयोग करके '0:uno', '1:due', '2:tre' जैसे स्ट्रिंग्स के `जोड़े` की एक सूची बनाएं। `जोड़े` का मूल्यांकन करें.

संपादक लोड हो रहा है...
संकेत दिखाएँ

प्रत्येक पुनरावृत्ति पर गणना (शब्द) रिटर्न (सूचकांक, मूल्य)।

3 प्रयासों के बाद समाधान उपलब्ध है

अतिरिक्त चुनौती

व्यायाम#python.m2.l1.e3
प्रयास: 0लोड हो रहा है...

Calculate the sum of all even numbers from 2 to 20 inclusive using a `for` loop over a `range`. Store the final sum in `even_sum` and evaluate it.

संपादक लोड हो रहा है...
संकेत दिखाएँ

केवल 2 से 20 तक के सम पूर्णांकों को पुनरावृत्त करने के लिए श्रेणी (2, 21, 2) का उपयोग करें।

3 प्रयासों के बाद समाधान उपलब्ध है