কম্পিউটার

Python TypeError:'str' সলিউশনের অ-ইনট দ্বারা ক্রম গুণ করা যাবে না

আপনি পাইথনে দুটি সংখ্যা একসাথে গুণ করতে পারেন। আপনি একটি স্ট্রিং দ্বারা একটি সংখ্যা গুণ করতে পারেন. এটি একটি স্ট্রিংয়ের একটি ক্রম প্রদান করে যা একটি নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি করে।

আপনি যদি একটি স্ট্রিংকে অন্য একটি স্ট্রিং দ্বারা গুণ করার চেষ্টা করেন, তাহলে আপনি "TypeError:'str'' টাইপের অ-ইনটের দ্বারা অনুক্রমকে গুণিত করতে পারবেন না" ত্রুটির সম্মুখীন হন৷

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

TypeError:'str' টাইপের অ-int দিয়ে ক্রম গুণ করা যাবে না

স্ট্রিং হল এক ধরনের সিকোয়েন্স। কারণ এতে এমন অক্ষর রয়েছে যার উপরে পাইথন পুনরাবৃত্তি করতে পারে। অন্যান্য ধরণের সিকোয়েন্সের মধ্যে রয়েছে টুপল, অভিধান এবং তালিকা।

আপনি একটি স্ট্রিং তৈরি করতে গুণন অপারেটর (*) ব্যবহার করেন যা একটি স্ট্রিংয়ের বিষয়বস্তু পুনরাবৃত্তি করে। নিম্নলিখিত কোড বিবেচনা করুন:

print("Cakes! " * 2)

এই কোডটি ফিরে আসে:"কেকস! কেক!" গুণন অপারেটর আমাদের স্ট্রিং দুবার পুনরাবৃত্তি করে।

আপনি একটি স্ট্রিং দ্বারা একটি স্ট্রিং গুণ করতে গুণন অপারেটর ব্যবহার করতে পারবেন না। পূর্ণসংখ্যা এবং ফ্লোটিং-পয়েন্ট সংখ্যা হল একমাত্র মান যা একই ডেটা টাইপের মান দিয়ে গুণ করা যায়। পাইথনের জন্য দুটি স্ট্রিংকে গুণিত করে ব্যাখ্যা করার কোন উপায় নেই।

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

আসুন একটি প্রোগ্রাম তৈরি করি যা একটি রেস্তোরাঁ তাদের জ্যাম স্কোনে বৃহস্পতিবার বিকেলে কত টাকা উপার্জন করেছে তা গণনা করে।

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

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

শুরু করার জন্য, আমাদের একটি জ্যাম স্কোনের দাম নির্ধারণ করতে হবে। আমরা ব্যবহারকারীকে একটি ইনপুট() স্টেটমেন্ট ব্যবহার করে ব্যবসার শেষ দিনে কতগুলি জ্যাম স্কোন বিক্রি করেছি তা আমাদের জানাতে বলি:

jam_scone = "1.95"
sold = input("How many jam scones did you sell yesterday? ")

এর পরে, আমরা এই দুটি মান একসাথে গুণ করি। এটি আমাদের বলবে যে একটি নির্দিষ্ট দিনে জ্যাম স্কোন থেকে কত টাকা উপার্জন করা হয়েছে:

earned_from_scones = jam_scone * sold

এখন যেহেতু আমরা জানি স্কোন থেকে কত আয় হয়েছে, আমরা একটি print() লিখি বিবৃতি যা ব্যবহারকারীকে আমাদের গণনার ফলাফল সম্পর্কে অবহিত করে:

print("You earned ${} from selling scones.".format(earned_from_scones))

ফরম্যাট() পদ্ধতি আমাদেরকে "earned_from_scones" এর মান যোগ করতে দেয় যেখানে আমাদের স্ট্রিং-এ আমাদের কোঁকড়া ধনুর্বন্ধনী ({}) প্রদর্শিত হয়।

প্রতিটি স্কোনে কত লাভ হয় তাও আমাদের গণনা করতে হবে। আমরা জানি যে আমরা প্রতিটি স্কোনে 25-সেন্ট লাভ করি। কত লাভ হয়েছে তা গণনা করতে, আমরা এই কোডটি ব্যবহার করি:

profit = sold * 0.25
print("You made a ${} profit from selling scones.".format(profit))

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

How many jam scones did you sell yesterday? 17
Traceback (most recent call last):
  File "main.py", line 4, in <module>
	earned_from_scones = jam_scone * sold
TypeError: can't multiply sequence by non-int of type 'str'

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

সমাধান

আমাদের ত্রুটি থেকে কোড লাইন বিশ্লেষণ করা যাক:

	earned_from_scones = jam_scone * sold

যদিও কোডের এই লাইনটি সূক্ষ্ম দেখাচ্ছে, সেখানে একটি সমস্যা রয়েছে:আমরা দুটি স্ট্রিং মান একসাথে গুণ করার চেষ্টা করছি। আমরা একটি স্ট্রিং হিসাবে "জ্যাম_স্কোন" সংরক্ষণ করি। input() পদ্ধতি একটি স্ট্রিং প্রদান করে যার অর্থ হল sold() একটি স্ট্রিং মান আছে।

এই সমস্যাটি সমাধান করার জন্য, আমাদের নিশ্চিত করতে হবে যে "জ্যাম_স্কোন" এবং "বিক্রীত" উভয়ই ফ্লোটিং পয়েন্ট। এটি আমাদের এই মানগুলির উপর একটি গাণিতিক অপারেশন করতে দেয়।

এর পরে, আমরা এই ভেরিয়েবলের মানগুলি কীভাবে ঘোষণা করি তা পরিবর্তন করি:

jam_scone = 1.95
sold = float(input("How many jam scones did you sell yesterday? "))

"জ্যাম_স্কোন" এর মান আর উদ্ধৃতি চিহ্নে নেই। এটি দেখায় যে আমরা একটি স্ট্রিং থেকে একটি ফ্লোটে "জ্যাম_স্কোন" পরিবর্তন করেছি। আমরা float() পদ্ধতি ব্যবহার করেছি যাতে “sold” এর মানকে ফ্লোটিং-পয়েন্ট নম্বরে রূপান্তর করা হয়।

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

How many jam scones did you sell yesterday? 17
You earned $33.15 from selling scones.
You made a $4.25 profit from selling scones.

আমাদের কোড সফলভাবে কাজ করে। প্রথমত, আমাদের কোড ব্যবহারকারীকে কনসোলে কতগুলি স্কোন বিক্রি করা হয় তা সন্নিবেশ করতে বলে। এরপরে, আমাদের প্রোগ্রাম হিসাব করে যে স্টোরটি স্কোন বিক্রি করে কত টাকা উপার্জন করেছে। অবশেষে, আমাদের প্রোগ্রাম স্কোন বিক্রয় থেকে উৎপন্ন লাভ গণনা করে।

উপসংহার

"TypeError:'str' টাইপের নন-ইন দ্বারা অনুক্রমকে গুণিত করা যায় না" ত্রুটি দেখা দেয় যদি আপনি দুটি স্ট্রিং মান একসাথে গুণ করার চেষ্টা করেন। আপনি হয় দুটি সংখ্যাসূচক মানকে একসাথে গুণ করেছেন বা আপনি শুধুমাত্র একটি স্ট্রিংকে একটি পূর্ণসংখ্যা দ্বারা গুণ করেছেন তা নিশ্চিত করে আপনি এই সমস্যার সমাধান করতে পারেন।

এখন আপনি পাইথনিস্তার মতো এই ত্রুটিটি সমাধান করতে প্রস্তুত!


  1. পাইথনে একটি সিকোয়েন্স ডেটা টাইপ কি?

  2. পাইথনে একটি স্ট্রিংয়ে দীর্ঘতম পুনরাবৃত্তিমূলক ক্রম কীভাবে খুঁজে পাবেন?

  3. পাইথনে ভেরিয়েবলের ধরন স্ট্রিং কিনা তা কীভাবে পরীক্ষা করবেন?

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