What is String in Python | Learn in Easy Bengali 2024

আজকে আমরা পাইথনের একটি অত্যন্ত গুরুত্বপূর্ণ ডেটা – টাইপ, String নিয়ে বিশদে আলোচনা করব। এই পোস্টে আমরা জানব স্ট্রিং কি ,স্ট্রিং এর মেথডগুলি এবং পাইথনে এটি কে কিভাবে ব্যবহার করব ?

আজকে আমরা পাইথনের একটি গুরুত্বপূর্ণ ডেটা টাইপ স্ট্রিং সম্পর্কে জানব। পাইথনে স্ট্রিং হল এক বা একাধিক character এর সিকোয়েন্স। যেখানে একটি character হলো – একটা letter , digit , space অথবা কোন symbol।

পাইথনে , আমরা স্ট্রিংকে সিঙ্গেল ( ‘ ), ডবল ( ” ) অথবা ট্রিপল ( ‘ ‘ ‘ ) কোটেশন দ্বারা সীমাবদ্ধ অক্ষরের সিরিজ হিসেবে বিবেচনা করতে পারি। পাইথনে স্ট্রিং হল immutable ডেটা টাইপ অর্থাৎ একবার স্ট্রিং তৈরি হয়ে গেলে আমরা তাকে কোনভাবেই পরিবর্তন করতে পারি না।পাইথনের str নামক একটা built-in স্ট্রিং ক্লাস রয়েছে।

পাইথনে আমরা স্ট্রিং এক্সেস করার জন্য ইনডেক্স ব্যবহার করি। string এ প্রত্যেকটি element কে এক একটি জায়গা দেওয়া হয়। যেই জায়গার প্রত্যেকটি ইউনিক নাম্বার থাকে যাকে বলি ইনডেক্স বা পজিশান (Index)
পাইথনে দুই ধরনের ইনডেক্স আছে –

strings-in-python-in-easy-bengali-techinbengali.com
String in Python

Also Read :- What is List in Python | Learn in Easy Bengali 2024

পাইথনে স্ট্রিং হল immutable ডেটা-টাইপ,যেটার মানে আমরা স্ট্রিংকে একবার create করলে সেটিকে আর চেঞ্জ করতে পারব না। যখনই আমরা একটা তৈরি করা( existing ) স্ট্রিংকে পরিবর্তন করতে যাব, তখনই নতুন আরেকটা স্ট্রিং তৈরি হবে।

পাইথনে প্রত্যেকটি অবজেক্ট আমাদের কম্পিউটার মেমরিতে স্টোর হয়। এখন আমরা id ( ) ফাংশানের সাহায্যে সেই অবজেক্টের মেমোরি এড্রেস দেখতে পারবো।

প্রথমে , আমরা একটা স্ট্রিং ভেরিয়েবল mystr ডিক্লেয়ার করি এবং তার মধ্যে ভ্যালু হিসেবে hello অ্যাসাইন করি , এরপর আমরা এই স্ট্রিং ভেরিয়েবল টা আমাদের মেমোরির কোথায় স্টোর হয়েছে, সেই অ্যাড্রেসটা দেখার চেষ্টা করি id ( ) ফাংশনের সাহায্যে।

mystr='hello'
print('the value of mystr: ',mystr,' || address: ',id(mystr))
Python
the value of mystr:  hello  || address:  140116953000240

এইবার আমরা দেখি , যদি আমরা আমাদের তৈরি করা mystr ভ্যারিয়েবল টিতে কিছু নতুন ভ্যালু যুক্ত করতে চাই তাহলে সেটি যুক্ত হয় কিনা ? এবং যুক্ত করার পর তার মেমোরি অ্যাড্রেসটা একই থাকে কিনা ? যদি একই থাকে তাহলে বুঝবো স্ট্রিং mutable ডেটা টাইপ কিন্তু যদি মেমোরি অ্যাড্রেসটা আলাদা হয় তাহলে আমরা বুঝবো স্ট্রিং immutable ডেটা টাইপ।

mystr='hello'
print('before modification the value of mystr: ',mystr,' || address: ',id(mystr))
mystr=mystr+'world' 
print('after modification the value of mystr: ',mystr,' || address: ',id(mystr))
Python
before modification the value of mystr:  hello  || address:  140116953000240

after modification the value of mystr:  helloworld  || address:  140116953000368

উপরের আউটপুট টা থেকে আমরা দেখতেই পাচ্ছি আমরা আগে যে মেমোরি অ্যাড্রেসটা পেয়েছিলাম এবং এখন যে মেমোরি এড্রেসটা পেলাম দুটো সম্পূর্ণ আলাদা। অর্থাৎ নতুন ভ্যালু mystr এ যুক্ত করার পর এটি আলাদা একটা স্ট্রিং ভেরিয়েবল এ পরিণত হয়েছে যার মেমোরি অ্যাড্রেস আগের mystr থেকে আলাদা। অর্থাৎ স্ট্রিং একটি immutable ডেটা-টাইপ।
শুধু তাই নয় আমরা স্ট্রিং এর কোন chracter কে update ,delete করতে পারবো না।

Also Read :- Basic List Operations and List methods in Easy Bengali 2024

আমরা একটি স্ট্রিং কে দুইভাবে তৈরি করতে পারি।

Normal way

পাইথনে , আমরা সিঙ্গেল ( ‘ ), ডবল ( ” ) অথবা ট্রিপল ( ‘ ‘ ‘ ) কোটেশন দিয়ে স্ট্রিংকে তৈরি করতে পারি।

Example

empty_string='' # creating empty string
string1='welcome to techinbengali.com' # single quote ( ' )
string2="welcome to techinbengali.com" # double quote ( " )
string3='''welcome to techinbengali.com'''  # triple quote ( ''' )

print(empty_string,type(empty_string))
print(string1,type(string1))
print(string2,type(string2))
print(string3,type(string3))
Python

Output

 <class 'str'>
welcome to techinbengali.com <class 'str'>
welcome to techinbengali.com <class 'str'>
welcome to techinbengali.com <class 'str'>

Using Str ( ) function

পাইথনে আমরা string ( ) ফাংশন ব্যবহার করে একটি স্ট্রিং কে তৈরি করতে পারি।

Example

empty_string=str('')
string1=str('welcome to techinbengali.com')

print(empty_string,type(empty_string))
print(string1,type(string1))
Python

Output

 <class 'str'>
welcome to techinbengali.com <class 'str'>

Also Read :- What are Data Structures in Python in Easy Bengali 2024

Single Quotes ( ‘ ‘ )

single quote ব্যাবহার করে , একটা স্ট্রিং তৈরী করি যেখানে আমরা double quote কে ব্যাবহার করতে পারবো ✅ , কিন্তু single quote কে ব্যাবহার করতে পারবো না❌।

print('This is a string with "double quotes" inside.')
Python
This is a string with "double quotes" inside.

Double Quotes ( ‘ ‘ )

double quote ব্যাবহার করে , একটা স্ট্রিং তৈরী করি যেখানে আমরা single quote কে ব্যাবহার করতে পারবো ✅ , কিন্তু double quote কে ব্যাবহার করতে পারবো না❌।

print("This is a string with 'single quotes' inside.")
Python
This is a string with 'single quotes' inside.

Triple Quotes ( ‘ ‘ )

Triple quote ব্যাবহার করে , একটা স্ট্রিং তৈরী করি যেখানে আমরা single quote এবং double quote কে ব্যাবহার করতে পারবো ✅ , কিন্তু Triple quote কে ব্যাবহার করতে পারবো না❌।

print('''This is a multi-line
                  string with 'single' and "double" quotes inside.''')
print("""This is a multi-line
                  string with 'single' and "double" quotes inside.""")
Python
This is a multi-line
                  string with 'single' and "double" quotes inside.
This is a multi-line
                  string with 'single' and "double" quotes inside.

আমরা আগেও বলেছি , যেহেতু string একটি immutable ডেটা-টাইপ সেই কারণে , যদি আমরা স্ট্রিং এর কোন character কে পরিবর্তন করার চেষ্টা করি, তাহলে পাইথন আমাদের TypeError নামক একটি error দেবে।

Example

mystr='hello world'
mystr[2]='k'
print(mystr)
Python

Output

ERROR!
Traceback (most recent call last):
  File "<main.py>", line 2, in <module>
TypeError: 'str' object does not support item assignment

যেহেতু string একটি immutable ডেটা-টাইপ সেই কারণে , যদি আমরা স্ট্রিং এর কোন character কে delete করার চেষ্টা করি , তাহলে পাইথন আমাদের TypeError নামক একটি error দেবে।

Example

mystr='hello world'
del mystr[2]
print(mystr)
Python

Output

ERROR!
Traceback (most recent call last):
  File "<main.py>", line 2, in <module>
TypeError: 'str' object doesn't support item deletion

Concatenating

Concatenating মানে হল , একসাথে জয়েন করা। পাইথনে আমরা দুটো স্ট্রিং কে + অপারেটর ব্যবহার করে concatinate করতে পারি।

Example

mystr='hello'
mystr2=' world'
mystr=mystr+mystr2
print(mystr)
Python

Output

hello world

appending

appending মানে হল , শেষে কোন কিছু add করা। পাইথনে আমরা একটি স্ট্রিং এর শেষে += অপারেটর ব্যবহার করে অন্য একটি স্ট্রিং কে append করতে পারি।

Example

mystr='hello'
mystr+=', welcome to '
mystr+='techinbengali'
print(mystr)
Python

Output

hello, welcome to techinbengali

multiplying

Example

multiplying মানে হল , একটি স্ট্রিং কে n টাইম পর্যন্ত রিপিট করা। পাইথনে আমরা একটি স্ট্রিং কে রিপিট করতে * ব্যাবহার করি।

mystr='$'
print(mystr*20) 
Python

Output

$$$$$$$$$$$$$$$$$$$$

Also Read :- What is Tuple in Python in Easy Bengali 2024

পাইথনে যে কোন ডেটা-টাইপের ভ্যালুকে স্ট্রিং ডেটা-টাইপে কনভার্ট করার জন্য str ( ) ফাংশন ব্যবহার করা হয়। এই ফাংশান টি প্রোগ্রামারদের সাহায্য করে , অন্য ডেটা-টাইপের ভ্যালু কে একটি স্ট্রিং এর সাথে concatinate করতে, অন্যথায় সম্ভব নয়।

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

Syntax

str( variable )

নিচের উদাহরণটি লক্ষ্য করুণ –
প্রথম example এ, আমরা একটি নাম্বারের সাথে একটি স্ট্রিং এর concatinate করছি । দুটি ভিন্ন ডেটা-টাইপ হওয়ার কারণে, পাইথন আমাদের TypeError দিয়েছে।

দ্বিতীয় example এ, আমরা একটি নাম্বার কে প্রথমে str ( ) ফাংশনের মাধ্যমে স্ট্রিং এ কনভার্ট করেছি , এরপর ওপর স্ট্রিং এর সাথে concatinate করেছি। দুটি same ডেটা-টাইপ হওয়ার কারণে, পাইথন আমাদের ভ্যালু দুটোকে concatinate করে দিয়েছে।

Example – 1

mystr='hello, '
val=7
mystr=mystr+val
print(mystr)
Python
ERROR!
Traceback (most recent call last):
  File "<main.py>", line 3, in <module>
TypeError: can only concatenate str (not "int") to str

Example – 2

mystr='hello, '
val= str( 7 )
mystr=mystr+val
print(mystr)
Python
hello, 7

পাইথন আমাদেরকে একটি পাওয়ারফুল ফিচারস দিয়েছে যেটির নাম f – strings ( formatted string literals )। যেটির দ্বারা আমরা সহজেই স্ট্রিং formatting এবং interpolation করতে পারি। যদিও এটি পাইথন 3.6 এ প্রথম আসে। এটি দ্বারা আমরা স্ট্রিং এ সরাসরি expression এবং variable কে ব্যবহার করতে পারি।

f-string এর মধ্যে আমরা যে কোনো ভ্যারিয়েবল এর ভ্যালু দেখতে গেলে , ভ্যারিয়েবলটিকে সেকেন্ড ব্র্যাকেটের { varaible_name } মধ্যে লিখবো।

Syntax

f " "

working with f-strings

mystr='hello'          # a string variable
number1=5              # a number variable
number2=10             # a number variable
def add_function(a,b): # a function
    return a+b


print(f"The value of mystr is: {mystr}")
print(f"The sum of {number1} and {number2} is: {add_function(number1, number2)}")
print(f"Variables: mystr = {mystr}, number1 = {number1}, number2 = {number2}")
Python
The value of mystr is: hello
The sum of 5 and 10 is: 15
Variables: mystr = hello, number1 = 5, number2 = 10

Also Read :- What is Set in Python | Learn in Easy Bengali 2024

একটি স্ট্রিং এর মধ্যে থেকে আমরা যদি কোন অংশকে কেটে নিই তাহলে তাকেই বলে substring। এবং substring টাকেই slice বলা হয়। স্লাইস অপারেশন দ্বারা আমরা একটি স্ট্রিং থেকে sub-parts তৈরি করতে পারি । আমরা মূলত, slicing অপারেটর [ ] ব্যবহার করে একটি স্ট্রিং থেকে তার sub-string তৈরি করতে পারি।

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

Start – কোথা থেকে স্ট্রিং টাকে slicing করা হবে ?
Default ভ্যালু 0 অর্থাৎ স্ট্রিং এর একদম প্রথম থেকে।
এছাড়াও আমরা আমাদের ইচ্ছে মত ভ্যালু দিতে পারি।

Stop – শেষ কত অবধি স্ট্রিং টাকে slicing করা হবে ?
Default ভ্যালু ( স্ট্রিং এর length – 1 ) অর্থাৎ স্ট্রিং এর একদম শেষ। এছাড়াও আমরা আমাদের ইচ্ছে মত ভ্যালু দিতে পারি।

Step / Stride – এখানে ( + এবং – ) দুটো ভ্যালু হতে পারে।Default ভ্যালু +1 , অর্থাৎ +1 করে শেষ পর্যন্ত যাবে।
( + ) ভ্যালু হলে স্ট্রিং এর সামনে থেকে শেষের দিকে যাবে। ( – ) ভ্যালু হলে স্ট্রিং এর পিছন থেকে সামনের দিকে যাবে অর্থাৎ reversed অর্ডার।

slicing-operations-on-strings-in-python-in-easy-bengali-techinbengali.com
String in Python

when stride / step value is +ve

slicing-operations-on-strings-in-python-in-easy-bengali-techinbengali.com
String in Python

এবার আমরা slicing অপারেশনের কিছু উদাহরণ দেখি ।আমরা একটা mystr নামক স্ট্রিং ভ্যারিয়েবলে python স্ট্রিং কে এসাইন করে slicing অপারেশন করবো।

mystr =  'python'
mystr='python'
print(mystr[ : ]) 
#    or 
print(mystr[ : : ])
Python

যেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা নেই তাই আমরা start হিসাবে ইনডেক্স 0 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে +1 ( by default ) করে end হিসাবে স্ট্রিং এর শেষ পর্যন্ত যাবে।সেই কারণে পুরো স্ট্রিং টাই হবে।

python
mystr='python'
print(mystr[2:5:1])
Python

যেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা আছে তাই আমরা start হিসাবে ইনডেক্স 2 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে +1 করে end হিসাবে স্ট্রিং এর ইনডেক্স (5-1)=4 পর্যন্ত যাবে। তাই এখানে 2,3,4 ইনডেক্স পজিশনের ভ্যালু প্রিন্ট হবে।

tho
mystr='python'
print(mystr[2:5:2])
Python

যেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা আছে তাই আমরা start হিসাবে ইনডেক্স 2 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে +2 করে end হিসাবে স্ট্রিং এর ইনডেক্স (5-1)=4 পর্যন্ত যাবে। তাই এখানে 2,4 ইনডেক্স পজিশনের ভ্যালু প্রিন্ট হবে।

to
my_string = "Hello, World!"

print("1. Get every character:")
print(my_string[::])     # Output: Hello, World!

print("\n2. Get every second character:")
print(my_string[::2])    # Output: HloWrd

print("\n3. Get every third character starting from index 1:")
print(my_string[1::3])   # Output: eood

print("\n4. Reverse the string:")
print(my_string[::-1])   # Output: !dlroW ,olleH

print("\n5. Get every second character in reverse order:")
print(my_string[::-2])   # Output: !o ,olH

print("\n6. Get every character starting from index 2:")
print(my_string[2::])    # Output: llo, World!

print("\n7. Get every character up to index 5:")
print(my_string[:5:])    # Output: Hello
Python

when stride / step value is -ve

slicing-operations-on-strings-in-python-in-easy-bengali-techinbengali.com
String in Python

এবার আমরা slicing অপারেশনের কিছু উদাহরণ দেখি ।আমরা একটা mystr নামক স্ট্রিং ভ্যারিয়েবলে python স্ট্রিং কে এসাইন করে slicing অপারেশন করবো।

mystr =  'python'
mystr='python'
print(mystr[ : : -1]) 
Python

যেহেতু এখানে slicing অপারেটর এর মধ্যে start , end ভ্যালু বলা নেই কিন্তু যেহেতু step ভ্যালু হিসাবে -1 তাই এখানে নেগেটিভ ইনডেক্স হিসাবে ধরে আমাদের চলতে হবে। start হিসাবে ইনডেক্স -1 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে -1 করে স্ট্রিং এর শেষ পর্যন্ত যাবে।সেই কারণে পুরো স্ট্রিং টাই reverse অর্ডারে প্রিন্ট হবে।

nohtyp
mystr='python'
print(mystr[ -2 : -5 : -1]) 
Python

যেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা আছে| কিন্তু যেহেতু step ভ্যালু হিসাবে -1 তাই এখানে নেগেটিভ ইনডেক্স হিসাবে ধরে আমাদের চলতে হবে। start হিসাবে ইনডেক্স -2 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে -1 করে end হিসাবে স্ট্রিং এর ইনডেক্স (-5+1)= -4 পর্যন্ত যাবে।তাই এখানে –2,-3,-4 ইনডেক্স পজিশনের ভ্যালু প্রিন্ট হবে।

oht
mystr='python'
print(mystr[ -2 : -5 : -2]) 
Python

যেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা আছে| কিন্তু যেহেতু step ভ্যালু হিসাবে -1 তাই এখানে নেগেটিভ ইনডেক্স হিসাবে ধরে আমাদের চলতে হবে। start হিসাবে ইনডেক্স -2 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে -2 করে end হিসাবে স্ট্রিং এর ইনডেক্স (-5+1)= -4 পর্যন্ত যাবে।তাই এখানে –2,-4 ইনডেক্স পজিশনের ভ্যালু প্রিন্ট হবে।

ot
my_string = "Hello, World!"

print("1. Reverse the string:")
print(my_string[::-1])      # Output: !dlroW ,olleH

print("\n2. Get every second character in reverse order:")
print(my_string[::-2])      # Output: !o ,olH

print("\n3. Get every third character starting from the end:")
print(my_string[::-3])      # Output: !lWol

print("\n4. Get every character except the last one:")
print(my_string[:-1:])      # Output: Hello, World

print("\n5. Get every second character starting from the end:")
print(my_string[::-2])      # Output: !o ,olH

print("\n6. Get every character up to index -5:")
print(my_string[:-5:])      # Output: Hello,
Python

Also Read :- What is Dictionary in Python | Learn in Easy Bengali 2024

আমরা slicing অপারেশনের সাহায্যে একটি স্ট্রিং কে খুব সহজেই reverse করতে পারি।

my_string = "python"
reverse_string=my_string[::-1]
print(reverse_string)
Python
nohtyp

len ( )

এটি স্ট্রিং এর length বা দৈর্ঘ্য রিটার্ন করে।

Example

mystr='hello' 
print(len(mystr))
Python

Output

5

Membership ( in )

এটি দিয়ে আমরা দেখতে পারি একটি ভ্যালু(element ) স্ট্রিং এর মধ্যে আছে কি না ? যদি থাকে True রিটার্ন করবে , যদি না থাকে False রিটার্ন করবে।

Example

mystr='hello' 
print('hello' in mystr)
print('world' in mystr)
Python

Output

True
False

Membership ( not in )

এটি দিয়ে আমরা দেখতে পারি একটি ভ্যালু(element ) স্ট্রিং এর মধ্যে আছে কি না ? যদিও এটির ব্যবহার in এর ঠিক উল্টো (opposite)। যদি না থাকে True রিটার্ন করবে , যদি থাকে False রিটার্ন করবে।

Example

mystr='hello' 
print('hello' not in mystr)
print('world' not in mystr)
Python

Output

False
True

max ( )

একটি স্ট্রিং এর মধ্যে যে alphabet এর ASCII ভ্যালু বেশি সেই alphabet টি রিটার্ন করবে।

Example

mystr='hello' 
print(max(mystr))
Python

Output

o

min ( )

একটি স্ট্রিং এর মধ্যে যে alphabet এর ASCII ভ্যালু কম সেই alphabet টি রিটার্ন করবে।

Example

mystr='hello' 
print(min(mystr))
Python

Output

str ( )

এই ফাংশানটি যে কোন ডেটা-টাইপের ভ্যালুকে স্ট্রিং ডেটা-টাইপে কনভার্ট করতে পারে।

Example

mynumber=9
mystr=str(mynumber)
print(f"value of mynumber: {mynumber} type: {type(mynumber)}")
print(f"value of mystr: {mystr} type: {type(mystr)}")
Python

Output

value of mynumber: 9 type: <class 'int'>

value of mystr: 9 type: <class 'str'>

ord ( )

এই ফাংশানটি যে কোনো character এর ASCII কোড রিটার্ন করে।

Example

mychar='a'
print(f"the ASCII code of '{mychar}' is {ord(mychar)}")
Python

Output

the ASCII code of 'a' is 97

chr ( )

এই ফাংশানটি ord ( ) ফাংশানের উল্টো কাজ করে , ASCII কোড থেকে character রিটার্ন করে।

Example

my_ASCII_code=97
print(f"ASCII code: {my_ASCII_code} and the character is '{chr(my_ASCII_code)}'")
Python

Output

ASCII code: 97 and the character is 'a'

এই পোস্টটি পড়ে আপনাদের মূলবান মতামত জানাতে আমাদের কমেন্ট করুন। আপনাদের কোনো প্রশ্ন থাকলে নির্দ্ধিধায় জিজ্ঞেসা করুন। আমরা চেষ্টা করবো যতো দ্রুত সম্ভব উত্তর দেবার।
ধন্যবাদ!!

Leave a Comment

iQOO Neo9 Pro 5G শীঘ্রই ভারতে আসতে চলেছে realme GT 5 Pro, সাথে রয়েছে দুর্দান্ত ফিচারস Infinix NOTE 40 pro 5G launched in India with best features ১৫০০০ এর নিচে এটিই সবার সেরা বাজেট স্মার্ট ফোন , Redmi Note 12 5g ভারতে খুব তারাতারি লঞ্চ হতে চলেছে ২০,০০০ এর নিচে Vivo T3x 5G স্মার্ট ফোনটি , এক ঝলকে দেখে নিন কি কি থাকছে ?
iQOO Neo9 Pro 5G শীঘ্রই ভারতে আসতে চলেছে realme GT 5 Pro, সাথে রয়েছে দুর্দান্ত ফিচারস Infinix NOTE 40 pro 5G launched in India with best features ১৫০০০ এর নিচে এটিই সবার সেরা বাজেট স্মার্ট ফোন , Redmi Note 12 5g ভারতে খুব তারাতারি লঞ্চ হতে চলেছে ২০,০০০ এর নিচে Vivo T3x 5G স্মার্ট ফোনটি , এক ঝলকে দেখে নিন কি কি থাকছে ?