মূল কন্টেন্টে যান
মডিউল 2 · 1-এর পাঠ 4কোর্সে 5/36~10 min
মডিউল পাঠ (1/4)

loops এবং পরিসীমা জন্য

পাইথনের 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() এবং পাইথনের অলসতা

পাইথনে, 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' এর মতো স্ট্রিংগুলির একটি তালিকা তৈরি করুন। 'জোড়া' মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

প্রতিটি পুনরাবৃত্তিতে enumerate(শব্দ) রিটার্ন (সূচক, মান)।

সমাধান 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 প্রচেষ্টার পরে উপলব্ধ