কম্পিউটার

Python NameError:নাম 'xrange' সমাধান সংজ্ঞায়িত নয়

পাইথন 3 এ, xrange ফাংশনটি সরানো হয়েছিল। আপনি যদি পাইথন 3 প্রোগ্রামে xrange ফাংশন ব্যবহার করার চেষ্টা করেন, তাহলে আপনি NameError: name ‘xrange’ is not defined সম্মুখীন হবেন ত্রুটি.

এই নির্দেশিকায়, আমরা এই ত্রুটির অর্থ কী এবং কেন আপনি এটির সম্মুখীন হতে পারেন তা নিয়ে আলোচনা করতে যাচ্ছি। আমরা এই ত্রুটির একটি উদাহরণ নিয়ে আলোচনা করব যাতে আপনি কীভাবে এটি আপনার কোডে ঠিক করবেন তা শিখতে পারেন৷

NameError:নাম 'xrange' সংজ্ঞায়িত করা হয়নি

পাইথন 2-এ, xrange ফাংশন আপনাকে সংখ্যার একটি পরিসর তৈরি করতে দেয়। নিম্নলিখিত কোড স্নিপেট বিবেচনা করুন:

print(xrange(0, 3))

আমাদের কোড রিটার্ন করে [0, 1, 2], যা 0 এবং 3 (3 ব্যতীত) রেঞ্জের সমস্ত সংখ্যা। xrange() ফাংশন সংখ্যার একটি তালিকা প্রদান করে।

Python 3 xrange() সরিয়ে দিয়েছে range() নামক একটি নতুন ফাংশনের পক্ষে ফাংশন। range() ফাংশন, যেমন xrange() , সংখ্যার একটি পরিসীমা তৈরি করে।

xrange() এর মধ্যে দুটি পার্থক্য রয়েছে এবং range();

  • xrange() এবং range() বিভিন্ন নাম আছে।
  • xrange() ফাংশন সংখ্যার একটি তালিকা তৈরি করে। range() ফাংশন একটি বস্তু তৈরি করে।

কারণ range() ফাংশন একটি বস্তু তৈরি করে, যদি আপনি সংখ্যার একটি তালিকা দেখতে চান তবে আপনাকে এটিকে একটি তালিকায় রূপান্তর করতে হবে। অন্যথায়, এই দুটি পদ্ধতি একইভাবে কাজ করে।

একটি উদাহরণ দৃশ্য

আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যা প্রথম কয়েকজন খেলোয়াড়কে প্রদর্শন করে যারা একটি কার্ড গেম লিডারবোর্ডের শীর্ষে রয়েছে। শুরু করতে, আসুন আমাদের লিডারবোর্ডকে একটি তালিকা হিসাবে ঘোষণা করি:

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।

leaderboard = ["Alex", "Jonas", "Emma", "Kate"]

এর পরে, আমরা ব্যবহারকারীকে জিজ্ঞাসা করতে যাচ্ছি যে তারা কতগুলি স্কোর দেখতে চায়:

to_view = int(input("How many scores would you like to view? "))

আমরা একটি ব্যবহারকারী একটি পূর্ণসংখ্যা মধ্যে সন্নিবেশ যে মান রূপান্তর. এর কারণ হল xrange() ফাংশন শুধুমাত্র পূর্ণসংখ্যা সমর্থন করে।

এর পরে, একটি ফর লুপ ব্যবহার করে আমাদের লিডারবোর্ড তালিকায় পুনরাবৃত্তি করি। ব্যবহারকারী কনসোলে দেখার জন্য অনুরোধ করেছেন এমন ফলাফলের সংখ্যা আমরা শুধুমাত্র প্রদর্শন করব:

for l in xrange(0, to_view):
	print(l + 1, leaderboard[l])

আমরা xrange() ব্যবহার করি ফাংশন 0 এবং ব্যবহারকারীর সন্নিবেশিত সংখ্যার মধ্যে সংখ্যার একটি পরিসীমা তৈরি করতে। আমাদের ফর লুপে, আমরা একটি print() ব্যবহার করি xrange() নম্বরের সাথে সম্পর্কযুক্ত লিডারবোর্ড এন্ট্রি প্রিন্ট করার বিবৃতি আমাদের লুপ দেখছে যে তালিকা.

আমরা একজন খেলোয়াড়ের নামের পাশে “l” প্লাস ওয়ানের মান প্রিন্ট করি। এটি আমাদের তাদের অবস্থান দেখতে দেয়। যেহেতু তালিকাগুলি শূন্য থেকে সূচিত করা হয়েছে, আমরা "l" এর সাথে একটি যোগ করি। এটি আমাদের তালিকার প্রথম খেলোয়াড়কে "0" অবস্থানে থাকতে বাধা দেয় এবং আরও অনেক কিছু।

আসুন আমাদের কোড চালাই এবং দেখুন কি হয়:

How many scores would you like to view? 2
Traceback (most recent call last):
  File "main.py", line 5, in <module>
	for l in xrange(0, to_view):
NameError: name 'xrange' is not defined

আমাদের প্রোগ্রাম একটি ত্রুটি প্রদান করে৷

সমাধান

আমরা xrange() ব্যবহার করেছি সংখ্যার একটি পরিসীমা তৈরি করতে ফাংশন। পাইথন 2 এ, এটি বৈধ হবে। আমরা আমাদের প্রোগ্রাম চালানোর জন্য পাইথন 3 ব্যবহার করছি, যার মানে আমরা xrange() উল্লেখ করতে পারি না ফাংশন

আমাদের ত্রুটি সমাধান করতে, আমাদের xrange() প্রতিস্থাপন করতে হবে range() এর সাথে পদ্ধতি:

for l in range(0, to_view):
	print(l + 1, leaderboard[l])

এই ব্যবহারের ক্ষেত্রে, উভয়ই xrange() এবং range() একই ফলাফল ফিরে আসবে। এটি কাজ করে কিনা তা দেখতে আমাদের কোড চালানো যাক:

How many scores would you like to view? 2
1 Alex
2 Jonas

আমাদের প্রোগ্রাম সফলভাবে টুর্নামেন্টের খেলোয়াড়দের নাম প্রদর্শন করে যারা লিডারবোর্ডে প্রথম দুটি অবস্থানে উপস্থিত হয়।

xrange() পদ্ধতিকে পুনরায় সংজ্ঞায়িত করা

এই সমস্যার একটি সম্ভাব্য সমাধান হল আপনার প্রোগ্রামের শুরুতে xrange নামক একটি ভেরিয়েবল সংজ্ঞায়িত করা যা range() এর সমান। ফাংশন:

xrange = range

এই ত্রুটির জন্য এটি একটি ভাল সমাধান নয়। এর কারণ হল আপনি বিদ্যমান পদ্ধতির নাম পরিবর্তনের সমস্যা এড়িয়ে যাচ্ছেন। পাইথন 3 কোডবেসের মাধ্যমে পড়া এবং xrange() দেখার জন্য এটি বিভ্রান্তিকর হবে বিবৃতি, এমনকি যদি আপনি xrange-কে একটি পরিবর্তনশীল হিসেবে সংজ্ঞায়িত করেন।

সেরা সমাধান হল আপনার xrange() এর নাম পরিবর্তন করা range()-এর বিবৃতি এবং আপনার কোডবেস পাইথন 3 এ কাজ করে তা নিশ্চিত করতে প্রয়োজনীয় পরিবর্তন করতে।

উপসংহার

আপনি যখন xrange() ব্যবহার করার চেষ্টা করেন তখন "NameError:name 'xrange' সংজ্ঞায়িত করা হয়নি" ত্রুটিটি উত্থাপিত হয় Python 3-এ সংখ্যার একটি পরিসর তৈরি করার পদ্ধতি। এই ত্রুটিটি সমাধান করতে, range() ব্যবহার করতে আপনার কোড আপডেট করুন। পদ্ধতি যা পাইথন 3 এর সাথে আসে।

range() পাইথন 3 হল xrange() এর প্রতিস্থাপন . এখন আপনি জানেন যে আপনাকে একজন পেশাদারের মতো এই ত্রুটিটি কীভাবে সমাধান করতে হবে!


  1. পাইথনে ডিফ দিয়ে সংজ্ঞায়িত একটি ফাংশন কীভাবে প্লট করবেন? (ম্যাটপ্লটলিব)

  2. পাইথনে issubset() ফাংশন

  3. কিভাবে পাইথনে একটি স্ট্রিং হিসাবে একটি ফাংশন নাম পেতে?

  4. পাইথনে NameError ব্যতিক্রম কিভাবে ধরবেন?