perm_phone_msgUNDER ATTACK? S.O.S. LINE 01781669080

Top Categories

Spotlight

Aditta Chakraborty

today13 September, 2021

Sanaton + Lord Shiva Aditta

কৈলাস পর্বতে পরমাত্মা সদাশিবের পরিচয়

আমরা কম বেশি সবাই জানি কৈলাস পর্বত হচ্ছে শিবের বাসস্থান। আসলেই কি কৈলাস পর্বত শিবের বাসস্থান? পরমেশ্বর সদাশিব যখন ব্রহ্মাকে সৃষ্টির কাজ করতে আদেশ দেন তখন ব্রহ্মা প্রথমেই কয়েকজন মানসপুত্রের সৃষ্টি করলেন। কিন্তু তারা সকলেই সংসার-বৈরাগী হলেন। এতে ব্রহ্মা ক্ষেপে যান। ব্রহ্মা ক্রোধে রোদন করতে থাকেন। তার ফলে সৃষ্টি হয় [...]


স্ট্রিং | পাইথন

Python Aditta today27 March, 2021 153

Background
share close

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

text = 'This is single quotation string'
print(text)
print("This is double quotation string")

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

This is single quotation string
This is double quotation string

আচ্ছা উপরের সিঙ্গেল এবং ডাবল কোটেশনে লেখাগুলা কি আসলেই স্ট্রিং? প্রমাণ পাবো কিভাবে? আমরা ডেটা টাইপ বের করা অনেক আগেই শিখেছি। তাহলে সেটি প্রয়োগ করে দেখি।

text1 = 'This is single quotation string'
text2 = "This is double quotation string"

print(type(text1))
print(type(text2))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

<class 'str'>
<class 'str'>

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

text = 'I am 'Bangladeshi'.'
print(text)

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

File "Home.py", line 1
    text = 'I am 'Bangladeshi'.'
               ^
SyntaxError: invalid syntax

Syntax Error দেখাচ্ছে। কিন্তু কেন? যখন পাইথন ইন্টারপ্রেটার প্রথম ' পায় তখন বুঝে নেয় স্ট্রিং শুরু হয়েছে। আর যখন দ্বিতীয় ' পায় তখন বুঝে নেয় এই স্ট্রিং টি শেষ হয়ে গিয়েছে। কিন্তু দ্বিতীয় স্ট্রিং পাওয়ার পর একই স্টেটমেন্টে আরোও কিছু ' পায় তখন Syntax Error থ্রো করে। তাহলে এই সমস্যার সমাধান? সমাধান একটাই আর তা হল \ (ব্যাকস্লাশ)। এই ব্যাকস্লাশ ব্যবহার করলে পাইথন ইন্টারপ্রেটার ব্যাকস্লাশ এর পরের কোটেশনটি ইগনোর করে। 

text = 'I am \'Bangladeshi\'.'
print(text)

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

I am 'Bangladeshi'.

ঠিক একইভাবে ডাবল কোটেশন এর জন্য ব্যাকস্লাশ ব্যবহার করতে হবে।

text = "I\"m well."
print(text)

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

I"m well.

কিন্তু আমরা যদি ডাবল কোটেশনের ভিতর সিঙ্গেল কোটেশন দেই তাহলে Error দিবে কি? 

text = "I'm well."
print(text)

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ 

I'm well.

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

ব্যাকস্লাশ এর ব্যবহার তো দেখলাম। এবার ব্যাকস্লাশকে আলাদাভাবে প্রিন্ট করে দেখি।

print("\")

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

File "Home.py", line 1
    print("\")
              ^
SyntaxError: EOL while scanning string literal

আবারো সেই Syntax Error দিয়ে দিয়েছে তাই না? তাহলে ডাবল ব্যাকস্লাশ দিয়ে দেখি।

print("\\")

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

\

তাহলে এই ব্যাপার! একটা ব্যাকস্লাশ লিখলে Syntax Error দেয়। আর দুইটা ব্যাকস্লাশ লিখলে সেটি একটি হয়ে আউটপুট দেয়।

স্ট্রিং এর ভ্যালু এক্সেস

আমরা ছোটবেলায় অংক শিখেছিলাম। অংক ০ হতে শুরু করে ৯ পর্যন্ত এই ১০টি হয়ে থাকে। প্রোগ্রামিং এর ইনডেক্সিংও ০ থেকেই শুরু। এবার আসি ইনডেক্স কি? যখন এক বা একাধিক স্ট্রিং একটি ভেরিয়েবলে ডিক্লেয়ার করি তখন সেই স্ট্রিং-টি ভেরিয়েবলে ইনডেক্স ধরে অবস্থান করে। এককথায় স্ট্রিং যেভাবে ভেরিয়েবলে অবস্থান নেয়। আমরা নিচের কোডগুলো রান করালেই বুঝতে পারব। “Python” কে একটি ভেরিয়েবলে রাখলাম। এবার সে ভেরিয়েবল এর প্রতিটি ইনডেক্স ধরে চেক করব স্ট্রিং এর কোন ক্যারেক্টার কত তম ইনডেক্সে অবস্থান করছে।

text = "Python"

print(text[0])
print(text[1])
print(text[2])
print(text[3])
print(text[4])
print(text[5])

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

P
y
t
h
o
n

পাইথন প্রোগ্রামিং-এ ভেরিয়েবলের নাম এর পর [] চিহ্নের ভিতরে ইনডেক্স নাম্বার দিলেই আমরা ক্যারেক্টার এর অবস্থান জেনে যাবো। “Python” এর P ক্যারেক্টার ০ হতে শুরু হয়েছে। “Python” শব্দে মোট ৬টি ক্যারেক্টার রয়েছে। তাহলে ইনডেক্সিং হবে ০ হতে ৫ পর্যন্ত। কিন্তু আমরা যদি ৬ষ্ঠ ইনডেক্স এক্সেস করি তাহলে আউটপুটে কি আসবে?

text = "Python"
print(text[6])

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

Traceback (most recent call last):
  File "Home.py", line 3, in <module>
    print(text[6])
IndexError: string index out of range

IndexError: string index out of range এই Error টি দেখাচ্ছে। এর কারণ হচ্ছে ৬ষ্ঠ ইনডেক্সে কোনো ক্যারেক্টার নেই। তাই IndexError দেখাচ্ছে।

স্ট্রিং কাটাকুটি

ধরে নিচ্ছি আমাদের সম্পূর্ণ স্ট্রিং-টি লাগবে না। স্ট্রিং এর নির্দিষ্ট একটি অংশ লাগবে। তাহলে স্ট্রিং-কে slice করতে হবে। স্ট্রিং এর ক্যারেক্টার কিভাবে ইনডেক্স ধরে বের করতে হয় তা আমরা শিখেছি। এবার একই সিনটেক্স ব্যবহার করব তবে [] এর মাঝে একটি : (কোলন) থাকবে।

text = "Python"
print(text[:])

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ 

Python

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

text = "Python"

print(text[2:])
print(text[:4])
print(text[1:5])

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

thon
Pyth
ytho

আচ্ছা - মাইনাস ইনডেক্স নাম্বার দিলে কি হয়?

text = "Python"

print(text[-1])
print(text[-2])
print(text[-3:])
print(text[:-3])

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

n
o
hon
Pyt

কিছু বোঝা যাচ্ছে? মাইনাস ইনডেক্সিং করলে পাইথন উল্টা দিকে থেকে ক্যারেক্টার ধরে নিয়ে কাজ করে। আর এই মাইনাস ইনডেক্সিং-কে আমরা বলি নেগেটিভ ইনডেক্সিং। তাহলে একটা কাজ করি। পুরা স্ট্রিং-কে একসাথে উল্টিয়ে (Reverse) দেই।

text = "Python"
print(text[::-1])

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

nohtyP

স্ট্রিং নিয়ে খেলাধুলা

আমরা গাণিতিক কিছু অপারেশন করেছিলাম। অনেকটা একই রকম কিছু অপারেশন স্ট্রিং নিয়েও করা যায়। প্রথমেই দেখবো স্ট্রিং এর সাথে স্ট্রিং পাশাপাশি যুক্ত করা।

text1 = "Py"
text2 = "thon"

print(text1 + text2)

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

Python

একটি নাম্বার এর সাথে আরেকটি নাম্বার এর যোগ করা গেলেও বাস্তবে স্ট্রিং এর সাথে স্ট্রিং যোগ করা সম্ভব নয়। কিন্তু পাইথন প্রোগ্রামিং এর ক্ষেত্রে একটি স্ট্রিং এর সাথে আরেকটি স্ট্রিং পাশাপাশি যুক্ত করে দেয়। যাকে আমরা বলে থাকি Concatenation।

এবারে দেখবো একাধিক স্ট্রিং-কে কিভাবে একটি সিম্বল এর সাহায্যে যুক্ত করতে পারি।

text1 = "All"
text2 = "is"
text3 = "well"

print(text1 + "-" + text2 + "-" + text3)

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ 

All-is-well

একাধিক স্ট্রিং-কে আমরা উপরে ম্যানুয়ালি যুক্ত করলাম। কিন্তু এত কষ্ট না করে পাইথনের বিল্ট-ইন ফাংশন join() এর মাধ্যমে করে ফেলা যায়।

text1 = "All"
text2 = "is"
text3 = "well"

print("-".join((text1, text2, text3)))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

All-is-well

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

একটি শব্দে বা একটি বাক্যে বা একটি স্ট্রিং-এ মোট কয়টি ক্যারেক্টার থাকতে পারে সেটা কিভাবে জানা যায়? ক্যারেক্টার গণনা করতে পাইথনে len() ফাংশন ব্যবহার করা হয়। আর এই len() ফাংশনের ভিতরে স্ট্রিং এর ভেরিয়েবল বা সরাসরি স্ট্রিং-কে লিখে দিলেই কয়টি ক্যারেক্টার আছে তা জানা যায়।

text = "Python"
print(len(text))
print(len("Hello World!"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

6
12

একটি বাক্যের প্রথম ক্যারেক্টার বড় অক্ষরের করতে চাইলে capitalize() ফাংশন ব্যবহার করা হয়।

text = "hello world!"
print(text.capitalize())

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

Hello world!

আর একটি বাক্যে যতগুলো শব্দ থাকবে, সকল শব্দের প্রথম ক্যারেক্টার বড় অক্ষরের করতে চাইলে title() ফাংশন ব্যবহার করা হয়।

text = "i love python"
print(text.title())

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

I Love Python

বাক্যের সকল ক্যারেক্টার বড় অক্ষরের করার জন্য upper() ফাংশন ব্যবহার করা হয়।

text = "i love python"
print(text.upper())

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

I LOVE PYTHON

বাক্যের সকল ক্যারেক্টার ছোট অক্ষরের করার জন্য lower() ফাংশন ব্যবহার করা হয়।

text = "i LOVE Python"
print(text.lower())

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

i love python

lower() ফাংশন এর মত casefold() ফাংশন রয়েছে। শুধুমাত্র ডিসপ্লে করার জন্য lower() ফাংশন ব্যবহার করা হয়। আর casefold() ফাংশন ব্যবহার করা হয় যখন দুইটা স্ট্রিং-কে তুলনা করার সময় উভয় স্ট্রিং এর কেস একই রকম হওয়া প্রয়োজন হয়।

text = "i LOVE Python"
print(text.casefold())

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ

i love python

এবারে দেখবো casefold() ফাংশন দিয়ে দুইটা তুলনা করা।

firstString = "der Fluß"
secondString = "der Fluss"

# ß is equivalent to ss
if firstString.casefold() == secondString.casefold():
    print("The strings are equal.")
else:
    print("The strings are not equal.")

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ 

The strings are equal.

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

বড় অক্ষরকে ছোট অক্ষরে আর ছোট অক্ষরকে বড় অক্ষরে রূপান্তর করতে swapcase() ফাংশন ব্যবহার করা হয়।

text = "i LOVE Python"
print(text.swapcase())

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

I love pYTHON

একটি বাক্যে কোনো একটা ক্যারেক্টার কতবার রয়েছে তা গণনা করার জন্য count() ফাংশন ব্যবহার করা হয়।

text = "My name is Aditta Chakraborty"
print(text.count("a"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

4

আউটপুটে আসার কথা 5, কিন্তু 4 কেন আসলো? আগেই বলেছিলাম, পাইথন কেস সেন্সিটিভ। এখানে বড় এবং ছোট অক্ষর আলাদাভাবে কাজ করে। আমরা গণনা করেছি ছোট অক্ষরের “a”। তাই উপরের বাক্যে ৪াট “a” খুঁজে পায়। এবার বড় অক্ষরের “A” খুঁজে দেখবো।

text = "My name is Aditta Chakraborty"
print(text.count("A"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

1

আশা করি এবার হিসাব মিলেছে। কিন্তু নির্দিষ্ট রেন্জের মধ্যে কতবার রয়েছে সেটা বের করব কিভাবে?

text = "My name is Aditta Chakraborty"
print(text.count("a", 5))
print(text.count("a", 5, 17))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

3
1

প্রথমে আমরা দেখেছি ইনডেক্স নাম্বার 5 এর পরে কতগুলা “a” রয়েছে। এরপর দেখেছি ইনডেক্স নাম্বার 5 থেকে 17 এর ভিতরে কতগুলা “a” রয়েছে।

প্রোগ্রামটা একটু ঘুড়িয়ে করি। “a” কত তম ইনডেক্সে আছে সেটা খুঁজে বের করি। ইনডেক্স নাম্বার খুঁজে বের করার জন্য find() ফাংশন ব্যবহার করা হয়।

text = "My name is Aditta Chakraborty"
print(text.find("a"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

4

মাত্র ১টা ইনডেক্স আউটপুট দিল? আরও তো ইনডেক্স নাম্বার দেওয়া আছে। এবার তাহলে দ্বিতীয় “a” এর ইনডেক্স নাম্বার বের করি। এরজন্য প্রথম ইনডেক্স নাম্বারকে ইগনোর করে রেন্জ সেট করতে হবে।

text = "My name is Aditta Chakraborty"
print(text.find("a", 5))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

16

আর যদি একদম ডান পাশ থেকে খুঁজে বের করতে চাই তাহলে rfind() ফাংশন ব্যবহার করতে হবে।

text = "My name is Aditta Chakraborty"
print(text.rfind("a"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

23

কিন্তু সার্চ করা ক্যারেক্টার বা শব্দ যদি খুঁজে না পায়?

text = "My name is Aditta Chakraborty"
print(text.find("z"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

-1

সেক্ষেত্রে -1 আউটপুট দিবে। পাইথনের find() ফাংশন এভাবেই কাজ করে।

মাঝে মাঝে কিছু শব্দ পরিবর্তনের দরকার হয়। ইংরেজিতে একে আমরা Replace বলি। পাইথনেও শব্দ পরিবর্তনের জন্য replace() ফাংশন ব্যবহার করা হয়।

text = "It is a beautiful day"
new_text = text.replace("is", "was")
print(new_text)
print("Original text:", text)

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

It was a beautiful day
Original text: It is a beautiful day

replace() ফাংশন এর নিয়ম হচ্ছে এটি দুইটি প্যারামিটার গ্রহণ করে। প্যারামিটার হচ্ছে ফাংশন যে কয়টি ভেল্যু গ্রহণ করে সেই ভেল্যু। ফাংশন এর প্যারামিটার এক বা একাধিক হতে পারে, আবার প্যারামিটার ছাড়াই ফাংশন কাজ করে। আপাতত এইটুকু জেনে রাখি। এর বিস্তারিত আলোচনা ফাংশন এর চ্যাপ্টারে করব। আমরা text ভেরিয়েবলে “It is a beautiful day” বাক্য রাখি। এরপর নতুর আরেকটি ভেরিয়েবল নেই যার নাম দেই new_text । এই new_text ভেরিয়েবলে আমরা replace() ফাংশন ব্যবহার করি যেখানে পুরাতন “is” শব্দকে পরিবর্তন করে নতুন “was” শব্দ ব্যবহারের প্রোগ্রাম করা হয়। replace() ফাংশনে প্রথম প্যারামিটার হবে পুরাতন শব্দ যাকে আমরা পরিবর্তন করব এবং দ্বিতীয় প্যারামিটার হবে নতুন শব্দ যাকে আমরা বসাবো।

এবার আসি আসল কথায়। উপরে আমরা text ভেরিয়েবলের লিখা কি আসলেই পরিবর্তন হয়েছে? না, হয়নি। যার প্রমাণ আউটপুট এর দ্বিতীয় লাইন। আমরা দুইটি ভেরিয়েবল নিয়ে কাজ করেছি এবং দুইটি ভেরিয়েবলই প্রিন্ট দিয়েছি। দেখা যাচ্ছে, new_text ভেরিয়েবল এর লিখা পরিবর্তন হলেও ঠিক তার পরের লাইনে text ভেরিয়েবল প্রিন্ট করে দেখলাম স্ট্রিং-গুলা আগের মতই রয়েছে। তারমানে স্ট্রিং অপরিবর্তনশীল। এইজন্য স্ট্রিং-কে ইমমিউটেবল (Immutable) বা নন-মিউটেবল (non-mutable) বলা হয়।

ইউজার ভুল কিছু ইনপুট দিতেই পারে। ধরে নিলাম একটি বাক্যের শুরুতে এবং শেষে কতগুলো স্পেস আছে। এখন প্রশ্ন হচ্ছে এই অতিরিক্ত স্পেসগুলো রিমোভ করব কিভাবে? এরজন্য রয়েছে strip() ফাংশন।

text = "  It is beautiful day  "
print(text.strip(" "))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

It is beautiful day

বাক্যের শুরুতে এবং শেষে থাকা স্পেসগুলো রিমোভ করে নতুন একটি স্ট্রিং রিটার্ন করেছে। বলতে পারেন replace() ফাংশন এর মতই কাজ করে।

strip() ফাংশন তো উভয়দিক থেকে রিমোভ করে। শুধুমাত্র বামপাশ থেকে রিমোভ করার জন্য রয়েছে lstrip() ফাংশন।

text = "I love Bangladesh"
print(text.lstrip("I love"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

Bangladesh

একইভাবে ডানপাশ থেকে রিমোভ করার জন্য রয়েছে rstrip() ফাংশন।

text = "I love Bangladesh"
print(text.rstrip("desh"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

I love Bangla

বাক্য নিয়ে তো অনেক প্রোগ্রাম করে যাচ্ছি। কিন্তু বাক্যের শব্দগুলো যদি আমরা আলাদাভাবে পেতে চাই সেক্ষেত্রে কি করতে পারি? চিন্তা নেই split() ফাংশন আছে।

text = "I love Bangladesh"
print(text.split())

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

['I', 'love', 'Bangladesh']

আর যদি কোন্ ইনডেক্স নাম্বারে কোন্ শব্দ রয়েছে তা জানতে চাই?

text = "I love Bangladesh"
print(text.split()[0])
print(text.split()[1])
print(text.split()[2])

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

I
love
Bangladesh

আমরা যখন split() ফাংশন ব্যবহার করি তখন বাক্যটি [] এর ভিতর চলে এসেছে। কিন্তু কেন? [] মানে হল লিস্ট। অর্থাৎ split() ফাংশন তার আউটপুটকে লিস্টে করে রিটার্ন করেছে।

কোনো একটি বাক্যকে মাঝখানে আনার জন্য রয়েছে center() ফাংশন। একটি বাক্য মাঝখানে আনলে বাক্যের সামনে এবং পিছনে খালি জায়গা থাকবে। এই খালি জায়গাগুলা বুঝার জন্য আমরা * সিম্বল দিয়ে ভরাট করব। আমরা যে বাক্যকে মাঝখানে আনবো সেটি ২০টি ক্যারেক্টার এর চাইতে কম ক্যারেক্টার রয়েছে। তাহলে বাকি থাকা ক্যারেক্টারগুলা * দিয়ে ভরাট করি।

text = "I love Python"
print(text.center(20, "*"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

***I love Python****

বামে ৩টি এবং ডানে ৪টি * এসেছে। আর যদি উভয়পাশে সমান পরিমাণে * রাখতে চাই এবং ২০টি ক্যারেক্টার ডিক্লেয়ার না করেই তাহলে নিচের প্রোগ্রামটি করতে হবে।

text = "I love Python"
print(text.center(len(text) + 4, "*"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

**I love Python**

বাক্যের উভয়পাশে ২টি করে মোট ৪টি * বসাতে হবে। কিন্তু আমরা তো জানিনা বাক্যে কয়টি ক্যারেক্টার রয়েছে। তাই শুরুতেই বাক্যের দৈর্ঘ বের করে নিয়েছি। এর সাথে ৪টি * বসানোর জন্য ৪ যোগ করেছি। আগের প্রোগ্রাম স্টাটিক ছিল, আর এটি ডায়নামিক। আশা করি বুঝতে অসুবিধা হয়নি।

অনেক সময় একটি বাক্য নির্দিষ্ট কোনো স্ট্রিং দিয়ে শুরু করা হয়েছে কিনা তা জানার প্রয়োজন হয়। আর এটি চেক করতে startswith() ফাংশন ব্যবহার হরা হয়।

text = "I love Python"
print(text.startswith("I"))
print(text.startswith("i"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ 

True
False

বাক্যটি বড় অক্ষরের “I” দিয়ে শুরু হয়েছে, এটি সত্যতা পাওয়া গেছে তাই প্রথমে True রিটার্ন করেছে। কিন্তু ছোট অক্ষরের “i” দিয়ে শুরু হয়নি তাই False রিটার্ন করেছে।

একইভাবে বাক্যটি ‍নির্দিষ্ট কোনো স্ট্রিং দিয়ে শেষ হয়েছে কিনা তা জানার জন্য endswith() ফাংশন ব্যবহার করা হয়।

text = "I love Python"
print(text.endswith("on"))
print(text.endswith("no"))

কোডটি রান করালে নিচের মত আউটপুট পাবোঃ  

True
False

 

Written by: Aditta

Tagged as: , , , , , , , .

Rate it
Previous post
Cobra - Hack To Protect Your System

today26 March, 2021

  • 25
close

Python Aditta

Swap ভেরিয়েবল | পাইথন

Swap শব্দের অর্থ অদলবদল বা বিনিময়। প্রোগ্রামিং-এ ডেটা স্ট্রাকচার থেকে শুরু করে রিয়েল লাইফ সফ্টওয়্যার বানাতে গেলে এই Swap জিনিষটার প্রয়োজন হয়। প্রথম ভেরিয়েবল এর ভেল্যু দ্বিতীয় ভেরিয়েবলে রেখে দেওয়া ...


Similar posts