না, একবার range() অবজেক্ট তৈরি হলে এর উচ্চ সীমা (upper limit) পরিবর্তন করা যায় না। range একটি ইমিউটেবল সিকোয়েন্স।
সমস্যা
# এটি কাজ করবে না
for i in range(lower_limit, higher_limit, step_size):
# some code
if i == 10:
higher_limit = higher_limit + 5 # range অবজেক্ট এфек্ট হবেনা
সমাধান: while লুপ ব্যবহার করুন
i = lower_limit
while i < higher_limit:
# some code
if i == 10:
higher_limit = higher_limit + 5 # এখন কাজ করবে
i += step_size
ব্যাখ্যা: while লুপে কন্ডিশন প্রতিবার ইভ্যালুয়েট হয়, তাই higher_limit পরিবর্তন করলে লুপের আচরণ পরিবর্তন হয়।
অলтернаেটিভ: itertools.count()
import itertools
for i in itertools.count(lower_limit, step_size):
if i >= higher_limit:
break
# code
if i == 10:
higher_limit += 5