একটি Python KeyError উত্থাপিত হয় যখন আপনি একটি অভিধানে একটি আইটেম অ্যাক্সেস করার চেষ্টা করেন যা বিদ্যমান নেই৷ আপনি বিদ্যমান অভিধান থেকে একটি আইটেম নির্বাচন করতে আপনার প্রোগ্রাম পরিবর্তন করে এই ত্রুটিটি ঠিক করতে পারেন। অথবা আপনি প্রথমে একটি কী বিদ্যমান আছে কিনা তা পরীক্ষা করে এই ত্রুটিটি পরিচালনা করতে পারেন।
কিভাবে একটি পাইথন কী ত্রুটি পরিচালনা করবেন
আপনি কি শুধু একটি KeyError দ্বারা স্বাগত জানিয়েছেন? চিন্তা করবেন না! যখন একটি KeyError উত্থাপিত হয়, এর মানে হল যে আপনি একটি অভিধানের ভিতরে একটি কী অ্যাক্সেস করার চেষ্টা করছেন যা বিদ্যমান নেই। এই ত্রুটিটি হস্তান্তর করা এবং ঠিক করা সহজ যখন আপনি জানেন কিভাবে।
কী-এররগুলি একটি চেষ্টা করে পরিচালনা করা যেতে পারে...ব্লক ব্যতীত, "ইন" কীওয়ার্ড ব্যবহার করে, অথবা ইনডেক্সিং ব্যবহার করে আগে থেকেই একটি কী চেক করে।
এই গাইডে, আমরা পাইথন কী-এররগুলি কী এবং কেন সেগুলি উত্থাপিত হয় সে সম্পর্কে কথা বলতে যাচ্ছি। আমরা একটি ত্রুটির একটি উদাহরণ এবং কীভাবে এটি ঠিক করতে হবে তা নিয়ে চলব যাতে আপনি ভবিষ্যতে কী-এর ত্রুটিগুলিকে কীভাবে সমাধান করবেন তা জানতে পারবেন৷
চলুন শুরু করা যাক!
পাইথন কী ত্রুটি কী?
একটি Python KeyError ঘটে যখন আপনি একটি অভিধানে একটি আইটেম অ্যাক্সেস করার চেষ্টা করেন যা ইন্ডেক্সিং সিনট্যাক্স ব্যবহার করে বিদ্যমান নেই। এই ত্রুটিটি উত্থাপিত হয়েছে কারণ পাইথন এমন একটি আইটেমের জন্য একটি মান ফেরত দিতে পারে না যা অভিধানে বিদ্যমান নেই৷
একটি পাইথন অভিধান হল কী-মানের জোড়ার একটি সেট যা কোঁকড়া বন্ধনী ({}):
raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }
কীগুলি হল "নাম", "দাম", এবং "RAM"। একটি অভিধানে একটি কোলনের আগে কীগুলি উপস্থিত হয়৷
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।
আমাদের অভিধানে ইউএসবি পোর্টের সংখ্যা পুনরুদ্ধার করার চেষ্টা করলে কী হয় তা দেখা যাক:
print(raspberry_pi["usb_ports"])
আমাদের কোড ফিরে আসে:
KeyError: 'usb_ports'
এই ত্রুটিটি আমাদের বলে যে আমরা নির্দিষ্ট করেছি সেটি বিদ্যমান নেই৷ এই ক্ষেত্রে, অনুপস্থিত কী হল "usb_ports"৷
৷কী ত্রুটি পাইথন:সমাধান
একটি পাইথন অভিধান কী ত্রুটি পরিচালনা করতে আপনি করতে পারেন:
- সূচীকরণ ব্যবহার করে আগাম একটি কী চেক করুন
- কি চেক করতে "ইন" কীওয়ার্ড ব্যবহার করুন
- একটি চেষ্টা ব্যবহার করুন...ব্লক ছাড়া।
KeyError হ্যান্ডেল করার সমাধান যা আপনার জন্য সবচেয়ে ভালো কাজ করে তা আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে পরিবর্তিত হবে।
ডিকশনারি get() পদ্ধতি ব্যবহার করুন
পাইথন অভিধান get() পদ্ধতি একটি অভিধানে একটি মান প্রদান করে। আপনি get() পদ্ধতির সাথে একটি ডিফল্ট মান নির্দিষ্ট করতে পারেন। আপনার নির্দিষ্ট করা কীটির নামের কোনো মান না থাকলে এই ডিফল্ট মানটি ফেরত দেওয়া হয়।
নিম্নলিখিত কোড বিবেচনা করুন:
raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" } get_key = input("What information would you like to retrieve (name, price, RAM)? ") print("The {} for this computer is {}.".format(get_key, raspberry_pi.get(get_key, "not available"))
আসুন পাইথন ইন্টারপ্রেটার ব্যবহার করে আমাদের কোড রান করি এবং দেখি কি হয়:
What information would you like to retrieve? ALU The ALU for this computer is not available.
আমাদের অভিধান থেকে "ALU" পুনরুদ্ধার করতে আমাদের কোড অভিধান get() পদ্ধতি ব্যবহার করে। এই কী নামের সাথে কোন মান মিল নেই। get() পদ্ধতিটি আমাদের নির্দিষ্ট করা ডিফল্ট মান প্রদান করে, যা "উপলব্ধ নয়"৷
সূচীকরণ ব্যবহার করে অগ্রিম একটি কী পরীক্ষা করুন
আপনি একটি KeyError এড়াতে ইন্ডেক্সিং ব্যবহার করে একটি কী-এর অস্তিত্ব পরীক্ষা করতে পারেন। যদি একটি কী একটি অভিধানে থাকে, আপনি সেই কীটি ব্যবহার করতে পারেন। অন্যথায়, আপনি আপনার প্রোগ্রামকে অন্য কিছু করার নির্দেশ দিতে পারেন যা সেই কীটির উপর নির্ভর করে না।
আসুন একটি প্রোগ্রাম লিখি যা পাইথনে আমাদের "রাস্পবেরি_পি" অভিধানে কীগুলি অ্যাক্সেস করে। ইনডেক্সিং ব্যবহার করে আমাদের কী আমাদের অভিধানে আছে কিনা তা পরীক্ষা করা যাক:
raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" } get_key = input("What information would you like to retrieve (name, price, RAM)? ") if raspberry_pi[get_key]: print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key])) else: print("This information is not available.")
আমাদের কী বিদ্যমান কিনা তা পরীক্ষা করার জন্য আমরা পাইথন “if” স্টেটমেন্ট ব্যবহার করেছি। "raspberry_pi[get_key]" শুধুমাত্র একটি মান প্রদান করবে যদি কী বিদ্যমান থাকে। এর মানে হল আমাদের কী বিদ্যমান থাকলে, আমাদের "if" বিবৃতি কার্যকর হবে। আমাদের কী বিদ্যমান না থাকলে, "অন্য" বিবৃতিটি কার্যকর হবে৷
৷আসুন আমাদের রাস্পবেরি পাই এর জন্য RAM খুঁজে বের করার চেষ্টা করি:
What information would you like to retrieve (name, price, RAM)? RAM The RAM for this computer is 4GB.
এখন, কম্পিউটারে কতগুলি USB পোর্ট রয়েছে তা খুঁজে বের করার চেষ্টা করা যাক:
What information would you like to retrieve (name, price, RAM)? USB This information is not available.৷
আমাদের কোড একটি KeyError বাড়ায় না! কারণ এটি ব্যবহার করার আগে আমরা প্রথমে আমাদের কী বিদ্যমান কিনা তা পরীক্ষা করেছি। আমরা যদি আমাদের "অন্য" বিবৃতিতে রাস্পবেরি_পি[গেট_কি] ব্যবহার করতাম, তাহলে আমাদের কোড একটি কী-এরর ফিরিয়ে দেবে।
একটি চেষ্টা ব্যবহার করে...ব্লক ছাড়া
একটি পাইথন চেষ্টা...ব্লক ছাড়া কোডের একটি লাইন চালানোর চেষ্টা করবে। যদি কোডের সেই লাইনটি চালানো না যায়, তাহলে আমাদের কোড আপনার উল্লেখ করা ব্যতিক্রমগুলি অনুযায়ী একটি কাস্টম ত্রুটি উত্থাপন করবে৷
আমরা চেষ্টা করতে পারি...একটি ত্রুটির অস্তিত্ব নির্ণয় করতে ব্লক ব্যতীত এবং একটি অপ্রত্যাশিত কী-ইররকে আমাদের পাইথন প্রোগ্রামকে সাহায্য করা থেকে থামাতে পারি।
আসুন আমাদের কম্পিউটারের উদাহরণের জন্য একটি কাস্টম ত্রুটি সংজ্ঞায়িত করি আগে থেকে চেষ্টা করে দেখুন...ব্লক ছাড়া:
raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" } get_key = input("What information would you like to retrieve (name, price, RAM)? ") try: print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key])) except KeyError: print("This information is not available.")
কনসোলে রাস্পবেরি পাই কম্পিউটার সম্পর্কে একটি নির্দিষ্ট তথ্য প্রিন্ট করার চেষ্টা করার জন্য ব্লক ব্যতীত আমরা একটি চেষ্টা ব্যবহার করি। যদি আমাদের কোড "ট্রাই" ব্লকের কোথাও একটি কী-এরর উত্থাপন করে, তাহলে আমাদের কোড "ব্যতীত" ব্লকের বিষয়বস্তু চালায়।
এর মানে হল যে প্রতিবার একটি KeyError উত্থাপিত হয়, "এই তথ্যটি উপলব্ধ নয়" কনসোলে প্রিন্ট করা হয়। আসুন কম্পিউটারের নাম সম্পর্কে জানার চেষ্টা করি:
What information would you like to retrieve (name, price, RAM)? name The name for this computer is Raspberry Pi 4.
এখন, কম্পিউটারের USB পোর্ট উপলব্ধতা সম্পর্কে জানার চেষ্টা করা যাক:
What information would you like to retrieve (name, price, RAM)? USB This information is not available.৷
আমাদের কোড আমাদের "ট্রাই" ব্লকের ভিতরে একটি KeyError উত্থাপন করে। এর ফলে আমাদের কোড কোডের ব্লক "ব্যতীত" চালানো হয়।
এ ব্যবহার করে অগ্রিম একটি কী জন্য চেক করুন
"ইন" কীওয়ার্ডটি পাইথনের সদস্যপদ অপারেটরগুলির মধ্যে একটি। এটি একটি আইটেম মান একটি তালিকা আছে কিনা তা পরীক্ষা করে. আপনি "ইন" কীওয়ার্ড ব্যবহার করতে পারেন একটি কী একটি অভিধানের ভিতরে আছে কিনা তা পরীক্ষা করতে।
এই প্রোগ্রামটি কনসোলে এর মান প্রিন্ট করার আগে একটি কী বিদ্যমান কিনা তা পরীক্ষা করবে:
raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" } get_key = input("What information would you like to retrieve (name, price, RAM)? ") if get_key in raspberry_pi: print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key])) else: print("This information is not available.")
এই কোডটি পরীক্ষা করবে যে "get_key" এর মানটি "raspberry_pi" অভিধানের মধ্যে একটি কী কিনা। কীটি বিদ্যমান থাকলে, "if" বিবৃতিটি চলবে। অন্যথায়, "অন্য" বিবৃতি চলবে। আসুন কম্পিউটারের CPU সম্পর্কে তথ্য পরীক্ষা করার চেষ্টা করি:
What information would you like to retrieve (name, price, RAM)? CPU This information is not available.
কম্পিউটারের নাম পরীক্ষা করা যাক:
What information would you like to retrieve (name, price, RAM)? name The name for this computer is Raspberry Pi 4.
আমাদের কোড কাজ করে! যখন আমরা একটি কী অনুসন্ধান করি যা বিদ্যমান নেই, তখন "অন্য" বিবৃতিটি চলে। এর মানে হল যে আমাদের কোডে কোন কী-এরর উত্থাপিত হতে পারে না কারণ আমরা "অন্য" ব্লকে একটি কী অ্যাক্সেস করার চেষ্টা করি না৷
আমাদের কোড কাজ করে! যখন আমরা একটি কী অনুসন্ধান করি যা বিদ্যমান নেই, তখন "অন্য" বিবৃতিটি চলে। এর মানে হল যে আমাদের কোডে কোন কী-এরর উত্থাপিত হতে পারে না কারণ আমরা "অন্য" ব্লকে একটি কী অ্যাক্সেস করার চেষ্টা করি না৷
উপসংহার
একটি কী-এরর উত্থাপিত হয় যখন আপনি একটি অভিধান থেকে একটি মান অ্যাক্সেস করার চেষ্টা করেন যা বিদ্যমান নেই। একটি কী ত্রুটি সমাধান করতে, আপনি এটি ব্যবহার করার আগে একটি কী আপফ্রন্ট পরীক্ষা করতে পারেন এবং কীটি বিদ্যমান থাকলেই এটি ব্যবহার করতে পারেন। আপনি একটি চেষ্টা ব্যবহার করতে পারেন...একটি মূল ত্রুটি পরিচালনা করতে ব্লক ছাড়া।
কিভাবে পাইথন প্রোগ্রামিং ভাষা শিখতে হয় সে সম্পর্কে পরামর্শের জন্য, আমাদের বিস্তৃত কিভাবে পাইথন শিখতে হয় নির্দেশিকা দেখুন। আপনি এই নির্দেশিকায় শীর্ষ শিক্ষার সংস্থান, বই এবং কোর্সের লিঙ্ক পাবেন৷
৷