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

পাইথন সিনট্যাক্স এরর: EOL হোয়ে স্ক্যানিং স্ট্রিং লিটারেল সমাধান

সেরা ডেভেলপাররাও কোডিং করার সময় 항상 সিনট্যাক্স এরর করেন। প্রোগ্রামিং ভাষার অনেক নিয়ম থাকে এবং একটি টাইপোও এরর করতে পারে।

যদি আপনি "syntaxerror: EOL while scanning string literal" এররটি এনকাউন্টার করেন, চিন্তা করবেন না। এই গাইডে, আমরা এই এররটি কী বোঝায় এবং কীভাবে সমাধান করবেন সেটি আলোচনা করব। আমরা কয়েকটি উদাহরণ সিনেরিওর মাধ্যমে যাবো যাতে আপনি সম্ভাব্য কারণ এবং সমাধান শনাক্ত করতে পারেন।

চলুন শুরু করি!

সমস্যাটি: syntaxerror: EOL while scanning string literal

সিনট্যাক্স হল একটি প্রোগ্রামিং ভাষার ব্যাকরণ। ইংরেজিতে puntuations এবং spelling নিয়ন্ত্রণ করার নিয়ম থাকে; প্রোগ্রামিং ভাষায়ও একইরকম নিয়ম থাকে।

আমাদের এররটি দেখি:

syntaxerror: EOL while scanning string literal

SyntaxError মেসেজটি বলে দেয় যে আমরা পাইথনের সিনট্যাক্স নিয়মগুলো ফলো করিনি।

এররটির বিবরণ ইঙ্গিত দেয় যে পাইথন একটি নির্দিষ্ট ক্যারেক্টার আশা করছে একটি লাইনের শেষে যা পাওয়া যায়নি। উদাহরণস্বরূপ, পাইথন একটি স্ট্রিং ক্লোজ (") ক্যারেক্টার আশা করতে পারে এমন একটি লাইনের শেষে যেখানে আপনি একটি স্ট্রিং খুলেছেন।

যদি একটি সিনট্যাক্স এরর এনকাউন্টার করা হয়, পাইথন প্রোগ্রাম এক্সিকিউট করা বন্ধ করে দেয়। এর কারণ হল পাইথন ইন্টারপ্রেটারের আপনাকে সমস্যাটি সমাধান করার পরżyn পর্যন্ত আপনার কোডের বাকি অংশ পড়ার প্রয়োজন।

এই এররটি সাধারণত+nেন سبب হয়:

  • ভুল সিনট্যাক্স ব্যবহার করে একাধিক লাইনে স্ট্রিং স্প্রেড করা
  • কোটেশন মার্ক মিসিং থাকা
  • মিসম্যাচ কোটেশন মার্ক

উদাহরণ সিনেরিও: মাল্টি-লাইন স্ট্রিংস

পাইথনে, স্ট্রিং একাধিক লাইনে স্প্রেড হতে পারে। মাল্টি-লাইন স্ট্রিংয়ের সিনট্যাক্স ট্র্যাডিশনাল স্ট্রিং থেকে আলাদা। মাল্টি-লাইন স্ট্রিংগুলো ট্রিপল কোটেড হতে হবে, বা তিনটি কোটেশন মার্ক ব্যবহার করে লেখা হয়।

চলুন একটি মাল্টি-লাইন স্ট্রিং দেখি:

def welcome_hero():
    message = "Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman."
    print(message)
welcome_hero()

আমরা welcome_hero() নামে একটি ফাংশন ডিফাইন করেছি। এই ফাংশনটি কনসোলে একটি মেসেজ প্রিন্ট করে। এই মেসেজটি "message" ভেরিয়েবলে অ্যাসাইন করা আছে।

চলুন আমাদের কোডটি রান করি:

File "main.py", line 2
message = "Welcome, Hero!
^
SyntaxError: EOL while scanning string literal

একটি এরর রিটার্ন হয়েছে। এর কারণ হল সিঙ্গেল বা ডবল কোট ব্যবহার করে একটি স্ট্রিং একাধিক লাইনে স্প্রেড হতে পারে না। এই সমস্যাটি সমাধান করতে, আমাদের আমাদের স্ট্রিংকে তিনটি সিঙ্গেল বা ডবল কোট দিয়ে এনক্লোজ করতে হবে। এই ক্যারেক্টারগুলোর মধ্যে যেকোনো টেক্সট স্ট্রিং-এর অংশ হবে:

message = """Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman."""

চলুন এই রিভাইজড লাইন দিয়ে আমাদের কোড রান করি। আমাদের কোড রিটার্ন করে:

Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman.

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

উদাহরণ সিনেরিও: মিসিং কোটেশন মার্ক

স্ট্রিং-এর কন্টেন্ট ডিক্লেয়ার হওয়ার পর স্ট্রিং ক্লোজ করা উচিত। অন্যথায়, পাইথন একটি সিনট্যাক্স এরর রিটার্ন করে। চলুন একটি ক্লোজ না করা স্ট্রিং দেখি:

def welcome_hero():
    message = "Welcome, Hero!
    print(message)
welcome_hero()

চলুন আমাদের কোড রান করি:

File "main.py", line 2
message = "Welcome, Hero!
^
SyntaxError: EOL while scanning string literal

আমরা আমাদের স্ট্রিং ক্লোজ করতে ভুলে গেছি। আপনি যদি সেটি লাইনে দেখেন যেখানে আমরা "message" ভেরিয়েবল ডিক্লেয়ার করেছি, সেখানে কোনো ক্লোজিং স্ট্রিং ক্যারেক্টার নেই।

আমরা এই এররটি ফিক্স করতে পারি আমাদের স্ট্রিংকে সেম কোটেশন মার্ক দিয়ে ক্লোজ করে যা আমরা স্ট্রিং খোলার জন্য ব্যবহার করেছিলাম।

def welcome_hero():
    message = "Welcome, Hero!"
    print(message)
welcome_hero()

আবার আমাদের কোড রান করি:

Welcome, Hero!

আমাদের কোড সফলভাবে রান হয়েছে।

উদাহরণ সিনেরিও: মিসম্যাচ কোটেশন মার্কস

আপনি স্ট্রিং খোলার জন্য যে টাইপের কোট ব্যবহার করেন, স্ট্রিং ক্লোজ করার জন্যও সেম টাইপের কোট ব্যবহার করা উচিত।

যখন আপনি স্ট্রিং খোলার এবং ক্লোজ করার জন্য ব্যবহার করা কোটের টাইপগুলো আলাদা হয়, তখন একটি সিনট্যাক্স এরর রিটার্ন হয়। চলুন একটি প্রোগ্রাম দেখি যা স্ট্রিং খোলে সিঙ্গেল কোট (') দিয়ে এবং ক্লোজ করে ডবল কোট (") দিয়ে:

def welcome_hero():
    message = 'Welcome, Hero!"
    print(message)
welcome_hero()

আমাদের কোড রিটার্ন করে:

File "main.py", line 2
message = 'Welcome, Hero!"
^
SyntaxError: EOL while scanning string literal

আমরা এই সমস্যাটি ফিক্স করতে পারি আমাদের কোটেশন মিলিয়ে। আমরা আমাদের প্রথম কোটেশন ماركকে ডবল কোট (") ব্যবহার করতে পারি:

def welcome_hero():
    message = "Welcome, Hero!"
    print(message)
welcome_hero()

আমাদের কোড এখন সফলভাবে রান হয়: Welcome, Hero!



উপসংহার

"syntaxerror: EOL while scanning string literal" এররটি প্রতিটি পাইথন ডেভেলপার অভিজ্ঞ করে। এই এররটি ঘটে যখন:

  • আপনি একটি স্ট্রিং ক্লোজ করতে ভুলেন
  • আপনি ভুল সিম্বল ব্যবহার করে একটি স্ট্রিং ক্লোজ করেন
  • আপনি তিনটি কোটের বদলে একটি কোটেশন মার্ক ব্যবহার করে একটি মাল্টি-লাইন স্ট্রিং ডিক্লেয়ার করেন

এই এররটি সমাধান করতে, উপরের কন্ডিশনগুলো কোনোটিই সত্য কিনা চেক করুন। তারপর, আপনার কোডে প্রয়োজনীয় পরিবর্তন আনুন। এখন আপনি এই এররটি পাইথন এক্সপার্টের মতো সমাধান করার জন্য রেডি!

  1. পাইথনে স্ট্রিং রোটেশন যাচাই

  2. পাইথনে স্ট্রিং রিভার্স (ইন-প্লেস)

  3. পাইথনে casefold() স্ট্রিং মেথড

  4. পাইথনে স্ট্রিং লিটারেলের সামনে 'b' ক্যারেক্টারের কাজ