## রেঞ্জ আমরা আগের চ্যাপ্টার গুলোতে দেখেছি কিভাবে লিস্ট তৈরি করতে হয় এবং লিস্ট নিয়ে কাজ করতে হয়। আরও দেখেছি `while` লুপের ব্যবহার। পরের চ্যাপ্টারে আমরা আরও একধরনের লুপ (for) নিয়ে আলোচনা করবো। তার আগে, এই চ্যাপ্টারে আমরা একটি বহুল ব্যবহৃত ফাংশন নিয়ে কথা বলবো যার নাম `range`. এই ফাংশন এর মাধ্যমে স্বয়ংক্রিয় ভাবে একটি লিস্ট তৈরি করা যায়, যার এলিমেন্ট গুলো হয় একটি নির্দিষ্ট ক্রম অনুযায়ী। যেমন - ```python my_numbers = list(range(10)) print(my_numbers) ``` আউটপুট, ```python [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ``` উপরের উদাহরণে, ০ থেকে ৯ পর্যন্ত ১০টি ক্রমিক সংখ্যা সম্বলিত একটি লিস্ট তৈরি করা হয়েছে। `range` এর সাথে `list` ফাংশনের ব্যবহার করা হয়েছে কারন, `range` বস্তুত একটি অবজেক্ট রিটার্ন করে আর তাই একে `list` ফাংশনের আর্গুমেন্ট হিসেবে পাঠিয়ে একটি ব্যবহার উপযোগী লিস্ট হিসেবে রূপান্তর করা হয়েছে। সবসময় যে ০ থেকেই রেঞ্জ এর এলিমেন্ট শুরু হয় সেটা নয়। বরং `range` ফাংশনের আর্গুমেন্ট পরিবর্তন করে ইচ্ছা মত শুরু এবং শেষের লিমিট ঠিক করে দেয়া যায়। যেমন - ```python my_numbers = list(range(5,10)) print(my_numbers) ``` আউটপুট, ```python [5, 6, 7, 8, 9] ``` এখানে লিস্টের প্রথম এলিমেন্ট শুরু হয়েছে ৫ থেকে এবং শেষ হয়েছে ৯ এ গিয়ে কারন আমরা ৫ থেকে ১০ পর্যন্ত ভ্যালু চেয়েছি। আবার, এই ক্রমিক প্যাটার্নও বদলানো যায় `range` ফাংশনের তৃতীয় আর্গুমেন্ট সেট করে। অর্থাৎ আমরা চাইলে শুরু এবং শেষ নাম্বারের মধ্যে একটি ইন্টারভাল সেট করতে পারি যাতে করে এলিমেন্ট গুলো ক্রমিক না হয়ে বরং নিধারিত বিরতির হবে। উদাহরণ, ```python my_numbers = list(range(5, 30, 3)) print(my_numbers) ``` আউটপুট, ```python [5, 8, 11, 14, 17, 20, 23, 26, 29] ``` আশা করি আউটপুট দেখেই বুঝতে পারছেন কিভাবে ক্রমটি সাজানো। আর এভাবে আমরা রেঞ্জ ফাংশন ব্যবহার করে খুব সহজেই একটি লিস্ট তৈরি করে ফেলতে পারি। কিন্তু একটা বিষয় খেয়াল রাখতে হবে যে, রেঞ্জ ফাংশন আর্গুমেন্ট হিসেবে এই তিনটি প্যারামিটারই নিবে। চতুর্থ কোনো আর্গুমেন্ট নেই রেঞ্জ ফাংশনে। তাই আমরা যদি চতুর্থ কোনো আর্গুমেন্ট দিতে চাই তাহলে কিন্তু এরর দিবে। কারন রেঞ্জ তিনটির বেশি আর্গুমেন্ট এক্সপেক্ট করে না।