Unit-1: Python Programming
Introduction & characteristic:
Python-এর পরিচয়:
Python হল একটি উচ্চ-স্তরের(HLL), interpreted প্রোগ্রামিং ভাষা যা 1991 সালে Guido van Rossum দ্বারা তৈরি করা হয়েছিল। এটি সহজ পাঠযোগ্য সিনট্যাক্স এবং দ্রুত শিক্ষণের জন্য পরিচিত।
Python-এর প্রধান বৈশিষ্ট্য:
- সহজ ও পাঠযোগ্য:
Python-এর সিনট্যাক্স ইংরেজি ভাষার কাছাকাছি, যা এটিকে শিখতে ও ব্যবহার করতে সহজ করে তোলে। উদাহরণ:
if age >= 18:
print("You are eligible for vote")
- Interpreted:
Python কোড লাইন-বাই-লাইন ব্যাখ্যা করে চালায়, যা ডিবাগিং সহজ করে। - ডায়নামিক টাইপিং(Dynamic type):
ভেরিয়েবলের ধরন আগে থেকে ঘোষণা করতে হয় না। উদাহরণ:
x = 5 # x এখন একটি ইন্টিজার
x = "hello" # x এখন একটি স্ট্রিং
- বহুমুখী(Multipurpose):
Python ওয়েব ডেভেলপমেন্ট, ডেটা সায়েন্স, AI, স্ক্রিপ্টিং ইত্যাদি বিভিন্ন ক্ষেত্রে ব্যবহৃত হয়। - বিশাল লাইব্রেরি(huge in-built library):
Python-এর বিশাল স্ট্যান্ডার্ড লাইব্রেরি রয়েছে, যা বিভিন্ন কাজের জন্য রেডিমেড ফাংশন সরবরাহ করে। উদাহরণ:
import random
print(random.randint(1, 10)) # 1 থেকে 10 এর মধ্যে একটি র্যানডম সংখ্যা প্রিন্ট করে
- প্ল্যাটফর্ম স্বাধীন(Platform Independent):
Python কোড বিভিন্ন অপারেটিং সিস্টেমে (Windows, Linux, Mac) চালানো যায়।
এই বৈশিষ্ট্যগুলি Python-কে একটি শক্তিশালী ও জনপ্রিয় প্রোগ্রামিং ভাষা হিসেবে প্রতিষ্ঠিত করেছে।
Execution Mode(এক্সিকিউশন মোড):
Python-এর দুটি মূল এক্সিকিউশন মোড রয়েছে: ইন্টারেক্টিভ মোড(interactive mode) এবং স্ক্রিপ্ট মোড(Script mode)।
1. ইন্টারেক্টিভ মোড (interactive mode):
ইন্টারেক্টিভ মোডে, আপনি Python ইন্টারপ্রেটারের সাথে সরাসরি যোগাযোগ করতে পারেন।
বৈশিষ্ট্য:
- কোড লাইন-বাই-লাইন লেখা ও চালানো যায়
- ফলাফল তাৎক্ষণিকভাবে দেখা যায়
- পরীক্ষা-নিরীক্ষার জন্য উপযোগী
ব্যবহার:
- টার্মিনাল বা কমান্ড প্রম্পটে
python
লিখে এন্টার চাপুন >>>
প্রম্পট দেখা যাবে, যেখানে আপনি কোড লিখতে পারেন
উদাহরণ:
>>> print("Hello, West Bengal!")
Hello, West Bengal!
>>> 2 + 3
5
২. স্ক্রিপ্ট মোড(Script mode):
স্ক্রিপ্ট মোডে, আপনি একটি ফাইলে পুরো প্রোগ্রাম লিখে সেটি চালাতে পারেন।
বৈশিষ্ট্য:
- বড় প্রোগ্রাম লেখার জন্য ব্যবহৃত হয়
- কোড সংরক্ষণ ও পরে পুনরায় ব্যবহার করা যায়
- ফাইলের এক্সটেনশন
.py
ব্যবহার:
- টেক্সট এডিটরে কোড লিখুন ও
.py
এক্সটেনশন দিয়ে সেভ করুন - টার্মিনালে
python filename.py
কমান্ড দিয়ে চালান
উদাহরণ:
ফাইল: hello.py
print("Hello, West Bengal!")
for i in range(5):
print(f"Number: {i}")
টার্মিনালে:
$ python hello.py
Hello, West Bengal!
Number: 0
Number: 1
Number: 2
Number: 3
Number: 4
উভয় মোডের তুলনা(Comparison of both mode):
- ইন্টারেক্টিভ মোড(Interactive mode): দ্রুত পরীক্ষা-নিরীক্ষা ও শিক্ষার জন্য ভালো
- স্ক্রিপ্ট মোড(Script mode): বড় প্রজেক্ট ও পুনঃব্যবহারযোগ্য কোডের জন্য উপযুক্ত
Python Character Set
Python-এর ক্যারেক্টার সেট হল সেই সব ক্যারেক্টার যা Python প্রোগ্রাম লেখার সময় ব্যবহার করা যায়। এগুলি নিম্নলিখিত ভাগে বিভক্ত:
1. অক্ষর (Letters):
- ছোট হাতের ইংরেজি অক্ষর: a থেকে z
- বড় হাতের ইংরেজি অক্ষর: A থেকে Z
উদাহরণ:
name = "Python"
CONSTANT = 100
2. সংখ্যা (Digits):
- 0 থেকে 9
উদাহরণ:
age = 25
price = 9.99
৩. বিশেষ ক্যারেক্টার (Special Characters):
- _ (Underscore)
- + (plus)
- – (minus)
- * (product)
- / (division)
- % (modulus)
- = (equal to)
- < (less then)
- > (greater then)
- ( ) (Parenthesis)
- [ ] (Square Bracket)
- { } (Curly Bracket)
- : (colon)
- . (dot)
- , (comma)
- ; (semicolon)
- ‘ (single quote)
- ” (doble quote)
- # (hash)
- @ (at the rate)
উদাহরণ:
total = 10 + 5 # Addition
is_greater = 10 > 5 # compare
my_list = [1, 2, 3] # list
my_dict = {"key": "value"} # Disctionary
৪. হোয়াইটস্পেস (Whitespace):
- স্পেস(Space)
- ট্যাব(Tab)
- নিউলাইন(New line)
উদাহরণ:
if x > 5:
print("x is greater than 5") # ইনডেন্টেশনের জন্য স্পেস ব্যবহৃত (space is used for indentation)
বিশেষ নোট:
- Python কেস-সেনসিটিভ। অর্থাৎ,
variable
,Variable
, এবংVARIABLE
তিনটি আলাদা নাম। - ভেরিয়েবল নামের শুরুতে সংখ্যা ব্যবহার করা যায় না। উদাহরণ:
1variable
অবৈধ, কিন্তুvariable1
বৈধ। - বিশেষ কিছু শব্দ (যেমন
if
,for
,while
ইত্যাদি) Python-এর রিজার্ভড কীওয়ার্ড, এগুলি ভেরিয়েবল নাম হিসেবে ব্যবহার করা যায় না।
উদাহরণ:
# বৈধ নাম
my_variable = 10
userName2 = "Alice"
CONSTANT_VALUE = 3.14
# অবৈধ নাম
2ndVariable = 20 # সংখ্যা দিয়ে শুরু করা যাবে না
my-variable = 30 # হাইফেন ব্যবহার করা যাবে না
এই ক্যারেক্টার সেট ব্যবহার করে আপনি Python-এ যে কোনো প্রোগ্রাম লিখতে পারবেন।
Python টোকেন (Tokens):
Python টোকেন হল প্রোগ্রামের সবচেয়ে ছোট স্বতন্ত্র উপাদান। এগুলি পাঁচ প্রকার:
1. কীওয়ার্ড (Keyword):
- এগুলি Python-এর সংরক্ষিত শব্দ যা নির্দিষ্ট অর্থ বহন করে।
- উদাহরণ: if, else, for, while, def, class, import
if True:
print("Example of keyword")
2. আইডেন্টিফায়ার (Identifier):
- এগুলি ব্যবহারকারী-নির্ধারিত নাম যা ভেরিয়েবল, ফাংশন, ক্লাস ইত্যাদি চিহ্নিত করে।
- নিয়ম: অক্ষর বা আন্ডারস্কোর দিয়ে শুরু হতে হবে, সংখ্যা দিয়ে নয়।
user_name = "Manas" # user_name is a Identifier
def calculate_sum(): # calculate_sum is a Identifier
pass
3. লিটারাল (Literal):
- এগুলি ডেটার নির্দিষ্ট মান প্রকাশ করে।
- প্রকারভেদ: সংখ্যা, স্ট্রিং, বুলিয়ান
age = 25 # 25 একটি সংখ্যা লিটারাল(Number literal)
name = "কমল" # "কমল" একটি স্ট্রিং লিটারাল(String literal)
is_student = True # True একটি বুলিয়ান লিটারাল (Boolean literal)
4. অপারেটর (Operator):
- এগুলি বিভিন্ন অপারেশন সম্পাদন করে যেমন গাণিতিক(mathematical), তুলনামূলক(comparison), লজিক্যাল(Logical)।
sum = 10 + 5 # + একটি যোগ অপারেটর (arithmatic operator)
is_greater = 10 > 5 # > একটি তুলনামূলক অপারেটর(comparison operator)
is_valid = True and False # and একটি লজিক্যাল অপারেটর (Logical operator)
5. পাঙ্কচুয়েটর (Punctuator):
- এগুলি প্রোগ্রামের গঠন নির্ধারণ করে।
- উদাহরণ: ( ), [ ], { }, :, ;, ,
def greet(name): # () and : punctuator
print(f"hello, {name}!")
fruits = ["Mango", "Banana", "Apple"] # [] and , punctuator
উদাহরণ প্রোগ্রাম (সব ধরনের টোকেন ব্যবহার করে):
def calculate_grade(score): # def, (), : punctuator
if score >= 80: # if keyword, >= operator
return "A" # return keyword, "A" literal
elif score >= 70: # elif keyword
return "B"
else: # else keyword
return "C"
student_score = 85 # student_score আইডেন্টিফায়ার(Identifier), 85 লিটারাল(Literal)
grade = calculate_grade(student_score) # () পাঙ্কচুয়েটর(Punctuator)
print(f"ছাত্রের গ্রেড: {grade}") # print keyword, {} পাঙ্কচুয়েটর(punctuator)
এই প্রোগ্রামে আমরা সব ধরনের Python টোকেন ব্যবহার করেছি। কীওয়ার্ড (def, if, elif, else), আইডেন্টিফায়ার (calculate_grade, score, student_score), লিটারাল (80, 70, 85, “A”, “B”, “C”), অপারেটর (>=), এবং পাঙ্কচুয়েটর (:, (), {}) সবই এখানে ব্যবহৃত হয়েছে।
Variable [ভেরিয়েবল]:
ভেরিয়েবল হল একটি পাত্রের মতো যেখানে আপনি তথ্য সংরক্ষণ করতে পারেন। Python-এ, আপনি সহজেই ভেরিয়েবল তৈরি ও ব্যবহার করতে পারেন।
উদাহরণ:
name = "Rahim"
age = 25
print("My name is", name, "and I am", age, "years old.")
এই কোডে, name
এবং age
হল দুটি ভেরিয়েবল। আউটপুট হবে: My name is Rahim and I am 25 years old.
ধন্যবাদ এই গুরুত্বপূর্ণ বিষয়টি উত্থাপন করার জন্য। L-value এবং R-value ধারণাটি প্রোগ্রামিং-এর একটি মৌলিক ধারণা, যদিও Python-এ এই শব্দগুলি সরাসরি ব্যবহৃত হয় না। আসুন এই ধারণাগুলি নিয়ে আলোচনা করি।
Concept of L-value এবং R-value:
1. L-value:
- L-value হল এমন একটি এক্সপ্রেশন যা মেমোরিতে একটি স্থান নির্দেশ করে।
- এটি সাধারণত বাম দিকে থাকে এবং এর মান পরিবর্তন করা যায়।
- Python-এ, ভেরিয়েবল নাম সাধারণত L-value হিসেবে কাজ করে।
2. R-value:
- R-value হল এমন একটি এক্সপ্রেশন যা একটি মান প্রদান করে।
- এটি সাধারণত ডান দিকে থাকে এবং এর মান পড়া যায় কিন্তু পরিবর্তন করা যায় না।
উদাহরণ:
x = 5
এখানে:
x
হল L-value (বাম দিকে, মেমোরি লোকেশন নির্দেশ করে)5
হল R-value (ডান দিকে, একটি মান প্রদান করে)
আরও কিছু উদাহরণ:
# উদাহরণ 1
y = x + 10
# y হল L-value, (x + 10) হল R-value
# উদাহরণ 2
def get_value():
return 20
z = get_value()
# z হল L-value, get_value() হল R-value
# উদাহরণ 3
a, b = 3, 4
# a এবং b উভয়ই L-value, 3 এবং 4 হল R-value
Python-এ L-value এবং R-value এর ব্যবহার:
1. অ্যাসাইনমেন্ট(Assignment):
x = 10 # x হল L-value, 10 হল R-value
2. মাল্টিপল অ্যাসাইনমেন্ট(Multiple Assignment):
a, b = 5, 6 # a এবং b হল L-value, 5 এবং 6 হল R-value
3. ফাংশন রিটার্ন(Function Return ):
def get_coordinates():
return 3, 4
x, y = get_coordinates() # x এবং y হল L-value, get_coordinates() এর রিটার্ন হল R-value
4. লিস্ট কমপ্রিহেনশন (List Comprehension):
squares = [x**2 for x in range(5)] # squares হল L-value, [x**2 for x in range(5)] হল R-value
বিশেষ নোট:
- Python-এ, কিছু এক্সপ্রেশন যেমন লিস্ট স্লাইসিং(List Slicing ), L-value হিসেবে ব্যবহার করা যায়:
my_list = [1, 2, 3, 4, 5]
my_list[1:3] = [10, 20] # my_list[1:3] হল L-value
print(my_list) # আউটপুট: [1, 10, 20, 4, 5]
- Python-এ, সব L-value R-value হিসেবে ব্যবহার করা যায়, কিন্তু সব R-value L-value হিসেবে ব্যবহার করা যায় না।
এই ধারণাগুলি বুঝতে পারলে, আপনি Python-এ ভেরিয়েবল অ্যাসাইনমেন্ট এবং এক্সপ্রেশন মূল্যায়ন আরও ভালভাবে বুঝতে পারবেন।
Python-এ কমেন্ট ব্যবহার:
কমেন্ট হল কোডের মধ্যে লেখা টেক্সট যা Python ইন্টারপ্রেটার দ্বারা উপেক্ষা করা হয়। এগুলি কোডের ব্যাখ্যা দেওয়া, ডকুমেন্টেশন করা, বা অস্থায়ীভাবে কোড অক্ষম করার জন্য ব্যবহৃত হয়।
Python-এ দুই ধরনের কমেন্ট রয়েছে:
1. সিঙ্গল-লাইন কমেন্ট:
- ‘#’ চিহ্ন দিয়ে শুরু হয়
- লাইনের শেষ পর্যন্ত চলে
উদাহরণ:
# এটি একটি সিঙ্গল-লাইন কমেন্ট
print("Hello , West Bengal !") # এটিও একটি সিঙ্গল-লাইন কমেন্ট
2. মাল্টি-লাইন কমেন্ট:
- তিনটি উদ্ধৃতি চিহ্ন (”’ বা “””) দিয়ে শুরু ও শেষ হয়
- একাধিক লাইন জুড়ে থাকতে পারে
উদাহরণ:
'''
এটি একটি
মাল্টি-লাইন
কমেন্ট
'''
"""
এটিও একটি
মাল্টি-লাইন
কমেন্ট
"""
Use of Comment(কমেন্টের ব্যবহার) :
1. Code Explanation(কোড ব্যাখ্যা):
# গড় নির্ণয়
average = sum(numbers) / len(numbers)
2. Function or Class Documentation(ফাংশন বা ক্লাস ডকুমেন্টেশন) :
def calculate_area(radius):
"""
This function is used for calculate area of citcle
Parameter:
radius (float): বৃত্তের ব্যাসার্ধ
Return:
float: Area of Circle(বৃত্তের ক্ষেত্রফল)
"""
return 3.14 * radius ** 2
3. কোড অস্থায়ীভাবে অক্ষম করা(Temporary disable):
# print("এই লাইনটি এখন কাজ করবে না")
print("এই লাইনটি কাজ করবে")
4. TODO নোট:
# TODO: এখানে ইউজার ইনপুট যাচাই করার কোড যোগ করতে হবে
5. কোডের সেকশন ভাগ করা (Divide Section of code):
###################
# ডেটা প্রস্তুতকরণ #
###################
# কোড এখানে...
###################
# মডেল প্রশিক্ষণ #
###################
# কোড এখানে...
Advantage(কমেন্ট ব্যবহারের সুবিধা):
- কোড বোঝা ও রক্ষণাবেক্ষণ সহজ হয়
- টিম সদস্যদের মধ্যে সহযোগিতা বাড়ে
- ভবিষ্যতে নিজের কোড বুঝতে সাহায্য করে
- ডকুমেন্টেশন তৈরিতে সহায়ক
Cautions (সতর্কতা):
- অতিরিক্ত বা অপ্রয়োজনীয় কমেন্ট এড়িয়ে চলুন
- কমেন্ট সর্বদা আপ-টু-ডেট রাখুন, অন্যথায় ভুল তথ্য দিতে পারে
Knowledge Data Type:
Python-এ বিভিন্ন ধরনের ডেটা আছে। তিনটি মৌলিক ডেটা টাইপ হল:
- স্ট্রিং (string): টেক্সট ডেটা
- ইন্টিজার (integer): পূর্ণসংখ্যা
- ফ্লোট (float): দশমিক সংখ্যা
উদাহরণ:
text = "This is a string"
number = 42
decimal = 3.14
print(type(text))
print(type(number))
print(type(decimal))
এই কোডের আউটপুট হবে:
<class 'str'>
<class 'int'>
<class 'float'>
type()
ফাংশন ব্যবহার করে আমরা কোনো ভেরিয়েবলের ডেটা টাইপ [data type of Variable] জানতে পারি।
1. সংখ্যা (Number):
a) ইন্টিজার (Integer):
– পূর্ণসংখ্যা
– উদাহরণ: x = 5
b) ফ্লোটিং পয়েন্ট (Floating Point):
– দশমিক সংখ্যা
– উদাহরণ: y = 3.14
c) কমপ্লেক্স (Complex):
– বাস্তব ও কাল্পনিক অংশ সহ সংখ্যা
– উদাহরণ: z = 2 + 3j
2. বুলিয়ান (Boolean):
- সত্য বা মিথ্যা মান
- উদাহরণ:
is_student = True
3. সিকোয়েন্স (Sequence):
a) স্ট্রিং (String):
– টেক্সট ডেটা
– উদাহরণ: name = "Manas"
b) লিস্ট (List):
– পরিবর্তনযোগ্য ক্রমিক আইটেম(sequence item and also changable)
– উদাহরণ: fruits = ["Mango", "Banana", "Apple"]
c) টিউপল (Tuple):
– অপরিবর্তনীয় ক্রমিক আইটেম ((sequence itembut not changable))
– উদাহরণ: coordinates = (3, 4)
4. নান (None):
- শূন্য বা অনুপস্থিত মান
- উদাহরণ:
result = None
5. ম্যাপিং (Mapping):
ডিকশনারি (Dictionary):
- কী-ভ্যালু জোড়া (Pair of Key-value)
- উদাহরণ:
person = {"name": "Manas", "age": 40}
৬. পরিবর্তনযোগ্য (Mutable) ও অপরিবর্তনীয় (Immutable) ডেটা টাইপ:
a) পরিবর্তনযোগ্য (Mutable):
– লিস্ট
– ডিকশনারি
– সেট
b) অপরিবর্তনীয় (Immutable):
– ইন্টিজার
– ফ্লোট
– কমপ্লেক্স
– স্ট্রিং
– টিউপল
– ফ্রোজেন সেট
উদাহরণ প্রোগ্রাম:
# সংখ্যা
integer_num = 10
float_num = 3.14
complex_num = 2 + 3j
print(f"Integer: {integer_num}, Float: {float_num}, Complex: {complex_num}")
# Boolean(বুলিয়ান)
is_python_fun = True
print(f"Python কি মজার? {is_python_fun}")
# Sequence(সিকোয়েন্স)
text = "WestBengal"
fruits = ["Mango", "Orange", "Banana"]
point = (10, 20)
print(f"টেক্সট: {text}")
print(f"ফলের তালিকা: {fruits}")
print(f"কোঅর্ডিনেট: {point}")
# None
result = None
print(f"ফলাফল: {result}")
# ম্যাপিং (ডিকশনারি)
person = {
"নাম": "কামাল",
"বয়স": 30,
"পেশা": "শিক্ষক"
}
print(f"ব্যক্তির তথ্য: {person}")
# পরিবর্তনযোগ্য ও অপরিবর্তনীয়
mutable_list = [1, 2, 3]
immutable_tuple = (1, 2, 3)
mutable_list[0] = 10 # এটি কাজ করবে
# immutable_tuple[0] = 10 # এটি ত্রুটি দেখাবে
print(f"পরিবর্তিত লিস্ট: {mutable_list}")
print(f"অপরিবর্তিত টিউপল: {immutable_tuple}")
এই প্রোগ্রামটি চালালে আপনি বিভিন্ন ডেটা টাইপের ব্যবহার ও আচরণ দেখতে পাবেন।
বিশেষ নোট:
- পরিবর্তনযোগ্য (Mutable) ডেটা টাইপের মান পরিবর্তন করা যায়।
- অপরিবর্তনীয় (Immutable) ডেটা টাইপের মান পরিবর্তন করা যায় না। নতুন মান অ্যাসাইন করলে নতুন অবজেক্ট তৈরি হয়।
Operatior in Python:
Python-এ বিভিন্ন ধরনের অপারেটর রয়েছে। আসুন আমরা প্রধান কয়েকটি দেখি:
1. গাণিতিক অপারেটর(Arithmatic Operator):
a, b = 10, 3
print(a + b) # যোগ: 13
print(a - b) # বিয়োগ: 7
print(a * b) # গুণ: 30
print(a / b) # ভাগ: 3.3333...
print(a // b) # পূর্ণ ভাগফল: 3
print(a % b) # ভাগশেষ: 1
print(a ** b) # এক্সপোনেন্ট: 1000
2. তুলনামূলক অপারেটর(Comparison Operator):
x, y = 5, 7
print(x == y) # সমান: False
print(x != y) # সমান নয়: True
print(x < y) # ছোট: True
print(x > y) # বড়: False
print(x <= y) # ছোট বা সমান: True
print(x >= y) # বড় বা সমান: False
3. লজিক্যাল অপারেটর(Logical Operator):
p, q = True, False
print(p and q) # AND: False
print(p or q) # OR: True
print(not p) # NOT: False
4. অ্যাসাইনমেন্ট অপারেটর(assignment Operator):
x = 10
x += 5 # x = x + 5
print(x) # 15
x *= 2 # x = x * 2
print(x) # 30
5. আইডেনটিটি অপারেটর(Identity Operator):
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a is b) # False (ভিন্ন অবজেক্ট)
print(a is c) # True (একই অবজেক্ট)
6. সদস্যপদ অপারেটর(Membership Operator):
fruits = ["Mango", "Banana", "Apple"]
print("Mango" in fruits) # True
print("Grapes" not in fruits) # True
Expression, Statement, Type Conversion and I/O:
1. Expression & Statement এক্সপ্রেশন ও স্টেটমেন্ট:
- এক্সপ্রেশন: মান প্রদানকারী কোডের অংশ।
- স্টেটমেন্ট: একটি সম্পূর্ণ কোড লাইন যা কোনো কাজ সম্পাদন করে। উদাহরণ:
x = 5 # একটি স্টেটমেন্ট
y = x + 3 # 'x + 3' হল একটি এক্সপ্রেশন, পুরো লাইনটি একটি স্টেটমেন্ট
2. অপারেটরের অগ্রাধিকার(Operator Precedence):
Python-এ অপারেটরের একটি নির্দিষ্ট অগ্রাধিকার ক্রম রয়েছে। উদাহরণস্বরূপ:
- এক্সপোনেনশিয়েশন (*) > গুণ () > যোগ (+) উদাহরণ:
result = 2 + 3 * 4 ** 2 # 4**2 প্রথমে, তারপর 3 দিয়ে গুণ, অবশেষে 2 যোগ
print(result) # 50
3. এক্সপ্রেশন মূল্যায়ন:
Python এক্সপ্রেশনগুলি বাম থেকে ডানে মূল্যায়ন করে, অপারেটর অগ্রাধিকার অনুসরণ করে।
4. Type Conversion (টাইপ কনভার্শন):
a) স্পষ্ট (Explicit) কনভার্শন:python x = int("5") # স্ট্রিং থেকে ইন্টিজার y = float("3.14") # স্ট্রিং থেকে ফ্লোট z = str(42) # ইন্টিজার থেকে স্ট্রিং
b) অন্তর্নিহিত (Implicit) কনভার্শন:python x = 5 + 3.14 # ইন্টিজার স্বয়ংক্রিয়ভাবে ফ্লোটে রূপান্তরিত হয় print(x) # 8.14
5. Input/Output :
a) Input:python name = input("What is your name? ") age = int(input("How Old are you? "))
b) Output:python print(f"Hello, {name}! your age {age} years।")
উদাহরণ প্রোগ্রাম:
# ব্যবহারকারীর কাছ থেকে দুটি সংখ্যা নিন এবং তাদের যোগফল, বিয়োগফল, গুণফল ও ভাগফল প্রদর্শন করুন
# ইনপুট নেওয়া
num1 = float(input("Input first number: "))
num2 = float(input("Input Second number: "))
# গণনা
sum_result = num1 + num2
diff_result = num1 - num2
product_result = num1 * num2
division_result = num1 / num2 if num2 != 0 else "অসংজ্ঞায়িত (0 দিয়ে ভাগ করা যায় না)"
# ফলাফল প্রদর্শন
print(f"nফলাফল:")
print(f"Addition: {sum_result}")
print(f"Substarction: {diff_result}")
print(f"Multiplication: {product_result}")
print(f"Division: {division_result}")
# টাইপ কনভার্শন এর উদাহরণ
print(f"n Type of num1 : {type(num1)}")
int_num1 = int(num1)
print(f"Type of int(num1) : {type(int_num1)}")
এই প্রোগ্রামে আমরা নিম্নলিখিত বিষয়গুলি দেখতে পাই:
input()
ফাংশন ব্যবহার করে ইউজার ইনপুট নেওয়া- স্ট্রিং থেকে ফ্লোটে টাইপ কনভার্শন (
float(input())
) - গাণিতিক অপারেশন (যোগ, বিয়োগ, গুণ, ভাগ)
- কন্ডিশনাল এক্সপ্রেশন (
x if condition else y
) - f-string ব্যবহার করে ফরম্যাটেড আউটপুট
type()
ফাংশন ব্যবহার করে ভেরিয়েবলের টাইপ চেক করা- ফ্লোট থেকে ইন্টিজারে স্পষ্ট টাইপ কনভার্শন
Error in Python
Python-এ মূলত তিন ধরনের ত্রুটি রয়েছে:
1. সিনট্যাক্স ত্রুটি (Syntax Errors):
- এগুলি Python-এর নিয়ম লঙ্ঘন করার কারণে হয়।
- প্রোগ্রাম রান করার আগেই ধরা পড়ে। উদাহরণ:
# সিনট্যাক্স ত্রুটি
print "Hello, West Bengal" # সঠিক হবে: print("Hello, West Bengal")
if x = 5: # সঠিক হবে: if x == 5:
print(x)
2. লজিক্যাল ত্রুটি (Logical Errors):
- এগুলি প্রোগ্রামের যুক্তিতে ভুল থাকার কারণে হয়।
- প্রোগ্রাম রান হয়, কিন্তু ভুল ফলাফল দেয়।
- এগুলি খুঁজে বের করা কঠিন হতে পারে। উদাহরণ:
# লজিক্যাল ত্রুটি
def calculate_average(numbers):
total = sum(numbers)
return total / len(numbers) + 1 # '+1' এখানে লজিক্যাল ত্রুটি
print(calculate_average([1, 2, 3, 4, 5])) # ভুল ফলাফল: 4.0 (সঠিক হবে 3.0)
3. Runtime Errors(রানটাইম ত্রুটি ):
- এগুলি প্রোগ্রাম চলাকালীন সময়ে ঘটে।
- অনেক সময় এগুলিকে এক্সেপশন (Exception) বলা হয়। উদাহরণ:
# রানটাইম ত্রুটি
numbers = [1, 2, 3]
print(numbers[3]) # IndexError: list index out of range
x = 10
y = 0
print(x / y) # ZeroDivisionError: division by zero
Error Handling(এরর হ্যান্ডলিং):
Python-এ try
–except
ব্লক ব্যবহার করে রানটাইম ত্রুটি নিয়ন্ত্রণ করা যায়:
try:
x = 10
y = 0
result = x / y
print(result)
except ZeroDivisionError:
print("Can not divided by zero")
Example:
def divide_numbers(a, b):
try:
result = a / b
return result
except ZeroDivisionError:
return "Can not divided by zero"
except TypeError:
return "Can not divided by anything other then number"
# Test Case
print(divide_numbers(10, 2)) # সঠিক ফলাফল: 5.0
print(divide_numbers(10, 0)) # শূন্য দিয়ে ভাগ
print(divide_numbers(10, "2")) # টাইপ ত্রুটি
# Example of Logical Error
def calculate_discount(price, discount_percentage):
discount = price * (discount_percentage / 100)
return price - discount # no logical error, but if you write 'price + discount' then error will come
print(calculate_discount(100, 20)) # সঠিক ফলাফল: 80.0
# Example of Syntax error
# if price < 0
# print("Price will not negative")
মনে রাখবেন:
- Syntax Error এড়াতে সতর্কতার সাথে কোড লিখুন।
- Logical Error এড়াতে আপনার কোড ভালভাবে পরীক্ষা করুন।
- Runtime Error নিয়ন্ত্রণের জন্য
try
–except
ব্যবহার করুন।
Flow of Control(নিয়ন্ত্রণ প্রবাহ):
1. Use of Indentation (ইনডেনটেশনের ব্যবহার):
Python-এ নিয়ন্ত্রণ প্রবাহ নির্ধারণ করতে ইনডেনটেশন (indentation) ব্যবহার করা হয়। এটি কোডের গঠন ও পঠনযোগ্যতা বজায় রাখে।
Example:
if True:
print("This line is indentend")
print("This is also Indented")
print("This line is not Indented")
2. ক্রমিক প্রবাহ (Sequential Flow):
কোড সাধারণত উপর থেকে নিচে, বাম থেকে ডানে ক্রমানুসারে চলে।
উদাহরণ:
print("First Line")
print("Second Line")
print("Third Line")
3. শর্তসাপেক্ষ প্রবাহ (Conditional Flow):if
, elif
, else
ব্যবহার করে শর্তসাপেক্ষ প্রবাহ নিয়ন্ত্রণ করা হয়।
উদাহরণ:
age = 20
if age < 18:
print("You are under 18")
elif age >= 18 and age < 60:
print("You are Adult")
else:
print("You are aged")
4. পুনরাবৃত্তিমূলক প্রবাহ (Iterative Flow):for
ও while
লুপ ব্যবহার করে পুনরাবৃত্তিমূলক প্রবাহ নিয়ন্ত্রণ করা হয়।
a) for লুপ:
fruits = ["Mango", "banana", "Grapes"]
for fruit in fruits:
print(f" I like {fruit} ")
b) while লুপ:
count = 0
while count < 5:
print(f"present number: {count}")
count += 1
Example
def print_multiplication_table(n):
print(f"Multiplication Table of {n} :")
for i in range(1, 11):
print(f"{n} x {i} = {n*i}")
def check_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
# Main program
while True:
choice = input("What is your choice? (1: Multiplication Table, 2: check Prime number, 3: Program close): ")
if choice == '1':
n = int(input("Which number’s multiplication table do you want to see? "))
print_multiplication_table(n)
elif choice == '2':
num = int(input("Enter number to check Prime number? "))
if check_prime(num):
print(f"{num} is prime number")
else:
print(f"{num} is not prime number")
elif choice == '3':
print("Than you for use this program।")
break
else:
print("Try againt!!")
print() # Print Blank Line (একটি খালি লাইন প্রিন্ট)
এই প্রোগ্রামে আমরা দেখতে পাচ্ছি:
- Sequential Flow (ক্রমিক প্রবাহ): কোড উপর থেকে নিচে চলছে।
- Conditional Flow(শর্তসাপেক্ষ প্রবাহ):
if
,elif
,else
ব্যবহার করে বিভিন্ন পছন্দ নিয়ন্ত্রণ করা হচ্ছে। - Iterative flow(পুনরাবৃত্তিমূলক প্রবাহ):
while
লুপ ব্যবহার করে প্রোগ্রাম চালু রাখা হচ্ছে।for
লুপ ব্যবহার করে নামতা প্রিন্ট ও মৌলিক সংখ্যা যাচাই করা হচ্ছে।
- Function:
print_multiplication_table()
ওcheck_prime()
ফাংশন ব্যবহার করে কোড পুনঃব্যবহার করা হচ্ছে। - Indentation: প্রতিটি ব্লকের জন্য সঠিক ইনডেনটেশন ব্যবহার করা হয়েছে।
Strings
Introduction:
Python-এ স্ট্রিং হল অপরিবর্তনীয় (immutable) অক্ষরের ক্রম। এগুলি সিঙ্গল কোট (”) বা ডাবল কোট (“”) দিয়ে লেখা হয়।
উদাহরণ:
s1 = 'Hello'
s2 = "Bengal"
2. String Operation:
a) সংযুক্তিকরণ (Concatenation):python full_greeting = s1 + ' ' + s2 print(full_greeting) #
Hello Bengal
b) পুনরাবৃত্তি (Repetition):python repeated = s1 * 3 print(repeated) #
HelloHelloHello
c) সদস্যপদ (Membership):python print('lo' in s1) # True print('gal' in s2) # True
d) স্লাইসিং (Slicing):python print(s2[0:3]) # Ben print(s2[::-1]) # lag (উল্টো)
3. লুপ ব্যবহার করে স্ট্রিং ট্রাভার্স (Traverse string using loop):
for char in s1:
print(char)
৪. বিল্ট-ইন ফাংশন/মেথড(Built-in Function and Method):
text = "python programming"
print(len(text)) # 19 (দৈর্ঘ্য)
print(text.capitalize()) # Python programming
print(text.title()) # Python Programming
print(text.lower()) # python programming
print(text.upper()) # PYTHON PROGRAMMING
print(text.count('p')) # 2 ('p' এর সংখ্যা)
print(text.find('gram')) # 11 (অবস্থান)
print(text.index('gram')) # 11 (অবস্থান, না পেলে ValueError)
print(text.endswith('ming')) # True
print(text.startswith('py')) # True
print(text.isalnum()) # False (শুধু অক্ষর ও সংখ্যা নয়)
print(text.isalpha()) # False (শুধু অক্ষর নয়)
print(text.isdigit()) # False (শুধু সংখ্যা নয়)
print(text.islower()) # True (সব ছোট হাতের)
print(text.isupper()) # False (সব বড় হাতের নয়)
print(text.isspace()) # False (শুধু স্পেস নয়)
print(text.lstrip('p')) # ython programming (বাম দিক থেকে 'p' সরানো)
print(text.rstrip('g')) # python programmin (ডান দিক থেকে 'g' সরানো)
print(text.strip('p')) # ython programmin (উভয় দিক থেকে 'p' সরানো)
print(text.replace('python', 'Java')) # Java programming
print('-'.join(['a', 'b', 'c'])) # a-b-c
print(text.partition(' ')) # ('python', ' ', 'programming')
print(text.split()) # ['python', 'programming']
অনুশীলনী প্রোগ্রাম:
নিচের প্রোগ্রামটি লিখুন ও চালান। এটি বিভিন্ন স্ট্রিং অপারেশন ও মেথড ব্যবহার করে:
def analyze_text(text):
print(f"Main Text: {text}")
print(f"Length: {len(text)}")
print(f"Uppercase: {text.upper()}")
print(f"Lowercase: {text.lower()}")
print(f"Number of word: {len(text.split())}")
print(f"Number of letter 'a': {text.count('a')}")
print(f"First position of 'a' : {text.find('a')}")
print(f"Capital of first letter of every word: {text.title()}")
print(f"'is started with Python' {text.startswith('Python')}")
print(f"Omit space: {text.replace(' ', '')}")
words = text.split()
print(f"Reverse Word: {' '.join(words[::-1])}")
# টেস্ট(Text)
sample_text = "Python is a powerful programming language"
analyze_text(sample_text)
# ব্যবহারকারীর ইনপুট (User Input)
user_text = input("nwrite your own text: ")
analyze_text(user_text)
এই প্রোগ্রামটি চালিয়ে দেখুন। এটি আপনাকে Python-এ স্ট্রিং ম্যানিপুলেশনের বিভিন্ন দিক সম্পর্কে একটি ভাল ধারণা দেবে। প্রোগ্রামটি প্রথমে একটি নমুনা টেক্সট নিয়ে কাজ করে, তারপর ব্যবহারকারীর দেওয়া টেক্সট নিয়ে একই বিশ্লেষণ করে।
মনে রাখবেন:
- Python-এ স্ট্রিং অপরিবর্তনীয় (immutable)। যখন আপনি একটি স্ট্রিং পরিবর্তন করেন, আসলে একটি নতুন স্ট্রিং তৈরি হয়।
- স্ট্রিং ইনডেক্সিং 0 থেকে শুরু হয়।
- নেগেটিভ ইনডেক্সিং দিয়ে স্ট্রিংয়ের শেষ থেকে অ্যাক্সেস করা যায়।
List (লিস্ট ):
লিস্ট হল Python-এর একটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। এটি একাধিক আইটেম একসাথে সংরক্ষণ করতে ব্যবহৃত হয়।
উদাহরণ:
fruits = ["Mango", "Banana", "Apple", "Grape"]
print(fruits[0]) # প্রথম আইটেম প্রিন্ট করে
print(len(fruits)) # লিস্টের দৈর্ঘ্য প্রিন্ট করে
fruits.append("Orange") # নতুন আইটেম যোগ করে
print(fruits)
এই কোডের আউটপুট হবে:
Mango
4
[“Mango”, “Banana”, “Apple”, “Grape”, “Orange”]
লিস্টের কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য:
- Indexing:
fruits[0]
প্রথম আইটেম অ্যাক্সেস করে। len()
ফাংশন লিস্টের দৈর্ঘ্য(length of list) দেয়।append()
মেথড নতুন আইটেম যোগ করে।
Dictionary(ডিকশনারি):
ডিকশনারি হল Python-এর আরেকটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। এটি কী-ভ্যালু জোড়া সংরক্ষণ করে।
উদাহরণ:
student = {
"name": "Manas",
"age": 40,
"grade": "A"
}
print(student["name"]) # কী দিয়ে ভ্যালু অ্যাক্সেস [value access through key]
student["subject"] = "math" # নতুন কী-ভ্যালু জোড়া যোগ [Add new key-value pair]
print(student)
এই কোডের আউটপুট হবে:
Manas
{‘name’: ‘Manas’, ‘age’: 20, ‘grade’: ‘A’, ‘subject’: ‘math’}
ডিকশনারির(Dictionary) কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য:
- Curly bracket
{}
দিয়ে ডিকশনারি (dictionary) তৈরি করা হয়। - প্রতিটি আইটেম একটি কী-ভ্যালু জোড়া [pair of key value]।
- key দিয়ে value access করা যায়।
- নতুন কী-ভ্যালু জোড়া (key-value pair ) সহজেই যোগ করা যায়।
আরেকটি উদাহরণ:
for key, value in student.items():
print(f"{key}: {value}")
এই লুপ ডিকশনারির সব কী-ভ্যালু জোড়া(pair of key value) প্রিন্ট করবে।
Tuple(টিউপল ):
টিউপল লিস্টের মতোই, কিন্তু এটি অপরিবর্তনীয় (immutable)। অর্থাৎ, একবার তৈরি করা হলে এর উপাদানগুলি পরিবর্তন করা যায় না।
উদাহরণ:
coordinates = (4, 5)
print(coordinates[0]) # প্রথম উপাদান প্রিন্ট করে
print(len(coordinates)) # টিউপলের দৈর্ঘ্য প্রিন্ট করে
# নিচের লাইনটি ত্রুটি দেখাবে
# coordinates[0] = 10 # এটি কাজ করবে না, কারণ টিউপল অপরিবর্তনীয়
এই কোডের আউটপুট হবে:
4
2
টিউপলের কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য:
- Parenthesis “
()"
দিয়ে টিউপল তৈরি করা হয়। - লিস্টের মতোই ইনডেক্সিং(indexing) করা যায়।
- একবার তৈরি করা হলে এর উপাদান পরিবর্তন করা যায় না। (not changable)
- টিউপল(tuples) লিস্টের(list) চেয়ে দ্রুত কাজ করে। (faster then list)
টিউপল ব্যবহারের আরেকটি উদাহরণ:
def get_name_and_age():
return ("Manas", 40)
name, age = get_name_and_age()
print(f"name: {name}, age: {age}")
এই উদাহরণে, ফাংশন একটি টিউপল ফেরত দেয় এবং আমরা সেটি আনপ্যাক করে দুটি ভেরিয়েবলে রাখছি।
Python Module
মডিউল হল Python ফাইল যা বিভিন্ন ফাংশন, ক্লাস এবং ভেরিয়েবল ধারণ করে। এগুলি কোড পুনঃব্যবহার ও সংগঠনে সাহায্য করে।
1. মডিউল ইম্পোর্ট করা(Import Module):
a) ‘import’ স্টেটমেন্ট ব্যবহার:python import math print(math.pi) # 3.141592653589793
b) ‘from’ স্টেটমেন্ট ব্যবহার:python from math import sqrt print(sqrt(16)) # 4.0
2. math Module:
import math
print(math.pi) # 3.141592653589793
print(math.e) # 2.718281828459045
print(math.sqrt(25)) # 5.0
print(math.ceil(4.3)) # 5
print(math.floor(4.7)) # 4
print(math.pow(2, 3)) # 8.0
print(math.fabs(-5)) # 5.0
print(math.sin(math.pi/2)) # 1.0
print(math.cos(0)) # 1.0
print(math.tan(math.pi/4)) # 0.9999999999999999
3. random Module:
import random
print(random.random()) # 0 থেকে 1 এর মধ্যে একটি এলোমেলো সংখ্যা
print(random.randint(1, 10)) # 1 থেকে 10 এর মধ্যে একটি এলোমেলো পূর্ণসংখ্যা
print(random.randrange(0, 101, 5)) # 0 থেকে 100 এর মধ্যে 5 এর গুণিতক
4. statistics Module:
import statistics
data = [1, 2, 3, 4, 5, 5, 6, 7]
print(statistics.mean(data)) # গড়: 4.125
print(statistics.median(data)) # মধ্যমা: 4.5
print(statistics.mode(data)) # প্রচুরক: 5
অনুশীলনী প্রোগ্রাম(Practice):
নিচের প্রোগ্রামটি লিখুন ও চালান। এটি বিভিন্ন মডিউল ব্যবহার করে একটি ছোট গণিত ও পরিসংখ্যান গেম তৈরি করে:
import math
import random
import statistics
def generate_question():
operations = ['+', '-', '*', '/']
num1 = random.randint(1, 20)
num2 = random.randint(1, 20)
operation = random.choice(operations)
if operation == '+':
answer = num1 + num2
elif operation == '-':
answer = num1 - num2
elif operation == '*':
answer = num1 * num2
else:
num1 = num1 * num2
answer = num1 // num2
return f"{num1} {operation} {num2}", answer
def play_math_game():
scores = []
for _ in range(5):
question, correct_answer = generate_question()
user_answer = float(input(f"Question: {question} = "))
if math.isclose(user_answer, correct_answer, rel_tol=1e-9):
print("right!")
scores.append(1)
else:
print(f"wrong। Correct answer was {correct_answer}")
scores.append(0)
return scores
def analyze_scores(scores):
print(f"n Your score: {sum(scores)} / 5")
print(f"Average Score: {statistics.mean(scores)}")
print(f"Median Score: {statistics.median(scores)}")
if len(scores) > 1:
print(f"Standard deviation: {statistics.stdev(scores)}")
print("Welcome to math Puzzle")
scores = play_math_game()
analyze_scores(scores)
print("nBonus: Test your luck")
lucky_number = random.randint(1, 100)
guess = int(input("Guess 1 number from 1 to 10 "))
if guess == lucky_number:
print("Congratulation! You are right !")
else:
print(f"Sorry right number was {lucky_number}")
এই প্রোগ্রামে আমরা দেখতে পাচ্ছি:
math
মডিউল থেকেisclose()
ফাংশন ব্যবহার করে ফ্লোটিং পয়েন্ট সংখ্যার তুলনা করা হচ্ছে।random
মডিউল ব্যবহার করে এলোমেলো প্রশ্ন ও সংখ্যা তৈরি করা হচ্ছে।statistics
মডিউল ব্যবহার করে স্কোরের বিশ্লেষণ করা হচ্ছে।
এই প্রোগ্রামটি চালিয়ে দেখুন। এটি আপনাকে Python-এ বিভিন্ন মডিউলের ব্যবহার সম্পর্কে একটি ভাল ধারণা দেবে।
মনে রাখবেন:
- মডিউল ব্যবহার করলে কোড পুনঃব্যবহার ও সংগঠন সহজ হয়।
- Python-এর স্ট্যান্ডার্ড লাইব্রেরিতে অনেক উপযোগী মডিউল রয়েছে।
- নিজের মডিউলও তৈরি করা যায়।
ফাংশন (Function):
ফাংশন হল কোডের একটি পুনঃব্যবহারযোগ্য ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করে। এটি আপনার কোডকে সংগঠিত ও পুনঃব্যবহারযোগ্য করে তোলে।
উদাহরণ:
def greet(name):
return f"hello, {name}! How are you?"
print(greet("Manas"))
print(greet("Halder"))
এই কোডের আউটপুট হবে:
hello Manas! How are you?
hello Halder! How are you?
এখানে:
def
কীওয়ার্ড দিয়ে ফাংশন সংজ্ঞায়িত(function defined) করা হয়।greet
হল ফাংশনের নাম।(name of the function)name
হল প্যারামিটার যা ফাংশনে পাঠানো হয়।(Parameter of function)return
কীওয়ার্ড ফাংশনের ফলাফল ফেরত দেয়। (result return )
আরেকটি উদাহরণ:
def add(a, b):
return a + b
result = add(5, 3)
print(result) # আউটপুট হবে: 8
এই ফাংশন দুটি সংখ্যা যোগ করে এবং ফলাফল ফেরত দেয়।
Exception Handling
1. Introduction:
Exception Handling হল এমন একটি পদ্ধতি যা প্রোগ্রাম চলাকালীন উদ্ভূত ত্রুটি বা অপ্রত্যাশিত পরিস্থিতি নিয়ন্ত্রণ করতে সাহায্য করে। এটি প্রোগ্রামকে নিরাপদে ও সুন্দরভাবে ত্রুটি সামাল দিতে সাহায্য করে।
2. try-except-finally ব্লক ব্যবহার করে Exception Handling:
a) try block:
এই ব্লকে সেই কোড লেখা হয় যেখানে Exception ঘটতে পারে।
b) except block:
যদি try ব্লকে কোনো Exception ঘটে, তবে এই ব্লক কার্যকর হয়। এখানে Exception হ্যান্ডল করার কোড লেখা হয়।
c) finally ব্লক:
এই ব্লকের কোড সবসময় চলবে, Exception ঘটুক বা না ঘটুক।
উদাহরণ:
try:
x = int(input("Enter number: "))
result = 10 / x
print(f"Result: {result}")
except ValueError:
print("Sorry give me valid number")
except ZeroDivisionError:
print("Sorry Can not divide by Zero")
except Exception as e:
print(f"Unexpected error: {e}")
finally:
print("Program End")
3. বিভিন্ন ধরনের Exception:
- ValueError: অবৈধ মান ব্যবহার করা হলে
- ZeroDivisionError: শূন্য দিয়ে ভাগ করার চেষ্টা করলে
- TypeError: ভুল টাইপের ডেটা ব্যবহার করা হলে
- FileNotFoundError: ফাইল খুঁজে না পেলে
- IndexError: লিস্ট বা টিউপলের অবৈধ ইনডেক্স ব্যবহার করলে
4. নিজস্ব Exception তৈরি (Own exception create):
class CustomError(Exception):
pass
def check_age(age):
if age < 0:
raise CustomError("বয়স ঋণাত্মক হতে পারে না")
try:
user_age = int(input("আপনার বয়স দিন: "))
check_age(user_age)
print(f"আপনার বয়স {user_age}")
except CustomError as e:
print(f"ত্রুটি: {e}")
অনুশীলনী প্রোগ্রাম(Practice):
নিচের প্রোগ্রামটি লিখুন ও চালান। এটি Exception Handling ব্যবহার করে একটি সাধারণ ক্যালকুলেটর তৈরি করে:
def calculator():
operations = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y
}
while True:
try:
num1 = float(input("First Number: "))
num2 = float(input("Second Number "))
operation = input("Select you operation (+, -, *, /): ")
if operation not in operations:
raise ValueError("Valid Operation")
result = operations[operation](num1, num2)
print(f"Result: {result}")
except ValueError as ve:
print(f"Error: {ve}। Kindly provide right number or operation")
except ZeroDivisionError:
print("Error: Can not Divide by Zero ")
except Exception as e:
print(f"Unexpected Error Occured: {e}")
finally:
choice = input("you want to calculate again? (yes/no): ")
if choice.lower() != 'Yes':
print("Thank you for using calculator")
break
calculator()
এই প্রোগ্রামে আমরা দেখতে পাচ্ছি:
- বিভিন্ন ধরনের Exception হ্যান্ডল করা হচ্ছে (ValueError, ZeroDivisionError)।
- নিজস্ব Exception তৈরি করা হয়েছে (অবৈধ অপারেশনের জন্য ValueError raise করা)।
- finally ব্লক ব্যবহার করে প্রতিবার গণনার পর ব্যবহারকারীর পছন্দ জানা হচ্ছে।
এই প্রোগ্রামটি চালিয়ে দেখুন এবং বিভিন্ন ইনপুট দিয়ে পরীক্ষা করুন। এটি আপনাকে Python-এ Exception Handling সম্পর্কে একটি ভাল ধারণা দেবে।
মনে রাখবেন:
- Exception Handling প্রোগ্রামকে আরও রোবাস্ট ও ব্যবহারকারী-বান্ধব করে।
- সবসময় সুনির্দিষ্ট Exception ধরার চেষ্টা করুন, সাধারণ Exception ব্যবহার করা এড়িয়ে চলুন।
- finally ব্লক ব্যবহার করে নিশ্চিত করুন যে গুরুত্বপূর্ণ কাজগুলি (যেমন ফাইল বন্ধ করা) সম্পন্ন হয়।
ক্লাস ও অবজেক্ট (Class and Object):
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এর মূল ধারণা হল ক্লাস ও অবজেক্ট। ক্লাস হল একটি টেমপ্লেট, আর অবজেক্ট হল সেই টেমপ্লেট থেকে তৈরি একটি বাস্তব উদাহরণ।
উদাহরণ:
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def display_info(self):
return f"এটি একটি {self.brand} {self.model}"
my_car = Car("BMW", "Mercedes")
print(my_car.display_info())
এই কোডের আউটপুট হবে:
BMW , Mercedes
এখানে:
Car
একটি ক্লাস।__init__
হল একটি বিশেষ মেথড যা অবজেক্ট তৈরির সময় কল হয়।self
রিফার করে অবজেক্ট নিজেকে।my_car
হলCar
ক্লাসের একটি অবজেক্ট।
আরেকটি উদাহরণ:
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
rect = Rectangle(5, 3)
print(f"আয়তক্ষেত্রের ক্ষেত্রফল: {rect.area()}")
এই কোড আয়তক্ষেত্রের ক্ষেত্রফল গণনা করে।