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

পাইথন SyntaxError: continue not properly in loop সমাধান

continue কীওয়ার্ড একটি প্রোগ্রামের অর্ডারকে একটি লুপের পরবর্তী ইটারেশন (iteration)-এ সরিয়ে দেয়। আপনি যদি একটি continue স্টেটমেন্ট একটি for লুপ বা while লুপের বাইরে ব্যবহার করেন, তবে SyntaxError: continue not properly in loop এররটি উত্থাপিত হবে।

এই গাইডটি এই এররটির অর্থ এবং কেন আপনি এর সম্মুখীন হতে পারেন সেটি এক্সপ্লোর (explore) করে। এটি আপনাকে কীভাবে এটি কাজ করে সেটি বুঝাতে এই এররটির একটি উদাহরণের মাধ্যমে যাবে।

SyntaxError: continue not properly in loop

একটি continue স্টেটমেন্ট আপনাকে একটি for লুপ বা while লুপের পরবর্তী ইটারেশনে যেতে দেয়। continue স্টেটমেন্টগুলো, break স্টেটমেন্টের মতো, কোনো আর্গুমেন্ট নেয় না। সেগুলো একটি প্রোগ্রামে একা দাঁড়ায়।

আপনি একটি continue স্টেটমেন্ট শুধুমাত্র একটি লুপে ব্যবহার করতে পারেন। এর কারণ হল continue স্টেটমেন্টগুলো লুপে প্রদর্শিত হতে ডিজাইন করা হয়েছে। আপনি একটি লুপের বাইরে একটি প্রোগ্রামকে continue করতে নির্দেশ করতে continue স্টেটমেন্ট ব্যবহার করতে পারবেন না কারণ কীওয়ার্ডটি ইন্টারপ্রেট করার জন্য কোনো কনটেক্সট (context) নেই যে কী continuación করতে হবে।

continue স্টেটমেন্টগুলো একটি if স্টেটমেন্ট বা অন্য কোনো কোড ব্লকের ভিতরে প্রদর্শিত হতে পারে, যতক্ষণ না সেই কোড ব্লকটি একটি লুপের ভিতরে থাকে।

একটি উদাহরণ পরিস্থিতি

চলুন একটি কফি হাউসে ইনভেন্টরি ম্যানেজমেন্ট সিস্টেম (inventory management system) এর ইনপুট যাচাই (validate) করার একটি প্রোগ্রাম তৈরি করি। একটি ইনপুট বৈধ হতে হলে, সেটিতে কমপক্ষে তিনটি ক্যারেক্টার থাকতে হবে।

শুরুতে, ব্যবহারকারীকে একটি প্রোডাক্টের নাম ইনপুট দিতে বলুন যা সে সিস্টেমে ইনপুট দিতে চায়:

product_name = input("Enter the product name: ")

এরপর, এই রেসপন্সটি যাচাই করি। আমরা একটি if স্টেটমেন্ট ব্যবহার করব নিশ্চিত করতে যে ইনপুটটি কমপক্ষে তিনটি ক্যারেক্টার দীর্ঘ:

if len(product_name) < 3:
    print("Product names must be at least three characters long.")
    continue
else:
    break
print("Your product name is valid.")

যদি ব্যবহারকারী তিনটি ক্যারেক্টার থেকে কম দীর্ঘ একটি প্রোডাক্ট নাম ইনপুট দেয়, তবে একটি মেসেজ কনসোলে প্রিন্ট হয় এবং তারপর একটি continue স্টেটমেন্ট চলে। অন্যথায়, একটি break স্টেটমেন্ট চলে। আমরা len() মেথড ব্যবহার করি প্রোডাক্ট নামের দৈর্ঘ্য বের করতে।

আমাদের প্রোডাক্ট নামটি বৈধ হলে, একটি মেসেজ কনসোলে প্রদর্শিত হবে যা বলে এটি সঠিক।

এখন যেহেতু আমরা আমাদের ভ্যালিডেটর (validator) লিখেছি, আমরা আমাদের কোডটি রান করার জন্য প্রস্তুত। দেখি কী হয় যখন আমরা আমাদের প্রোগ্রামটি রান করি:

 File "main.py", line 3
    continue
    ^
SyntaxError: 'continue' not properly in loop

আমাদের কোড একটি এরর ফেরত দিচ্ছে।

সমাধান

আমরা continue স্টেটমেন্টগুলো ব্যবহার করেছি আমাদের প্রোগ্রামকে বলতে যে এটি চলতে থাকুক যদি একটি নির্দিষ্ট শর্ত পূরণ হয়। যদিও আমরা একটি if স্টেটমেন্টে continue স্টেটমেন্ট ব্যবহার করতে পারি, আমাদের continue স্টেটমেন্টটি অবশ্যই কোথাও একটি লুপের ভিতরে প্রদর্শিত হতে হবে।

আমরা আমাদের প্রোগ্রামে কোনো লুপ ব্যবহার করিনি যা আমাদের continue ব্যবহারকে কিছুটা কাউন্টারপ্রোডাক্টিভ (counterproductive) করে তোলে। আরও কিছু হলো আমরা continue ব্যবহার করছি, যা এররটির কারণ। এই এররটি ঠিক করতে, আমাদের আমাদের কোডকে একটি লুপের ভিতরে মুড়ে দিতে হবে:

while True:
    product_name = input("Enter the product name: ")
    if len(product_name) < 3:
        print("Product names must be at least three characters long.")
        continue
    else:
        break
print("Your product name is valid.")

আমরা আমাদের কোডে একটি পরিবর্তন করেছি। আমাদের প্রোগ্রামের সবকিছু এখন একটি while লুপের ভিতরে। এর মানে আমাদের ব্যবহারকারীকে একটি প্রোডাক্ট নাম ইনপুট দিতে বলা হবে যতক্ষণ না লুপটি থামে।

আমাদের লুপটি শুধুমাত্র তখন থামবে যখন ব্যবহারকারী একটি বৈধ প্রোডাক্ট নাম ইনপুট দেবে। অন্যথায়, একটি মেসেজ কনসোলে প্রিন্ট হবে এবং আমাদের লুপটি আবার ইটারেট (iterate) করবে।

আমাদের প্রোগ্রামটি রান করুন এবং ফলাফল দেখুন:

Your product name is valid.
Enter the product name: Rwandan

আমাদের কোড সফলভাবে রান হয়েছে! একটি অবৈধ প্রোডাক্ট নাম দিয়ে আমাদের কোডটি রান করার চেষ্টা করুন:

Enter the product name: RW
Product names must be at least three characters long.
Enter the product name:

আমাদের প্রোগ্রাম আমাদের জানাচ্ছে যে প্রোডাক্ট নামটি অবৈধ এবং আমাদের অন্য একটি প্রোডাক্ট নাম ইনপুট দিতে বলছে।

উপসংহার

SyntaxError: continue not properly in loop এররটি তখন উত্থাপিত হয় যখন আপনি একটি continue স্টেটমেন্ট একটি for লুপ বা while লুপের বাইরে ব্যবহার করার চেষ্টা করেন। এই এররটি সমাধান করতে, আপনার কোডে যেকোনো continue স্টেটমেন্টকে একটি লুপের ভিতরে মুড়ে দিন।

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

  1. Python-এ do...while লুপ কেন নেই?

  2. পাইথন if ক্লজে continue স্টেটমেন্ট ব্যবহার করা যায় কি?

  3. পাইথনে is not অপারেটর কী?

  4. পাইথনে not in অপারেটর কী?