কম্পিউটার টিউটোরিয়াল

পাইথন SyntaxError: Missing parentheses in call to ‘print’ সমাধান

পাইথন ৩-এ, আপনাকে সব প্রিন্ট স্টেটমেন্ট প্যারেনথেসিস দিয়ে এনক্লোজ করতে হবে। আপনি যদি কোনো স্ট্রিং কনসোলে প্রিন্ট করার চেষ্টা করেন সেটি প্যারেনথেসিসে এনক্লোজ না করে, আপনি "SyntaxError: Missing parentheses in call to 'print'" এরর সম্মুখীন হবেন।

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

SyntaxError: Missing parentheses in call to 'print'

পাইথন ৩ প্রোগ্রামিং ল্যাঙ্গুয়েজের তৃতীয় মেজর আপডেট। সাম্প্রতিক বছরে, এটি ব্যবহার করার প্রিয় ভার্সন হয়েছে।

পাইথন ৩ প্রিন্ট স্টেটমেন্ট লেখার পদ্ধতি পরিবর্তন করেছে। স্ট্যান্ডআলোন print স্টেটমেন্ট পাইথন ২-এ কাজ করে এবং কনসোলে একটি স্টেটমেন্ট প্রিন্ট করে।

পাইথন ৩-এ, print একটি ফাংশন। এর মানে আপনাকে কনসোলে প্রিন্ট করতে চাইলে সে স্ট্রিংয়ের কন্টেন্ট প্যারেনথেসিস দিয়ে সারাউন্ড করতে হবে যেভাবে আপনি যেকোনো অর্ডিনারি ফাংশন কল করতে পারেন।

একটি উদাহরণ সিনেরিও

একটি প্রোগ্রাম লিখুন যা একটি চতুর্থ শ্রেণির ক্লাসের সব ছাত্রের নাম প্রিন্ট করে যাদের নাম "A" দিয়ে শুরু হয়। শুরুতে ক্লাসের ছাত্রদের নাম ধারণকারী একটি লিস্ট ডিফাইন করি:

students = ["Alex", "Alexander", "Piper", "Molly", "Hannah"]

এরপর, এই লিস্টের সব আইটেমের ওপর ইটারেট করার একটি for লুপ লিখি। for লুপে, আমরা একটি if স্টেটমেন্ট ব্যবহার করব চেক করতে প্রতিটি নাম "A" দিয়ে শুরু হয় কিনা:

for s in students:
    if s.startswith("A") == True:
        print s

startswith() মেথড চেক করে একটি স্ট্রিং নির্দিষ্ট ক্যারেক্টার বা ক্যারেক্টার সেট দিয়ে শুরু হয় কিনা। কোড চেক করে "students" লিস্টের প্রতিটি নাম "A" দিয়ে শুরু হয় কিনা।

কোডের শেষে একটি এক্সট্রা প্রিন্ট স্টেটমেন্ট যোগ করি যা বলে প্রোগ্রাম রানিং ফিনিশ হয়েছে:

print "Above are all the students whose names begin with A."

এখন আপনি প্রোগ্রাম রান করার জন্য প্রস্তুত:

 File "main.py", line 5
    print s
    ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(s)?

কোড আমাদের জানিয়ে দিচ্ছে প্রোগ্রামে একটি সিনট্যাক্স এরর আছে।

সমাধান

হ্যান্ডিলি, পাইথন ইতিমধ্যেই এরর মেসেজে সমাধানটি অফার করেছে।

এটি কারণ, পাইথন ৩ এর পূর্বের ভার্সনে, প্রিন্ট স্টেটমেন্টের চারদিকে প্যারেনথেসিস না দিলে একটি এরর আরাইজ হতো যেটি শুধু "invalid syntax" দেখাত। এই মেসেজ অ্যമ്പiguous কারণ ইনভ্যালিড সিনট্যাক্স অনেক ইশুর কারণে হতে পারে। তাই, পাইথন নতুন "missing parenthesis" এরর মেসেজ প্রাইমারিলি ইউজারদের হেল্প করার জন্য ইন্ট্রোডিউস করল।

এই সমস্যা সমাধান করতে, কনসোলে প্রিন্ট করতে চায় যেসব ভ্যালু সেগুলো প্যারেনথেসিস দিয়ে সারাউন্ড করুন:

for s in students:
    if s.startswith("A") == True:
        print(s)
print("Above are all the students whose names begin with A.")

আপনি print লাইন কোডে "s"-কে প্যারেনথেসিসে এনক্লোজ করেছেন। আপনি কনসোলে প্রিন্ট করা শেষ স্ট্রিংটিও প্যারেনথেসিসে এনক্লোজ করেছেন। প্রোগ্রাম কাজ করছে কিনা দেখি:

Alex
Alexander
Above are all the students whose names begin with A.

আমাদের কোড দেখাচ্ছে "A" দিয়ে শুরু হওয়া দুটি ছাত্র রয়েছে। একবার আমাদের ছাত্রের লিস্ট ইটারেট হয়ে গেলে, আমাদের প্রোগ্রাম আউটপুট ডিসক্রাইব করা একটি মেসেজ প্রিন্ট করে।

উপসংহার

পাইথন "SyntaxError: Missing parentheses in call to 'print'" এরর তখন আরাইজ হয় যখন আপনি কোনো ভ্যালু কনসোলে প্রিন্ট করার চেষ্টা করেন সেটি প্যারেনথেসিসে এনক্লোজ না করে।

এই এরর সমাধান করতে, কনসোলে প্রিন্ট করতে চায় যেসব স্টেটমেন্ট সেগুলোর চারদিকে প্যারেনথেসিস যোগ করুন। এর কারণ হলো, পাইথন ৩-এ, print একটি স্টেটমেন্ট নয়। এটি একটি ফাংশন। আপনি যদি একটি ফাংশন কল করতে চান যাতে সেটি রান হয়, আপনাকে অবশ্যই প্যারেনথেসিস ব্যবহার করতে হবে।

এখন আপনার এই কমন পাইথন এরর প্রো মত ফিক্স করার নলেজ আছে!

  1. পাইথনে প্যাটার্ন প্রিন্ট করার পদ্ধতি

  2. পাইথন ডিকশনারি has_key() মেথড

  3. পাইথনে কম্প্রিহেনশন (Comprehensions)

  4. পাইথন ডিকশনারি-এ মিসিং কী হ্যান্ডলিং (KeyError এড়ানো)