অধ্যায় 03

print দিয়ে দেখা, কমেন্ট দিয়ে বোঝানো

print কীভাবে একাধিক জিনিস ছাপে, sep আর end দিয়ে সেটা কীভাবে বদলানো যায়, আর কমেন্ট কেন লেখা হয় — প্রোগ্রামের ভেতরে দেখার প্রথম হাতিয়ার।

20 মিনিটPython 3.12
  1. 1সমস্যা
  2. 2বোঝা
  3. 3উদাহরণ
  4. 4অনুমান
  5. 5নিজে করা
  6. 6কঠিন করা

যে সমস্যাটা আমরা সমাধান করছি

আপনি একটা প্রোগ্রাম লিখলেন। চালালেন। টার্মিনাল কিছুই বলল না।

প্রোগ্রামটা কাজ করেছে? মাঝপথে থেমে গেছে? ভেতরে হিসাবটা কী দাঁড়িয়েছে? কিছুই জানার উপায় নেই। কারণ কম্পিউটার নিজে থেকে কিছু বলে না — যা দেখতে চান, বলে দিতে হয়।

print হলো সেই বলে দেওয়ার উপায়। শুরুর দিকে এটাই আপনার একমাত্র জানালা: প্রোগ্রাম কোথায় পৌঁছেছে, কোন ভেরিয়েবলে কী আছে, হিসাবটা কী দিল। অভিজ্ঞ ডেভেলপাররাও ডিবাগার হাতের কাছে থাকা সত্ত্বেও দিনে বহুবার print বসিয়ে দেখে নেন — এটা লজ্জার কিছু নয়, এটাই কাজ।

এই মিশন শেষে আপনি পারবেন

  • এক print-এ একাধিক জিনিস ছাপতে, আর মাঝের ফাঁকাটা নিয়ন্ত্রণ করতে
  • sep আর end দিয়ে আউটপুটের চেহারা বদলাতে
  • লেখা আর সংখ্যার পার্থক্য চোখে ধরতে — "2" + "3" আর 2 + 3 কেন আলাদা
  • কমেন্ট লিখতে, আর কোন কমেন্টটা আসলে কাজের তা বুঝতে

আগে যা জানা লাগবে: টার্মিনাল, ফোল্ডার আর প্রথম প্রজেক্ট।


print একের বেশি জিনিস নিতে পারে

কমা দিয়ে যত খুশি জিনিস দিন, print সবগুলো একই লাইনে ছাপবে:

python
print("Order", 7, "confirmed")
text
Order 7 confirmed

লক্ষ্য করুন, আপনি কোথাও স্পেস লেখেননি — তবু শব্দগুলোর মাঝে একটা করে স্পেস এসেছে। কমা দিয়ে দেওয়া প্রতিটি জিনিসের মাঝে print নিজে থেকেই একটা স্পেস বসায়।

আর প্রতিটি print শেষে সে একটা নতুন লাইনে চলে যায়:

python
print("line one")
print("line two")
text
line one
line two

খালি print() লিখলে শুধু একটা ফাঁকা লাইন পড়ে — লম্বা আউটপুটকে ভাগ করে দেখানোর সহজ উপায়।

sep — মাঝের ফাঁকাটা আপনার পছন্দমতো

ওই স্পেসটা পছন্দ না হলে বদলে দিন:

python
print("2026", "09", "10", sep="-")
print("home", "user", "notes.txt", sep="/")
print("a", "b", "c", sep="")
text
2026-09-10
home/user/notes.txt
abc

end — লাইন শেষে কী হবে

print ডিফল্টভাবে লাইন শেষে নতুন লাইনে যায়। সেটাও বদলানো যায়:

python
print("Loading", end="")
print(".", end="")
print(".", end="")
print(". done")
text
Loading... done

চারটি আলাদা print, কিন্তু আউটপুট একটাই লাইন — কারণ প্রথম তিনটিকে বলে দেওয়া হয়েছে লাইন শেষে কিছু না দিতে।

লেখা আর সংখ্যা এক জিনিস নয়

এই দুটো লাইন দেখতে প্রায় একই, কিন্তু ফলাফল আলাদা:

python
print(2 + 3)
print("2" + "3")
text
5
23

কোটেশনের ভেতরে থাকলে সেটা লেখা (টেক্সট), আর + তখন যোগ করে না — জোড়া লাগায়। কোটেশনের বাইরে থাকলে সেটা সংখ্যা, আর + তখন সত্যিই যোগ করে।

এই পার্থক্যটাই পরের মিশনগুলোর ভিত্তি, আর শুরুর দিকের অর্ধেক ত্রুটির কারণও এটাই। এখন শুধু চোখে ধরে রাখুন: কোটেশন আছে মানে লেখা।

কমেন্ট — যে লাইনগুলো পাইথন পড়েই না

# চিহ্নের পর থেকে লাইনের শেষ পর্যন্ত পাইথন পুরোপুরি উপেক্ষা করে:

python
# Friday delivery report
total = 12 + 8
print("Total:", total)  # the sum shown at the bottom of the report
text
Total: 20

কমেন্ট প্রোগ্রামের চলার গতিতে কোনো প্রভাব ফেলে না। ওটা মানুষের জন্য — আপনার সহকর্মীর জন্য, আর তিন মাস পরের আপনার নিজের জন্য, যে ততদিনে সবকিছু ভুলে গেছে।

*ভালো কমেন্ট লেখে কেন, কী নয়।* কোডটা কী করছে সেটা কোড দেখেই বোঝা যায়:

python
# Weak: repeats what the code already says
count = count + 1  # add 1 to count

# Useful: gives the reason, which the code cannot show
count = count + 1  # the header row was counted too, so shift by one

উপরের প্রথমটি পড়ে নতুন কিছু জানা যায় না — লাইনটা দেখেই বোঝা যাচ্ছে এক যোগ হচ্ছে। দ্বিতীয়টি বলছে কেন এক যোগ হচ্ছে, যেটা কোড দেখে বোঝার কোনো উপায় নেই।

শেখার সময় কমেন্টের আরেকটা কাজ আছে — একটা লাইন সাময়িকভাবে বন্ধ করে দেখা প্রোগ্রামটা কেমন চলে:

python
print("first")
# print("second")
print("third")
text
first
third

একটা সম্পূর্ণ উদাহরণ

report.py নামে ফাইল বানিয়ে চালান:

python
# A small sales report
print("=" * 24)
print("SALES REPORT")
print("=" * 24)

print("Items sold:", 3 + 5 + 2)
print("Revenue:", 3 * 120 + 5 * 90 + 2 * 250)

print()
print("Prepared by", "Rafi", sep=": ")
text
========================
SALES REPORT
========================
Items sold: 10
Revenue: 1310
Prepared by: Rafi

"=" * 24 লাইনটা খেয়াল করুন — লেখার সাথে সংখ্যা গুণ করলে পাইথন সেটা ততবার পাশাপাশি বসায়। লাইন টানার জন্য ২৪টা সমান চিহ্ন হাতে টাইপ করার দরকার নেই।


কিছু ভাঙা অবস্থা ও তার সমাধান

SyntaxError: unterminated string literal কোটেশন একটা খুলে বন্ধ করা হয়নি। print("Hello) লিখলে এটা হয়। শুরুর আর শেষের কোটেশন গুনে দেখুন।

লেখার ভেতরেই কোটেশন দরকার বাইরে এক রকম, ভেতরে আরেক রকম কোটেশন দিন: print("It's working") অথবা print('She said "yes"')।

print "Hello" লিখলে SyntaxError এটা পাইথন ২-এর পুরনো নিয়ম। পাইথন ৩-এ print একটা ফাংশন, তাই বন্ধনী লাগবে: print("Hello")। পুরনো টিউটোরিয়াল বা উত্তর দেখলে এই ভুলটা চলে আসে।

sep বা end-এর মান কোটেশন ছাড়া দেওয়া print("a", "b", sep=-) চলবে না। sep আর end সব সময় লেখা নেয়: sep="-"।

কমেন্ট কোন ভাষায় লিখব? পাইথন বাংলা কমেন্ট মেনে নেয়, কিন্তু এই কোর্সে সব কোড — কমেন্ট, ভেরিয়েবলের নাম, ফাইলের নাম — ইংরেজিতে লেখা। কারণটা ব্যাখ্যা নয়, বাস্তবতা: আপনার কোড যে টিমে যাবে, সেখানে সবাই বাংলা পড়তে পারবে না, আর ত্রুটির বার্তা, ডকুমেন্টেশন, সহায়তার উত্তর — সবই ইংরেজিতে। ব্যাখ্যা বাংলায়, কোড ইংরেজিতে — এই ভাগটাই আমরা সব মিশনে রাখব।