ময়মনসিংহের একটি বিদ্যালয়ের দশম শ্রেণির শিক্ষার্থী সুমাইয়া পাইথনে ফলাফলের গ্রেড বের করার একটি প্রোগ্রাম লেখে (কোড ক)। তার বন্ধু রাফি একই কাজের জন্য শর্তগুলো উল্টো ক্রমে সাজিয়ে আরেকটি প্রোগ্রাম লেখে (কোড খ)।
কোড ক:
marks = int(input('Enter marks: '))
if marks >= 80:
print('A+')
elif marks >= 70:
print('A')
elif marks >= 60:
print('A-')
elif marks >= 40:
print('Pass')
else:
print('Fail')
কোড খ:
marks = int(input('Enter marks: '))
if marks >= 40:
print('Pass')
elif marks >= 60:
print('A-')
elif marks >= 70:
print('A')
elif marks >= 80:
print('A+')
else:
print('Fail')
- ক
টাইপ কাস্টিং কী?
উত্তর দেখাও
কোনো ডেটার ডেটাটাইপ পরিবর্তন করে অন্য ডেটাটাইপে রূপান্তর করাকে টাইপ কাস্টিং বলে, যেমন
int(),float(),str()দিয়ে। - খ
কোড ক-এর প্রথম লাইনে
input()-এর চারপাশেint()ব্যবহার করা হয়েছে কেন? ব্যাখ্যা করো।উত্তর দেখাও
input()ফাংশন সংখ্যা টাইপ করলেও তা সবসময় str (টেক্সট) হিসেবে গ্রহণ করে। str-এর সাথেmarks >= 80এর মতো সংখ্যাগত তুলনা করা যায় না (পাইথনে ত্রুটি আসে)। তাইint()দিয়ে ইনপুটকে পূর্ণসংখ্যায় রূপান্তর করেmarks-এ রাখা হয়েছে, যাতে তুলনা সঠিকভাবে হয়। - গ
কোড ক-এ ইনপুট যথাক্রমে ৮৫, ৬৫ ও ৩০ দিলে (তিনবার আলাদাভাবে চালালে) কী আউটপুট পাওয়া যাবে? ধাপে ধাপে দেখাও।
উত্তর দেখাও
কোড ক-এ শর্তগুলো ওপর থেকে নিচে পরীক্ষিত হয় এবং প্রথম সত্য শর্তের ব্লকটি চলে। ইনপুট ৮৫:
85 >= 80সত্য, আউটপুটA+। ইনপুট ৬৫:65 >= 80ও65 >= 70মিথ্যা,65 >= 60সত্য, আউটপুটA-। ইনপুট ৩০: কোনো শর্তই (>= 80, 70, 60, 40) সত্য নয়, তাইelseচলে এবং আউটপুটFail। (python৩-এ চালিয়ে যাচাই করা হয়েছে:A+,A-,Fail।) - ঘ
কোড খ-এ ৮৫ ইনপুট দিলে কোন আউটপুট আসবে এবং কেন তা ভুল? কোডটি সংশোধন করার উপায় লেখো এবং তিনজন শিক্ষার্থীর নম্বরের জন্য
forলুপ ব্যবহার করে সংশোধিত কোড লেখো।উত্তর দেখাও
কোড খ-এ ৮৫ ইনপুট দিলে
Passআসে (৬৫-এর জন্যওPassআসে, ৩০-এর জন্যFail)। কারণelifওপর থেকে নিচে পরীক্ষিত হয় এবং প্রথম সত্য শর্তের ব্লকটি চলে। সবচেয়ে ওপরেmarks >= 40থাকায় ৪০ বা তার বেশি সব নম্বরেই এটি সত্য হয়, ফলেA+,A,A-পর্যন্ত নিচের শর্তগুলোয় কখনোই পৌঁছানো যায় না। সংশোধনের উপায়: শর্তগুলো বড় থেকে ছোট ক্রমে সাজাতে হবে, যেমন কোড ক-এ আছে (প্রথমে>= 80, শেষে>= 40)। তিনজনের জন্যforলুপ:for i in range(3): marks = int(input('Enter marks: ')) if marks >= 80: print('A+') elif marks >= 70: print('A') elif marks >= 60: print('A-') elif marks >= 40: print('Pass') else: print('Fail')ইনপুট ৮৫, ৬৫, ৩০ দিলে আউটপুট
A+,A-,Failআসে (python৩-এ চালিয়ে যাচাই করা)।