আসসালামু আলাইকুম ওয়া রাহমাতুল্লাহি ওয়া বারাকাতুহু 🙌
প্রিয় শিক্ষার্থী, আপনার শিক্ষার যাত্রা যেন আল্লাহ তা'আলার রহমতে উপকৃত হয় — এই দোয়া করছি।
📖 জ্ঞান অর্জনের উৎসাহ — কুরআন থেকে:
يُؤۡتِيۡ الۡحِكۡمَةَ مَنۡ يَّشَآءُۚ وَمَنۡ يُؤۡتَ الۡحِكۡمَةَ فَقَدۡ أُوتِيَ خَيۡرً۬ا كَثِيرً۬اۖ
বাংলা: "তিনি যাকে চান হিকমত (প্রজ্ঞা) দান করেন। এবং যাকে হিকমত দান করা হয়, তাকে অনেক ভালো জিনিস দেওয়া হয়।" — সূরা আল-বাকারাহ (২:২৬৯)
English: "He grants wisdom to whom He wills, and whoever is granted wisdom has been given abundant good." — Surah Al-Baqarah (2:269)
وَمَنۡ يَّتَّقِ يُۡجۡعَلۡ لَّهُۥ مَخۡرَجً۬ا
বাংলা: "এবং যে আল্লাহকে ভয় করে, আল্লাহ তার জন্য উপায় বের করে দেন।" — সূরা আত-তালাক (৬৫:২)
English: "And whoever fears Allah - He will make for him a way out." — Surah At-Talaq (65:2)
🔗 প্র্যাকটিসের জন্য রেফারেন্স রিপোজিটরি:
এই বইয়ের কোডগুলো প্র্যাকটিস করার জন্য আপনি এই GitHub রিপোজিটরি ব্যবহার করতে পারেন:
📝 সৌজন্য নোট: এই বইটি মূলত বিভিন্ন উৎস থেকে সংকলিত ও অনুপ্রাণিত। কোড ও কনটেন্ট অন্যের হতে পারে। এই বই থেকে শিখতে পারেন, কিন্তু সরাসরি কপি-পেস্ট করে প্রকাশ করা থেকে বিরত থাকুন। জ্ঞান অর্জন করুন, নিজের মেধা তৈরি করুন। 📚
অধ্যায় ১ Python পরিচিতি
🐍 Python কী?
পাইথন একটি উচ্চ-স্তরের, ইন্টারপ্রেটেড, অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা। এটি ১৯৯১ সালে গুইডো ভ্যান রসাম তৈরি করেন। পাইথনের সবচেয়ে বড় বৈশিষ্ট্য হলো এর সরল ও পড়তে সহজ সিনট্যাক্স।
পাইথন বর্তমানে বিশ্বের সবচেয়ে জনপ্রিয় প্রোগ্রামিং ভাষাগুলোর একটি। ওয়েব ডেভেলপমেন্ট, ডেটা সায়েন্স, কৃত্রিম বুদ্ধিমত্তা, মেশিন লার্নিং, অটোমেশন, গেম ডেভেলপমেন্ট সহ নানা ক্ষেত্রে এটি ব্যবহৃত হয়।
🎯 কেন পাইথন শিখবেন?
- সহজ ও পড়তে সুবিধাজনক — ইংরেজির মতো পড়া যায়
- মুক্ত ও ওপেন সোর্স — বিনামূল্যে ব্যবহার করা যায়
- ক্রস-প্ল্যাটফর্ম — Windows, Mac, Linux সব জায়গায় চলে
- বিশাল কমিউনিটি — প্রচুর লাইব্রেরি ও রিসোর্স আছে
- ক্যারিয়ারের ভালো সুযোগ — চাকরির বাজার দারুণ
⚙️ Python ইনস্টলেশন (বাংলায় ধাপে ধাপে)
Windows-এ Python সেটআপ:
- python.org ওয়েবসাইটে যান
- "Downloads" এ ক্লিক করে সর্বশেষ Python ডাউনলোড করুন
- ইনস্টলার রান করুন এবং নিচের "Add Python to PATH" অপশনটি টিক দিন
- "Install Now" এ ক্লিক করুন
- cmd বা PowerShell খুলে
python --versionলিখে চেক করুন
VS Code সেটআপ:
- code.visualstudio.com থেকে VS Code ডাউনলোড ও ইনস্টল করুন
- Python এক্সটেনশন (Microsoft) ইনস্টল করুন
- একটি .py ফাইল তৈরি করে কোড লেখা শুরু করুন
প্রথম প্রোগ্রাম: Hello World
print("Hello, World!") print("স্বাগতম পাইথন জগতে!")
Hello, World!
স্বাগতম পাইথন জগতে!
Comment (মন্তব্য)
Comment কোডের এমন অংশ যা Python interpreter উপেক্ষা করে। এটি কোড বোঝার জন্য নোট হিসেবে ব্যবহৃত হয়।
# এইটা single-line comment print("Hello") # লাইনের শেষেও comment দেওয়া যায় """ এইটা multi-line comment একাধিক লাইন লেখা যায় """ print("Multi-line comment কাজ করে")
Hello
Multi-line comment কাজ করে
Indentation (ইন্ডেন্টেশন)
পাইথনে indentation খুবই গুরুত্বপূর্ণ। এটি কোড ব্লক নির্ধারণ করে। সাধারণত ৪টি স্পেস বা ১টি ট্যাব ব্যবহার করা হয়।
x = 10 if x > 5: print("x 5 এর বড়") # ৪ স্পেস ইন্ডেন্ট print("এইটাও if ব্লকের ভিতর") print("এইটা if ব্লকের বাইরে")
x 5 এর বড়
এইটাও if ব্লকের ভিতর
এইটা if ব্লকের বাইরে
print("বাংলায় পাইথন শিখছি!") print(42) print(3.1416) print(True) print([1, 2, 3])
বাংলায় পাইথন শিখছি!
42
3.1416
True
[1, 2, 3]
name = "রহিম" age = 25 print("আমার নাম", name, "এবং বয়স", age)
আমার নাম রহিম এবং বয়স 25
import keyword print("Python কী-ওয়ার্ড সমূহ:") print(keyword.kwlist) print("মোট কী-ওয়ার্ড:", len(keyword.kwlist))
Python কী-ওয়ার্ড সমূহ:
['False', 'None', 'True', ...]
মোট কী-ওয়ার্ড: 35
print("Hello\nWorld") # newline print("Hello\tWorld") # tab print("She\'s nice") # single quote print('He said "Hi"') # double quote print("Backslash: \\") # backslash
Hello
World
Hello World
She's nice
He said "Hi"
Backslash: \
print("Python", "বাংলা", "শিখি", sep=" - ") print("Hello", end=" ") print("World")
Python - বাংলা - শিখি
Hello World
print(type(10)) print(type(3.14)) print(type("Hello")) print(type(True)) print(type([1,2,3]))
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'list'>
print(""" এটা একটা multi-line string """)
এটা একটা
multi-line
string
📌 মূল কথা
পাইথন একটি সহজ, শক্তিশালী এবং বহুল ব্যবহৃত প্রোগ্রামিং ভাষা। ইন্ডেন্টেশন এবং কমেন্ট ব্যবহার করে আমরা কোড আরও পড়তে সুবিধাজনক করতে পারি। print() ফাংশন দিয়ে আমরা বিভিন্ন ধরনের ডেটা আউটপুট করতে পারি।
অধ্যায় ২ Variables ও Data Types
📦 Variable (পরিবর্তনশীল)
Variable হলো একটি নাম যা আমরা ডেটা সংরক্ষণের জন্য ব্যবহার করি। পাইথনে variable ঘোষণার সময় টাইপ উল্লেখ করতে হয় না — এটি ডায়নামিক টাইপিং ভাষা।
name = "আলিফ" age = 20 height = 5.8 is_student = True print(name) print(age) print(height) print(is_student)
আলিফ
20
5.8
True
x = 10
print("Value:", x)
print("Type:", type(x))
print("ID:", id(x))
y = 10
print("y-এর ID:", id(y))
print("Same?", id(x) == id(y))
Value: 10
Type: <class 'int'>
ID: 14073...
y-এর ID: 14073...
Same? True
x = 10 print(x, type(x)) x = "হ্যালো" print(x, type(x)) x = 3.14 print(x, type(x)) x = True print(x, type(x))
10 <class 'int'>
হ্যালো <class 'str'>
3.14 <class 'float'>
True <class 'bool'>
x = "123" print(int(x) + 10) y = 456 print(str(y) + " ABC") z = "3.14" print(float(z) * 2) print(bool(0), bool(1))
133
456 ABC
6.28
False True
x = None
print(x)
print(type(x))
if x is None:
print("x-এর কোনো মান নেই")
None
<class 'NoneType'>
x-এর কোনো মান নেই
a, b, c = 1, 2, 3 print(a, b, c) x = y = z = 0 print(x, y, z)
1 2 3
0 0 0
a, b = 5, 10
print("আগে: a =", a, "b =", b)
a, b = b, a
print("পরে: a =", a, "b =", b)
আগে: a = 5 b = 10
পরে: a = 10 b = 5
my_name = "Rahim" myName = "Karim" _name = "Secret" name2 = "Sadia" MY_CONST = 100 print(my_name, myName, _name, name2, MY_CONST)
Rahim Karim Secret Sadia 100
a = 10; b = 3.14; c = 2+3j
d = "Hello"; e = [1,2,3]; f = (1,2,3); g = range(5)
h = {"name":"Rahim"}; i = {1,2,3}; j = True
print(type(a), type(b), type(c))
print(type(d), type(e), type(f), type(g))
print(type(h), type(i), type(j))
<class 'int'> <class 'float'> <class 'complex'>
<class 'str'> <class 'list'> <class 'tuple'> <class 'range'>
<class 'dict'> <class 'set'> <class 'bool'>
x = "10" y = 5 print(int(x) + y)
15
📌 মূল কথা
পাইথনে variable ডায়নামিক টাইপিং সাপোর্ট করে। type(), id() দিয়ে ডেটা সম্পর্কে জানা যায়। টাইপ কনভার্সন ফাংশন (int(), str(), float(), bool()) ব্যবহার করে এক টাইপ থেকে অন্য টাইপে রূপান্তর করা যায়।
অধ্যায় ৩ Operators
🔧 Operator (অপারেটর)
Operator হলো প্রতীক যা নির্দিষ্ট গাণিতিক বা লজিক্যাল কাজ সম্পাদন করে। পাইথনে বিভিন্ন ধরনের operator আছে — arithmetic, comparison, logical, bitwise, assignment, identity, membership.
Arithmetic Operators
a, b = 15, 4
print(f"যোগ: {a+b}")
print(f"বিয়োগ: {a-b}")
print(f"গুণ: {a*b}")
print(f"ভাগ: {a/b}")
print(f"পূর্ণ ভাগ: {a//b}")
print(f"ভাগশেষ: {a%b}")
print(f"ঘাত: {a**b}")
যোগ: 19
বিয়োগ: 11
গুণ: 60
ভাগ: 3.75
পূর্ণ ভাগ: 3
ভাগশেষ: 3
ঘাত: 50625
Comparison Operators
a, b = 10, 20
print(f"{a} == {b}: {a==b}")
print(f"{a} != {b}: {a!=b}")
print(f"{a} > {b}: {a>b}")
print(f"{a} < {b}: {a= {b}: {a>=b}")
print(f"{a} <= {b}: {a<=b}")
10 == 20: False
10 != 20: True
10 > 20: False
10 < 20: True
10 >= 20: False
10 <= 20: True
Logical Operators
x, y = True, False
print(f"{x} and {y}: {x and y}")
print(f"{x} or {y}: {x or y}")
print(f"not {x}: {not x}")
age, has_id = 22, True
if age >= 18 and has_id:
print("ভোট দিতে পারবেন")
True and False: False
True or False: True
not True: False
ভোট দিতে পারবেন
Assignment Operators
x = 10
print(f"x = {x}")
x += 5; print(f"x += 5: {x}")
x -= 3; print(f"x -= 3: {x}")
x *= 2; print(f"x *= 2: {x}")
x /= 4; print(f"x /= 4: {x}")
x //= 2; print(f"x //= 2: {x}")
x %= 3; print(f"x %= 3: {x}")
x **= 2; print(f"x **= 2: {x}")
x = 10
x += 5: 15
x -= 3: 12
x *= 2: 24
x /= 4: 6.0
x //= 2: 3.0
x %= 3: 0.0
x **= 2: 0.0
Bitwise Operators
a, b = 12, 10
print(f"a & b: {a & b}")
print(f"a | b: {a | b}")
print(f"a ^ b: {a ^ b}")
print(f"~a: {~a}")
print(f"a << 2: {a << 2}")
print(f"a >> 2: {a >> 2}")
a & b: 8
a | b: 14
a ^ b: 6
~a: -13
a << 2: 48
a >> 2: 3
Identity & Membership
a = [1,2,3]
b = [1,2,3]
c = a
print(f"a is c: {a is c}")
print(f"a is b: {a is b}")
print(f"a == b: {a == b}")
a is c: True
a is b: False
a == b: True
fruits = ["আপেল", "কলা", "কমলা"]
print("আপেল in fruits:", "আপেল" in fruits)
print("আঙুর not in fruits:", "আঙুর" not in fruits)
print("Python in name:", "Python" in "Python Programming")
True
True
True
Operator Precedence
r1 = 10 + 5 * 2
print(f"10 + 5 * 2 = {r1}")
r2 = (10 + 5) * 2
print(f"(10+5) * 2 = {r2}")
r3 = 2**3 + 4
print(f"2**3 + 4 = {r3}")
r4 = 10 > 5 and 3 < 8 or not False
print(f"10>5 and 3<8 or not False = {r4}")
10 + 5 * 2 = 20
(10+5) * 2 = 30
2**3 + 4 = 12
True
📌 মূল কথা
পাইথনে সব ধরনের operator আছে — গাণিতিক, তুলনামূলক, লজিক্যাল, বিটওয়াইজ, অ্যাসাইনমেন্ট, আইডেন্টিটি ও মেম্বারশিপ। অপারেটর প্রিসিডেন্স বুঝে সঠিক এক্সপ্রেশন লিখতে হবে।
অধ্যায় ৪ String (স্ট্রিং)
📝 String কী?
String এক বা একাধিক ক্যারেক্টারের সমষ্টি। পাইথনে string ' ', " ", বা """ """ দিয়ে তৈরি করা যায়। String immutable — অর্থাৎ তৈরি করার পর পরিবর্তন করা যায় না।
s1 = 'Hello' s2 = "World" s3 = '''Multi-line string''' s4 = """Another multi-line string""" print(s1, s2) print(s3) print(s4)
Hello World
Multi-line
string
Another multi-line
string
text = "Python"
print(f"শব্দ: {text}")
print(f"0: {text[0]}")
print(f"1: {text[1]}")
print(f"-1: {text[-1]}")
print(f"-2: {text[-2]}")
শব্দ: Python
0: P
1: y
-1: n
-2: o
text = "Python Programming" print(text[0:6]) print(text[7:]) print(text[:6]) print(text[::2]) print(text[::-1]) print(text[-11:])
Python
Programming
Python
Pto rgamn
gnimmargorP nohtyP
Programming
text = " Hello World "
print(f"upper: {text.upper()}")
print(f"lower: {text.lower()}")
print(f"strip: '{text.strip()}'")
print(f"title: {text.strip().title()}")
upper: HELLO WORLD
lower: hello world
strip: 'Hello World'
title: Hello World
text = "আপেল, কলা, কমলা, আঙুর"
fruits = text.split(", ")
print(f"split: {fruits}")
joined = " | ".join(fruits)
print(f"join: {joined}")
split: ['আপেল', 'কলা', 'কমলা', 'আঙুর']
join: আপেল | কলা | কমলা | আঙুর
text = "Python is great. Python is fun."
print(f"find: {text.find('Python')}")
print(f"rfind: {text.rfind('Python')}")
print(f"replace: {text.replace('Python', 'Java')}")
print(f"count is: {text.count('is')}")
find: 0
rfind: 21
replace: Java is great. Java is fun.
count is: 2
name = "সাদিয়া"
age = 22
score = 92.5
print(f"নাম: {name}")
print(f"বয়স: {age}")
print(f"স্কোর: {score:.2f}")
print(f"{name} {age} বছর, স্কোর {score:.1f}%")
নাম: সাদিয়া
বয়স: 22
স্কোর: 92.50
সাদিয়া 22 বছর, স্কোর 92.5%
text = "Hello" text = "J" + text[1:] print(text) s = "Python" print(id(s)) s = s + " Rocks" print(id(s))
Jello
14073...
14074...
print("Ha" * 5)
print("Py" + "thon")
line = "-" * 30
print(line)
print("Centered".center(30, "*"))
HaHaHaHaHa
Python
------------------------------
**********Centered***********
print(r"Hello\nWorld")
for i, ch in enumerate("Python"):
print(f"{i}: {ch}")
Hello\nWorld
0: P
1: y
2: t
3: h
4: o
5: n
print("hello123".isalnum())
print("hello".isalpha())
print("123".isdigit())
print("hello".islower())
print("HELLO".isupper())
print("Hello World".istitle())
print(" ".isspace())
print("Hello".startswith("He"))
print("Hello".endswith("lo"))
True
True
True
True
True
True
True
True
True
name, age = "রহিম", 25
print("নাম: %s, বয়স: %d" % (name, age))
print("স্কোর: %.2f" % 87.4567)
print("নাম: {}, বয়স: {}".format(name, age))
print("{0} {1} বছর".format(name, age))
print("{n} {a} বছর".format(n=name, a=age))
নাম: রহিম, বয়স: 25
স্কোর: 87.46
নাম: রহিম, বয়স: 25
রহিম 25 বছর
রহিম 25 বছর
📌 মূল কথা
String পাইথনের গুরুত্বপূর্ণ ডেটা টাইপ। ইন্ডেক্সিং, স্লাইসিং, মেথড এবং ফরম্যাটিংয়ের মাধ্যমে string নিয়ে নানাভাবে কাজ করা যায়। f-string সবচেয়ে আধুনিক ও সহজ ফরম্যাটিং পদ্ধতি।
অধ্যায় ৫ Input/Output
📥📤 ইনপুট ও আউটপুট
পাইথনে input() ফাংশন ব্যবহার করে ব্যবহারকারীর কাছ থেকে ইনপুট নেওয়া হয় এবং print() ফাংশন ব্যবহার করে আউটপুট দেখানো হয়।
name = input("আপনার নাম কী? ")
print(f"স্বাগতম, {name}!")
age = int(input("আপনার বয়স কত? "))
print(f"আপনার বয়স {age} বছর")
print(f"আগামী বছর আপনার বয়স হবে {age + 1} বছর")
print("Python", "Java", "C++", sep=", ")
print("One", end=" -> ")
print("Two", end=" -> ")
print("Three")
for i in range(5):
print(i, end=" ")
with open("output.txt", "w", encoding="utf-8") as f:
f.write("Hello, World!\n")
f.write("এটা বাংলা লেখা\n")
print("ফাইলে লেখা হয়েছে!")
with open("output.txt", "r", encoding="utf-8") as f:
content = f.read()
print("ফাইলের বিষয়বস্তু:")
print(content)
with open("output.txt", "a", encoding="utf-8") as f:
f.write("নতুন লাইন যোগ করা হলো\n")
print("যোগ করা হয়েছে!")
with open("output.txt", "r", encoding="utf-8") as f:
print(f.read())
with open("output.txt", "r", encoding="utf-8") as f:
print("--- readline ---")
print(repr(f.readline()))
f.seek(0)
print("--- readlines ---")
print(f.readlines())
📌 মূল কথা
input() ব্যবহার করে ইউজার থেকে ডেটা নেওয়া হয় (সবসময় string হিসেবে)। print() দিয়ে আউটপুট দেখানো হয়। sep, end প্যারামিটার দিয়ে আউটপুট নিয়ন্ত্রণ করা যায়। ফাইল I/O-র জন্য with স্টেটমেন্ট সবচেয়ে নিরাপদ।
অধ্যায় ৬ Conditionals (শর্ত)
⚖️ Conditionals
Conditional ব্যবহার করে আমরা প্রোগ্রামে সিদ্ধান্ত নিতে পারি। পাইথনে if, elif, else এবং match-case (Python 3.10+) আছে।
age = 18
if age >= 18:
print("আপনি ভোট দিতে পারবেন")
else:
print("আপনি ভোট দিতে পারবেন না")
marks = 85
if marks >= 80:
print("গ্রেড: A+ (প্রথম স্থান)")
elif marks >= 70:
print("গ্রেড: A")
elif marks >= 60:
print("গ্রেড: A-")
elif marks >= 50:
print("গ্রেড: B")
elif marks >= 40:
print("গ্রেড: C")
else:
print("গ্রেড: F (ফেল)")
age, has_ticket, has_id = 25, True, True
if age >= 18:
print("বয়স ১৮+ ✓")
if has_ticket:
print("টিকেট আছে ✓")
if has_id:
print("আইডি আছে ✓")
print("ভিতরে যেতে পারেন!")
else:
print("আইডি লাগবে")
else:
print("টিকেট কিনুন")
else:
print("বয়স ১৮ এর নিচে")
age = 20
status = "প্রাপ্তবয়স্ক" if age >= 18 else "নাবালক"
print(f"আপনি {status}")
x, y = 10, 20
max_val = x if x > y else y
print(f"বড় মান: {max_val}")
day = 3
match day:
case 1: print("সোমবার")
case 2: print("মঙ্গলবার")
case 3: print("বুধবার")
case 4: print("বৃহস্পতিবার")
case 5: print("শুক্রবার")
case 6: print("শনিবার")
case 7: print("রবিবার")
case _: print("ভুল দিন")
year = 2024
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year} একটি অধিবর্ষ (Leap Year)")
else:
print(f"{year} অধিবর্ষ নয়")
num = 7
if num % 2 == 0:
print(f"{num} জোড় সংখ্যা")
else:
print(f"{num} বিজোড় সংখ্যা")
📌 মূল কথা
if-elif-else দিয়ে বিভিন্ন শর্তে সিদ্ধান্ত নেওয়া যায়। Python 3.10-এ match-case যোগ হয়েছে। টারনারি অপারেটর ছোট শর্তের জন্য দ্রুত সমাধান দেয়।
অধ্যায় ৭ Loops (লুপ)
🔄 Loop কী?
Loop ব্যবহার করে একই কাজ বারবার করা যায়। পাইথনে দুটি লুপ আছে: for এবং while।
fruits = ["আপেল", "কলা", "কমলা"]
for fruit in fruits:
print(f"ফল: {fruit}")
print("range(5):")
for i in range(5): print(i, end=" ")
print("\n\nrange(2, 8):")
for i in range(2, 8): print(i, end=" ")
print("\n\nrange(1, 10, 2):")
for i in range(1, 10, 2): print(i, end=" ")
i = 1
while i <= 5:
print(f"গণনা: {i}")
i += 1
for i in range(1, 10):
if i == 5:
print(f"ব্রেক! {i} এ থামলাম")
break
print(f"সংখ্যা: {i}")
for i in range(1, 8):
if i == 3 or i == 5:
continue
print(f"সংখ্যা: {i}")
for i in range(1, 4):
print(i)
else:
print("লুপ শেষ!")
print("---")
for i in range(1, 4):
if i == 2: break
print(i)
else:
print("এটা দেখা যাবে না")
n = 5
for i in range(1, n+1):
print("*" * i)
n = 5
for i in range(1, n+1):
spaces = " " * (n - i)
stars = "*" * (2 * i - 1)
print(spaces + stars)
n = 5
for i in range(1, n+1):
print(" " * (n-i) + "*" * (2*i-1))
for i in range(n-1, 0, -1):
print(" " * (n-i) + "*" * (2*i-1))
fruits = ["আপেল", "কলা", "কমলা", "আঙুর"]
for idx, fruit in enumerate(fruits, start=1):
print(f"{idx}. {fruit}")
names = ["রহিম", "করিম", "সাদিয়া"]
ages = [25, 30, 22]
cities = ["ঢাকা", "চট্টগ্রাম", "রাজশাহী"]
for name, age, city in zip(names, ages, cities):
print(f"{name}, {age} বছর, {city}")
for i in range(5):
if i == 2:
pass # পরে লিখব
print(f"সংখ্যা: {i}")
📌 মূল কথা
for এবং while লুপ দিয়ে বারবার কাজ করা যায়। break, continue, pass লুপ নিয়ন্ত্রণ করে। range(), enumerate(), zip() লুপের সাথে ব্যবহারের জন্য দারুণ ফাংশন।
অধ্যায় ৮ Functions (ফাংশন)
⚙️ Function কী?
Function হলো কোডের ব্লক যা নির্দিষ্ট কাজ করে। def কীওয়ার্ড দিয়ে ফাংশন তৈরি করা হয়। ফাংশন কোড পুনরায় ব্যবহারের সুবিধা দেয়।
def greet():
print("স্বাগতম!")
print("পাইথনে আপনাকে স্বাগত!")
greet()
greet()
def add(a, b):
result = a + b
return result
sum_val = add(10, 5)
print(f"যোগফল: {sum_val}")
print(f"আরেকটি: {add(100, 200)}")
def greet(name, msg="স্বাগতম"):
print(f"{msg}, {name}!")
greet("রহিম")
greet("সাদিয়া", "কেমন আছো")
def student_info(name, age, city):
print(f"নাম: {name}, বয়স: {age}, শহর: {city}")
student_info(age=22, name="করিম", city="খুলনা")
student_info("সাদিয়া", city="ঢাকা", age=25)
def sum_all(*numbers):
total = 0
for n in numbers:
total += n
return total
print(sum_all(1, 2, 3))
print(sum_all(10, 20, 30, 40, 50))
print(sum_all())
def print_info(**info):
for key, value in info.items():
print(f"{key}: {value}")
print_info(name="রহিম", age=25, city="ঢাকা")
print_info(product="ল্যাপটপ", price=65000, brand="Dell")
x = 50 # global
def func():
x = 10 # local
print(f"Local x: {x}")
func()
print(f"Global x: {x}")
count = 0
def increment():
global count
count += 1
print(f"গণনা: {count}")
increment()
increment()
increment()
square = lambda x: x * x
double = lambda x: x * 2
add = lambda a, b: a + b
print(f"Square: {square(5)}")
print(f"Double: {double(10)}")
print(f"Add: {add(3, 7)}")
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
for i in range(1, 8):
print(f"{i}! = {factorial(i)}")
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
for i in range(10):
print(f"F({i}) = {fibonacci(i)}")
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(f"মূল: {numbers}")
print(f"বর্গ: {squared}")
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even = list(filter(lambda x: x % 2 == 0, numbers))
odd = list(filter(lambda x: x % 2 != 0, numbers))
print(f"জোড়: {even}")
print(f"বিজোড়: {odd}")
from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
sum_all = reduce(lambda x, y: x + y, numbers)
print(f"গুণফল: {product}")
print(f"যোগফল: {sum_all}")
def timer(func):
import time
def wrapper():
start = time.time()
func()
end = time.time()
print(f"সময়: {end-start:.4f} সেকেন্ড")
return wrapper
@timer
def slow_func():
total = sum(range(1000000))
print(f"সমষ্টি: {total}")
slow_func()
📌 মূল কথা
ফাংশন কোড পুনর্ব্যবহারযোগ্য করে। *args ও **kwargs দিয়ে নমনীয় প্যারামিটার। Lambda ছোট ফাংশনের জন্য। Recursion জটিল সমস্যার মোহনীয় সমাধান দেয়। map, filter, reduce ফাংশনাল প্রোগ্রামিং এর ভিত্তি।
অধ্যায় ৯ List (তালিকা)
📋 List কী?
List হলো পাইথনের একটি ডেটা টাইপ যা একাধিক মান সংরক্ষণ করতে পারে। এটি mutable (পরিবর্তনযোগ্য)। List তৈরি করতে [ ] ব্যবহার করা হয়।
fruits = ["আপেল", "কলা", "কমলা"] numbers = [1, 2, 3, 4, 5] mixed = [1, "Hello", 3.14, True, None] print(fruits[0], fruits[-1]) print(numbers[1:4]) print(mixed)
nums = [3, 1, 4, 1, 5, 9]
nums.append(2)
print(f"append: {nums}")
nums.insert(2, 10)
print(f"insert: {nums}")
nums.remove(1)
print(f"remove: {nums}")
popped = nums.pop()
print(f"pop: {popped}, now: {nums}")
nums.sort()
print(f"sort: {nums}")
nums.reverse()
print(f"reverse: {nums}")
squares = [x**2 for x in range(10)]
print(f"বর্গ: {squares}")
evens = [x for x in range(20) if x % 2 == 0]
print(f"জোড়: {evens}")
fruits = ["আপেল", "কলা", "কমলা", "আঙুর"]
long = [f for f in fruits if len(f) > 4]
print(f"বড় নাম: {long}")
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(f"ম্যাট্রিক্স:")
for row in matrix:
print(row)
print(f"\n[1][1]: {matrix[1][1]}")
print(f"সারি 0: {matrix[0]}")
col = [row[0] for row in matrix]
print(f"কলাম 0: {col}")
import copy
original = [[1,2,3],[4,5,6]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
original[0][0] = 99
print(f"Original: {original}")
print(f"Shallow: {shallow}") # affected
print(f"Deep: {deep}") # unchanged
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(f"প্রথম ৫: {nums[:5]}")
print(f"শেষ ৩: {nums[-3:]}")
print(f"২-৭: {nums[2:7]}")
print(f"প্রতি ২য়: {nums[::2]}")
print(f"উল্টো: {nums[::-1]}")
nums[2:5] = [20, 30, 40]
print(f"পরিবর্তন: {nums}")
a = [1, 2, 3]
b = [4, 5, 6]
print(f"a + b: {a + b}")
print(f"a * 3: {a * 3}")
print(f"2 in a: {2 in a}")
print(f"len: {len(a)}")
print(f"min: {min(a)}, max: {max(a)}")
print(f"sum: {sum(a)}")
print(f"index of 3: {a.index(3)}")
print(f"count of 1: {a.count(1)}")
fruits = ["আপেল", "কলা", "কমলা"]
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
cities = ["ঢাকা", "চট্টগ্রাম", "খুলনা", "রাজশাহী"]
for i, city in enumerate(cities, 1):
print(f"{i}. {city}")
numbers = [12, 5, 8, 20, 3, 15, 7, 18]
greater_than_10 = [n for n in numbers if n > 10]
print(f"১০ এর বড়: {greater_than_10}")
even = [n for n in numbers if n % 2 == 0]
print(f"জোড়: {even}")
divisible_by_3_5 = [n for n in numbers if n % 3 == 0 or n % 5 == 0]
print(f"৩/৫ দিয়ে বিভাজ্য: {divisible_by_3_5}")
matrix = [
[1, 2, 3],
[4, 5, 6]
]
transpose = [[row[i] for row in matrix] for i in range(3)]
print(f"মূল:")
for r in matrix: print(r)
print(f"ট্রান্সপোজ:")
for r in transpose: print(r)
📌 মূল কথা
List পাইথনের সবচেয়ে শক্তিশালী ডেটা টাইপ। List comprehension দিয়ে সংক্ষেপে list তৈরি করা যায়। copy vs deepcopy বুঝে mutable ডেটা কপি করতে হবে।
অধ্যায় ১০ Tuple, Set, Dictionary
📦 Tuple, Set, Dictionary
Tuple (immutable list), Set (uniqued collection), Dictionary (key-value pairs) — পাইথনের গুরুত্বপূর্ণ ডেটা টাইপ।
Tuple
t1 = (1, 2, 3)
t2 = 4, 5, 6
t3 = (7,) # single element
print(f"t1: {t1}, type: {type(t1)}")
print(f"t2: {t2}")
print(f"t3: {t3}")
print(f"t1[0]: {t1[0]}, t1[1:3]: {t1[1:3]}")
# t1[0] = 10 # Error! Tuple immutable
# Packing
person = "রহিম", 25, "ঢাকা"
print(f"Packed: {person}")
# Unpacking
name, age, city = person
print(f"নাম: {name}, বয়স: {age}, শহর: {city}")
# Swap using tuple
a, b = 10, 20
a, b = b, a
print(f"Swap: a={a}, b={b}")
Set
a = {1, 2, 3, 4, 5}
b = {4, 5, 6, 7, 8}
print(f"A: {a}")
print(f"B: {b}")
print(f"Union: {a | b}")
print(f"Intersection: {a & b}")
print(f"Difference A-B: {a - b}")
print(f"Difference B-A: {b - a}")
print(f"Symmetric Diff: {a ^ b}")
a.add(9)
print(f"After add: {a}")
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
unique = set(numbers)
print(f"Original: {numbers}")
print(f"Unique: {unique}")
print(f"Count: {len(unique)}")
print(f"1 in set: {1 in unique}")
print(f"10 in set: {10 in unique}")
Dictionary
student = {
"name": "সাদিয়া",
"age": 22,
"city": "ঢাকা",
"subjects": ["Python", "Math", "English"]
}
print(f"নাম: {student['name']}")
print(f"বয়স: {student['age']}")
print(f"বিষয়: {student['subjects']}")
student["grade"] = "A+"
print(f"Updated: {student}")
d = {"a": 1, "b": 2, "c": 3}
print(f"keys: {d.keys()}")
print(f"values: {d.values()}")
print(f"items: {d.items()}")
print(f"get a: {d.get('a')}")
print(f"get z: {d.get('z', 'নেই')}")
print(f"pop b: {d.pop('b')}, now: {d}")
d.setdefault("d", 4)
print(f"setdefault: {d}")
d.update({"e": 5, "f": 6})
print(f"update: {d}")
squares = {x: x**2 for x in range(1, 6)}
print(f"বর্গ: {squares}")
even_squares = {x: x**2 for x in range(1, 11) if x % 2 == 0}
print(f"জোড় বর্গ: {even_squares}")
words = ["apple", "banana", "cherry"]
word_length = {w: len(w) for w in words}
print(f"শব্দের দৈর্ঘ্য: {word_length}")
students = {
"101": {"name": "রহিম", "age": 20, "grade": "A"},
"102": {"name": "করিম", "age": 22, "grade": "B"},
"103": {"name": "সাদিয়া", "age": 21, "grade": "A+"}
}
for sid, info in students.items():
print(f"{sid}: {info['name']}, বয়স {info['age']}, গ্রেড {info['grade']}")
print(f"\nরহিমের তথ্য: {students['101']}")
print(f"সাদিয়ার গ্রেড: {students['103']['grade']}")
marks = {
"গণিত": 85,
"বাংলা": 78,
"ইংরেজি": 92,
"বিজ্ঞান": 88
}
total = sum(marks.values())
avg = total / len(marks)
print("বিষয়ভিত্তিক নম্বর:")
for subject, mark in marks.items():
status = "⭐" if mark >= 80 else "✅"
print(f" {status} {subject}: {mark}")
print(f"\nমোট: {total}, গড়: {avg:.1f}")
squares_set = {x**2 for x in range(10)}
print(f"বর্গ set: {squares_set}")
even_set = {x for x in range(20) if x % 2 == 0}
print(f"জোড় set: {even_set}")
text = "python programming"
unique_chars = {c for c in text if c != ' '}
print(f"অনন্য ক্যারেক্টার: {sorted(unique_chars)}")
📌 মূল কথা
Tuple immutable, Set unique values, Dictionary key-value pairs. Comprehension দিয়ে এগুলো সংক্ষেপে তৈরি করা যায়। Nested dict জটিল ডেটা সংরক্ষণে দারুণ।
অধ্যায় ১১ OOP — Object Oriented Programming
🧩 OOP কী?
OOP বা Object Oriented Programming হলো প্রোগ্রামিং-এর একটি পদ্ধতি যেখানে ডেটা এবং এর সাথে সম্পর্কিত ফাংশনকে একসাথে Class-এ বাঁধা হয়। বাস্তব জগতের জিনিসকে (যেমন: বই, গাড়ি, মানুষ) কোডের মাধ্যমে মডেল করাই OOP-র মূল উদ্দেশ্য।
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"আমার নাম {self.name}, বয়স {self.age}")
s1 = Student("রহিম", 20)
s2 = Student("সাদিয়া", 22)
s1.introduce()
s2.introduce()
class Employee:
company = "Tech Corp" # class variable
def __init__(self, name, salary):
self.name = name # instance variable
self.salary = salary
e1 = Employee("রহিম", 50000)
e2 = Employee("করিম", 60000)
print(f"{e1.name}: {e1.salary}, কোম্পানি: {e1.company}")
print(f"{e2.name}: {e2.salary}, কোম্পানি: {Employee.company}")
class Calculator:
@classmethod
def description(cls):
return f"{cls.__name__} - একটি ক্যালকুলেটর ক্লাস"
@staticmethod
def add(a, b):
return a + b
@staticmethod
def multiply(a, b):
return a * b
print(Calculator.description())
print(f"যোগ: {Calculator.add(10, 20)}")
print(f"গুণ: {Calculator.multiply(5, 6)}")
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} শব্দ করছে")
class Dog(Animal):
def speak(self):
print(f"{self.name}: ঘেউ ঘেউ!")
d = Dog("ববি")
d.speak()
class Father:
def height(self):
print("লম্বা")
def nature(self):
print("ধৈর্যশীল")
class Mother:
def beauty(self):
print("সুন্দর")
def nature(self):
print("স্নেহময়ী")
class Child(Father, Mother):
pass
c = Child()
c.height()
c.beauty()
c.nature() # Father's method (first parent)
class Vehicle:
def start(self):
print("গাড়ি স্টার্ট হয়েছে")
class Car(Vehicle):
def drive(self):
print("গাড়ি চালানো হচ্ছে")
class ElectricCar(Car):
def charge(self):
print("ব্যাটারি চার্জ হচ্ছে")
tesla = ElectricCar()
tesla.start()
tesla.drive()
tesla.charge()
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def info(self):
return f"{self.name}, {self.age} বছর"
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age)
self.student_id = student_id
def info(self):
return f"{super().info()}, ID: {self.student_id}"
s = Student("রহিম", 20, "S123")
print(s.info())
class BankAccount:
def __init__(self, owner, balance):
self.owner = owner
self.__balance = balance # private
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
def get_balance(self):
return self.__balance
acc = BankAccount("রহিম", 10000)
acc.deposit(5000)
acc.withdraw(2000)
print(f"ব্যালেন্স: {acc.get_balance()}")
# print(acc.__balance) # Error!
class Bird:
def sound(self): return "কুহু কুহু"
class Cat:
def sound(self): return "মিউ মিউ"
class Dog:
def sound(self): return "ঘেউ ঘেউ"
def make_sound(animal):
print(animal.sound())
make_sound(Bird())
make_sound(Cat())
make_sound(Dog())
class Book:
def __init__(self, title, author, pages):
self.title = title
self.author = author
self.pages = pages
def __str__(self):
return f"'{self.title}' - {self.author}"
def __repr__(self):
return f"Book('{self.title}', '{self.author}', {self.pages})"
def __len__(self):
return self.pages
b = Book("পাইথন শিখি", "রহিম", 250)
print(str(b))
print(repr(b))
print(f"পৃষ্ঠা সংখ্যা: {len(b)}")
class Temperature:
def __init__(self, celsius):
self._celsius = celsius
@property
def celsius(self):
return self._celsius
@celsius.setter
def celsius(self, value):
if value < -273.15:
raise ValueError("-273.15 এর নিচে সম্ভব নয়")
self._celsius = value
@property
def fahrenheit(self):
return (self._celsius * 9/5) + 32
t = Temperature(25)
print(f"সেলসিয়াস: {t.celsius}°C")
print(f"ফারেনহাইট: {t.fahrenheit}°F")
t.celsius = 30
print(f"পরিবর্তনের পর: {t.celsius}°C, {t.fahrenheit}°F")
📌 মূল কথা
OOP বাস্তব জগতের সমস্যা সমাধানে দারুণ। Class, Inheritance, Encapsulation, Polymorphism — এগুলো OOP-র চার মূল স্তম্ভ। super(), @property, magic methods পাইথনের বিশেষ বৈশিষ্ট্য।
অধ্যায় ১২ Exception Handling
⚠️ Exception কী?
Exception হলো প্রোগ্রাম চলাকালীন সময়ে ঘটে যাওয়া ত্রুটি। পাইথনে try-except ব্যবহার করে এই ত্রুটিগুলো হ্যান্ডেল করা যায়।
try:
num = int(input("একটি সংখ্যা দিন: "))
result = 10 / num
print(f"ফলাফল: {result}")
except ValueError:
print("ভুল ইনপুট! সংখ্যা দিন")
except ZeroDivisionError:
print("০ দিয়ে ভাগ করা যাবে না")
try:
x = int(input("সংখ্যা: "))
except ValueError:
print("ভুল ইনপুট!")
else:
print(f"বর্গ: {x**2}")
finally:
print("এটা সবসময় চলবে")
def divide_numbers(a, b):
try:
result = a / b
except TypeError:
return "টাইপ ভুল!"
except ZeroDivisionError:
return "০ দিয়ে ভাগ নয়!"
except Exception as e:
return f"অজানা ত্রুটি: {e}"
else:
return f"ফলাফল: {result}"
print(divide_numbers(10, 2))
print(divide_numbers(10, 0))
print(divide_numbers(10, "a"))
def validate_age(age):
if age < 0:
raise ValueError("বয়স ঋণাত্মক হতে পারে না!")
if age > 150:
raise ValueError("এত বেশি বয়স সম্ভব নয়!")
print(f"বয়স {age} বৈধ")
try:
validate_age(-5)
except ValueError as e:
print(f"ত্রুটি: {e}")
try:
validate_age(25)
except ValueError as e:
print(f"ত্রুটি: {e}")
class InsufficientBalanceError(Exception):
pass
class BankAccount:
def __init__(self, balance):
self.balance = balance
def withdraw(self, amount):
if amount > self.balance:
raise InsufficientBalanceError(
f"অপর্যাপ্ত ব্যালেন্স! প্রয়োজন: {amount}, আছে: {self.balance}")
self.balance -= amount
print(f"{amount} উত্তোলন করা হয়েছে")
try:
acc = BankAccount(5000)
acc.withdraw(7000)
except InsufficientBalanceError as e:
print(f"ত্রুটি: {e}")
# IndexError
try:
lst = [1, 2, 3]
print(lst[5])
except IndexError:
print("IndexError: তালিকার বাইরে!")
# KeyError
try:
d = {"a": 1}
print(d["z"])
except KeyError:
print("KeyError: চাবি নেই!")
# TypeError
try:
print("Hello" + 5)
except TypeError:
print("TypeError: টাইপ মিলছে না!")
📌 মূল কথা
Exception handling প্রোগ্রামকে ক্র্যাশ হওয়া থেকে বাঁচায়। try-except-else-finally চারটি ব্লক মিলে ত্রুটি হ্যান্ডেল করে। নিজস্ব Exception ক্লাস তৈরি করে নির্দিষ্ট ত্রুটির জন্য কাস্টম বার্তা দেওয়া যায়।
অধ্যায় ১৩ Modules & Packages
📦 Module কী?
Module হলো Python ফাইল যাতে ফাংশন, ক্লাস, ভেরিয়েবল থাকে। import দিয়ে অন্য ফাইল থেকে কোড ব্যবহার করা যায়। Package হলো module-এর সংগ্রহ।
import math
print(f"pi: {math.pi}")
print(f"sqrt(25): {math.sqrt(25)}")
print(f"ceil(4.3): {math.ceil(4.3)}")
print(f"floor(4.7): {math.floor(4.7)}")
print(f"sin(90°): {math.sin(math.radians(90)):.2f}")
from math import pi, sqrt, pow
from random import randint, choice, shuffle
print(f"pi: {pi}")
print(f"sqrt(144): {sqrt(144)}")
print(f"pow(2, 10): {pow(2, 10)}")
print(f"1-10 র্যান্ডম: {randint(1, 10)}")
fruits = ["আপেল", "কলা", "কমলা"]
print(f"র্যান্ডম ফল: {choice(fruits)}")
shuffle(fruits)
print(f"শাফল: {fruits}")
from datetime import datetime, date, timedelta
now = datetime.now()
print(f"এখন: {now}")
print(f"তারিখ: {now.strftime('%d %B, %Y')}")
print(f"সময়: {now.strftime('%I:%M %p')}")
today = date.today()
future = today + timedelta(days=7)
print(f"আজ: {today}")
print(f"৭ দিন পর: {future}")
print(f"পার্থক্য: {(future - today).days} দিন")
import os
print(f"বর্তমান ডিরেক্টরি: {os.getcwd()}")
files = os.listdir('.')
print(f"ফাইল সমূহ: {files[:5]}...")
print(f"OS: {os.name}")
# os.mkdir("test_dir") # ডিরেক্টরি তৈরি
import sys
print(f"Python সংস্করণ: {sys.version}")
print(f"প্ল্যাটফর্ম: {sys.platform}")
print(f"PATH:")
for p in sys.path:
print(f" {p}")
import time
print("গণনা শুরু...")
for i in range(1, 4):
print(i)
time.sleep(0.5)
print("শেষ!")
start = time.time()
total = sum(range(1000000))
end = time.time()
print(f"সমষ্টি: {total}")
print(f"সময়: {(end-start)*1000:.2f} ms")
# my_math.py (module)
def add(a, b): return a + b
def subtract(a, b): return a - b
def multiply(a, b): return a * b
def divide(a, b):
if b == 0: return "ভুল!"
return a / b
# using the module
print(f"5 + 3 = {add(5, 3)}")
print(f"10 - 4 = {subtract(10, 4)}")
print(f"6 * 7 = {multiply(6, 7)}")
print(f"20 / 4 = {divide(20, 4)}")
import math as m
from datetime import datetime as dt
print(f"pi = {m.pi}")
print(f"এখন: {dt.now()}")
import random as r
print(f"1-100: {r.randint(1, 100)}")
📌 মূল কথা
Standard library তে অনেক দরকারি module আছে — math, random, datetime, os, sys, time। import, from...import, as — দিয়ে module ব্যবহার করা হয়। pip দিয়ে থার্ড-পার্টি package ইনস্টল করা যায়।
অধ্যায় ১৪ File Handling
📁 File Handling
Python দিয়ে ফাইল থেকে ডেটা পড়া, ফাইলে ডেটা লেখা, CSV ও JSON ফাইল নিয়ে কাজ করা যায়।
with open("note.txt", "w", encoding="utf-8") as f:
f.write("পাইথন শেখা শুরু!\n")
f.write("এটা দ্বিতীয় লাইন\n")
print("ফাইল তৈরি হয়েছে!")
# পড়ে দেখি
with open("note.txt", "r", encoding="utf-8") as f:
print(f.read())
with open("note.txt", "a", encoding="utf-8") as f:
f.write("আরেকটি লাইন যোগ করলাম\n")
f.write("শেষ লাইন!\n")
with open("note.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for i, line in enumerate(lines, 1):
print(f"{i}: {line.strip()}")
# proper way - with automatically closes file
with open("note.txt", "r", encoding="utf-8") as f:
content = f.read()
print(f"বাইট সাইজ: {len(content)}")
print(f"লাইন সংখ্যা: {content.count(chr(10)) + 1}")
import csv
data = [
["নাম", "বয়স", "শহর"],
["রহিম", 25, "ঢাকা"],
["করিম", 30, "চট্টগ্রাম"],
["সাদিয়া", 22, "রাজশাহী"]
]
with open("students.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(data)
print("CSV তৈরি!")
with open("students.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(" | ".join(row))
import json
student = {
"name": "সাদিয়া",
"age": 22,
"subjects": ["Python", "Math"],
"address": {"city": "ঢাকা", "zip": 1200}
}
with open("student.json", "w", encoding="utf-8") as f:
json.dump(student, f, indent=2, ensure_ascii=False)
print("JSON তৈরি!")
with open("student.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(f"নাম: {data['name']}")
print(f"বয়স: {data['age']}")
print(f"শহর: {data['address']['city']}")
modes = [
("r", "পড়ার জন্য (ডিফল্ট)"),
("w", "লেখার জন্য (পুরনো মুছে দেয়)"),
("a", "যোগ করার জন্য"),
("r+", "পড়া ও লেখা"),
("w+", "পড়া ও লেখা (মুছে দিয়ে)"),
("a+", "পড়া ও যোগ করা"),
("rb", "বাইনারি পড়া"),
("wb", "বাইনারি লেখা")
]
for mode, desc in modes:
print(f" {mode:3s} - {desc}")
with open("note.txt", "r", encoding="utf-8") as src:
content = src.read()
with open("note_copy.txt", "w", encoding="utf-8") as dst:
dst.write(content)
print("কপি সম্পন্ন!")
with open("note_copy.txt", "r", encoding="utf-8") as f:
print(f.read())
📌 মূল কথা
with স্টেটমেন্ট ফাইল অটোমেটিক বন্ধ করে। CSV ও JSON ফাইল নিয়ে কাজ করতে csv ও json module ব্যবহার করা হয়। ফাইল মোড বুঝে সঠিক মোড নির্বাচন করতে হবে।
অধ্যায় ১৫ Advanced Topics
🚀 Advanced Python
এই অধ্যায়ে আমরা উন্নত Python কনসেপ্ট নিয়ে আলোচনা করব — comprehensions, generators, iterators, context managers, regular expressions, এবং ফাংশনাল প্রোগ্রামিং।
# Nested comprehension
matrix = [[i*j for j in range(1, 4)] for i in range(1, 4)]
print(f"Matrix: {matrix}")
# Dict comprehension with condition
scores = {"রহিম": 85, "করিম": 72, "সাদিয়া": 95, "ফারজানা": 60}
passed = {k: v for k, v in scores.items() if v >= 80}
print(f"পাস: {passed}")
# Set comprehension
nums = [1, 2, 2, 3, 3, 3]
unique_squares = {x**2 for x in nums}
print(f"Unique squares: {unique_squares}")
def countdown(n):
while n > 0:
yield n
n -= 1
def fibonacci_gen(limit):
a, b = 0, 1
while a < limit:
yield a
a, b = b, a + b
print("Countdown:")
for c in countdown(5):
print(c, end=" ")
print("\n\nFibonacci:")
for f in fibonacci_gen(100):
print(f, end=" ") # 0 1 1 2 3 5 8 13 21 34 55 89
# Generator expression (uses less memory)
squares_gen = (x**2 for x in range(10))
print(f"Generator: {squares_gen}")
print(f"Values: {list(squares_gen)}")
# More efficient than list for large data
sum_squares = sum(x**2 for x in range(1000))
print(f"Sum of squares: {sum_squares}")
class WeekDays:
def __init__(self):
self.days = ["সোম", "মঙ্গল", "বুধ", "বৃহস্পতি", "শুক্র", "শনি", "রবি"]
def __iter__(self):
self.n = 0
return self
def __next__(self):
if self.n >= len(self.days):
raise StopIteration
result = self.days[self.n]
self.n += 1
return result
for day in WeekDays():
print(day)
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode, encoding="utf-8")
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
# ব্যবহার
with FileManager("note.txt", "r") as f:
print(f.read())
import re
text = "আমার ইমেইল: rahim@gmail.com এবং karim@yahoo.com"
emails = re.findall(r'\b[\w.]+@\w+\.\w+\b', text)
print(f"ইমেইল: {emails}")
phone = "ফোন: +8801712345678, +880-2-9876543"
phones = re.findall(r'\+?\d[\d\-\s]{8,}\d', phone)
print(f"ফোন: {phones}")
# Search & replace
clean = re.sub(r'\d', '#', "Password123")
print(f"Cleaned: {clean}")
import re
def validate_email(email):
pattern = r'^[\w\.-]+@[\w\.-]+\.\w{2,}$'
return bool(re.match(pattern, email))
def validate_bd_phone(phone):
pattern = r'^(\+8801|01)[3-9]\d{8}$'
return bool(re.match(pattern, phone))
tests = ["rahim@gmail.com", "invalid@", "test@.com"]
for t in tests:
print(f"{t}: {'✅' if validate_email(t) else '❌'}")
phones = ["+8801712345678", "01234567890", "01912345678"]
for p in phones:
print(f"{p}: {'✅' if validate_bd_phone(p) else '❌'}")
def flexible_func(*args, **kwargs):
print("Positional args:", args)
print("Keyword args:", kwargs)
if args:
print(f"প্রথম positional: {args[0]}")
if "name" in kwargs:
print(f"name = {kwargs['name']}")
flexible_func(1, 2, 3, name="রহিম", age=25)
print("---")
flexible_func("hello", x=10)
# Unpacking
def add(a, b, c):
return a + b + c
nums = [1, 2, 3]
print(f"Unpack list: {add(*nums)}")
data = {"a": 10, "b": 20, "c": 30}
print(f"Unpack dict: {add(**data)}")
from functools import reduce
# Map - transform each element
nums = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x*2, nums))
print(f"Doubled: {doubled}")
# Filter - keep elements that match
even = list(filter(lambda x: x % 2 == 0, nums))
print(f"Even: {even}")
# Reduce - accumulate values
sum_all = reduce(lambda a, b: a + b, nums)
product = reduce(lambda a, b: a * b, nums)
print(f"Sum: {sum_all}, Product: {product}")
# any/all
print(f"Any > 3: {any(x > 3 for x in nums)}")
print(f"All > 0: {all(x > 0 for x in nums)}")
names = ["রহিম", "করিম", "সাদিয়া", "ফারজানা"]
ages = [25, 30, 22]
cities = ["ঢাকা", "চট্টগ্রাম"]
# zip stops at shortest
for n, a, c in zip(names, ages, cities):
print(f"{n}, {a} বছর, {c}")
print("---")
# enumerate with start
for i, name in enumerate(names, 1):
print(f"{i}. {name}")
print("---")
# Advanced: zip to dict
keys = ["name", "age", "city"]
values = ["রহিম", 25, "ঢাকা"]
person = dict(zip(keys, values))
print(person)
📌 মূল কথা
Generator মেমোরি সাশ্রয় করে বড় ডেটার জন্য। Context Manager রিসোর্স ম্যানেজ করে। Regex প্যাটার্ন ম্যাচিং-এর জন্য শক্তিশালী টুল। Functional programming এর tools কোডকে সংক্ষিপ্ত ও প্রকাশময় করে।
অধ্যায় ১৬ Mini Projects
🎯 Mini Projects
এই অধ্যায়ে আমরা হাতেকলমে ৫টি মিনি প্রকল্প তৈরি করব। প্রতিটি প্রকল্প বাস্তব জীবনের সমস্যা সমাধানের জন্য তৈরি।
📱 প্রকল্প ১: ক্যালকুলেটর
একটি সম্পূর্ণ ক্যালকুলেটর যা যোগ, বিয়োগ, গুণ, ভাগ, ঘাত, বর্গমূল ইত্যাদি করে।
import math
def calculator():
print("=== পাইথন ক্যালকুলেটর ===")
print("1. যোগ 2. বিয়োগ 3. গুণ 4. ভাগ")
print("5. ঘাত 6. বর্গমূল 7. % 8. প্রস্থান")
while True:
choice = input("\nঅপশন নির্বাচন করুন (1-8): ")
if choice == "8":
print("ধন্যবাদ!")
break
if choice == "6":
n = float(input("সংখ্যা: "))
print(f"√{n} = {math.sqrt(n):.2f}")
continue
a = float(input("প্রথম সংখ্যা: "))
b = float(input("দ্বিতীয় সংখ্যা: "))
ops = {"1": a+b, "2": a-b, "3": a*b, "4": a/b if b else "ভুল!", "5": a**b, "7": a%b}
result = ops.get(choice, "ভুল অপশন!")
print(f"ফলাফল: {result}")
calculator()
🎓 প্রকল্প ২: Student Grade Management
class StudentGrade:
def __init__(self):
self.students = {}
def add_student(self, name, marks):
total = sum(marks.values())
avg = total / len(marks)
grade = "A+" if avg>=80 else "A" if avg>=70 else "B" if avg>=60 else "C" if avg>=40 else "F"
self.students[name] = {"marks": marks, "total": total, "avg": avg, "grade": grade}
def show_all(self):
for name, info in self.students.items():
print(f"{name}: Total={info['total']}, Avg={info['avg']:.1f}, Grade={info['grade']}")
sg = StudentGrade()
sg.add_student("রহিম", {"গণিত":85, "বাংলা":78, "ইংরেজি":92})
sg.add_student("সাদিয়া", {"গণিত":90, "বাংলা":88, "ইংরেজি":95})
sg.add_student("করিম", {"গণিত":55, "বাংলা":60, "ইংরেজি":58})
sg.show_all()
📝 প্রকল্প ৩: To-Do List (File Persistence)
import json
import os
class TodoList:
def __init__(self, filename="todo.json"):
self.filename = filename
self.tasks = self.load()
def load(self):
if os.path.exists(self.filename):
with open(self.filename, "r", encoding="utf-8") as f:
return json.load(f)
return []
def save(self):
with open(self.filename, "w", encoding="utf-8") as f:
json.dump(self.tasks, f, indent=2, ensure_ascii=False)
def add(self, task):
self.tasks.append({"task": task, "done": False})
self.save()
def complete(self, idx):
if 0 <= idx < len(self.tasks):
self.tasks[idx]["done"] = True
self.save()
def show(self):
for i, t in enumerate(self.tasks):
status = "✅" if t["done"] else "⬜"
print(f"{i+1}. {status} {t['task']}")
def delete(self, idx):
if 0 <= idx < len(self.tasks):
del self.tasks[idx]
self.save()
todo = TodoList()
todo.add("পাইথন শেখা")
todo.add("প্রজেক্ট তৈরি")
todo.add("বই পড়া")
todo.complete(0)
todo.show()
🎲 প্রকল্প ৪: Number Guessing Game
import random
def guess_game():
print("=== সংখ্যা অনুমান খেলা ===")
print("১-১০০ এর মধ্যে একটি সংখ্যা অনুমান করুন!")
secret = random.randint(1, 100)
attempts = 0
while True:
try:
guess = int(input("আপনার অনুমান: "))
attempts += 1
if guess < secret:
print("ছোট! আরও বড় দিন ↑")
elif guess > secret:
print("বড়! আরও ছোট দিন ↓")
else:
print(f"🎉 অভিনন্দন! {attempts} চেষ্টায় সঠিক উত্তর!")
print(f"গোপন সংখ্যা ছিল: {secret}")
break
except ValueError:
print("দয়া করে একটি সংখ্যা দিন!")
guess_game()
📇 প্রকল্প ৫: Contact Book
class ContactBook:
def __init__(self):
self.contacts = {}
def add(self, name, phone, email=""):
self.contacts[name] = {"phone": phone, "email": email}
def remove(self, name):
self.contacts.pop(name, None)
def search(self, keyword):
return {k:v for k,v in self.contacts.items() if keyword.lower() in k.lower()}
def show_all(self):
if not self.contacts:
print("কোনো কন্টাক্ট নেই!")
return
for name, info in sorted(self.contacts.items()):
print(f"{name}: 📞 {info['phone']}", end="")
if info['email']: print(f", 📧 {info['email']}", end="")
print()
cb = ContactBook()
cb.add("রহিম", "01712345678", "rahim@email.com")
cb.add("সাদিয়া", "01987654321", "sadia@email.com")
cb.add("করিম", "01611223344")
print("সব কন্টাক্ট:")
cb.show_all()
print("\nসার্চ 'রহিম':")
results = cb.search("রহিম")
for name, info in results.items():
print(f" {name}: {info['phone']}")
📌 শেষ কথা
অভিনন্দন! 🎉 আপনি পুরো পাইথন কোর্সটি সম্পূর্ণ করেছেন! এই ১৬টি অধ্যায়ের মাধ্যমে আপনি পাইথনের বেসিক থেকে অ্যাডভান্সড কনসেপ্ট পর্যন্ত সবকিছু শিখেছেন। এখন আপনার নিজের প্রজেক্ট তৈরি করার সময়। মনে রাখবেন, প্রোগ্রামিং শেখার সবচেয়ে ভালো উপায় হলো বেশি বেশি প্র্যাকটিস করা। শুভকামনা! 🚀
অধ্যায় ১৭ NCTB পাঠ্যসূচি — ৯ম ও ১০ম শ্রেণি
📖 NCTB ICT পাঠ্যপুস্তক — পাইথন প্রোগ্রামিং
জাতীয় শিক্ষাক্রম ও পাঠ্যপুস্তক বোর্ড (NCTB)-এর ৯ম ও ১০ম শ্রেণির ICT পাঠ্যপুস্তকে পাইথন প্রোগ্রামিং অন্তর্ভুক্ত রয়েছে। এই অধ্যায়ে আমরা সেই পাঠ্যসূচি অনুসারে প্রচুর উদাহরণ সহ প্র্যাকটিস করব।
📌 ভেরিয়েবল ও ডেটা টাইপ — গুরুত্বপূর্ণ উদাহরণ
NCTB পাঠ্যসূচি অনুযায়ী ভেরিয়েবল ও ডেটা টাইপের বিভিন্ন উদাহরণ:
# NCTB Class 9-10: Variable Examples
roll = 101
name = "রহিম"
marks = 85.5
grade = 'A'
passed = True
print("রোল:", roll)
print("নাম:", name)
print("নম্বর:", marks)
print("গ্রেড:", grade)
print("পাস:", passed)
a = 10
b = 20
c = a + b
print("a =", a)
print("b =", b)
print("a + b =", c)
c = a * b
print("a * b =", c)
num_str = "100"
num_int = int(num_str)
num_float = float(num_str)
print("string:", num_str)
print("integer:", num_int)
print("float:", num_float)
print("যোগ:", num_int + 50)
print("ভাগ:", num_float / 3)
name = input("তোমার নাম কী? ")
age = int(input("তোমার বয়স কত? "))
cls = input("কোন শ্রেণিতে পড়? ")
print(f"তোমার নাম {name}")
print(f"তোমার বয়স {age} বছর")
print(f"তুমি {cls} শ্রেণিতে পড়")
print(f"আগামী বছর তোমার বয়স {age+1} হবে")
a = int(input("প্রথম সংখ্যা: "))
b = int(input("দ্বিতীয় সংখ্যা: "))
sum = a + b
diff = a - b
product = a * b
quotient = a / b
print("যোগফল =", sum)
print("বিয়োগফল =", diff)
print("গুণফল =", product)
print("ভাগফল =", quotient)
P = float(input("আসল: "))
r = float(input("সুদের হার: "))
n = float(input("সময় (বছর): "))
I = (P * r * n) / 100
A = P + I
print("সরল সুদ =", I)
print("সুদাসল =", A)
length = float(input("দৈর্ঘ্য: "))
width = float(input("প্রস্থ: "))
area = length * width
perimeter = 2 * (length + width)
print("ক্ষেত্রফল =", area)
print("পরিসীমা =", perimeter)
x = 5
y = 10
print("আগে: x =", x, ", y =", y)
temp = x
x = y
y = temp
print("পরে: x =", x, ", y =", y)
⚖️ Conditional Statements (if-elif-else) — NCTB উদাহরণ
NCTB পাঠ্যসূচি অনুযায়ী শর্তাধীন বিবরণীর বিভিন্ন প্রয়োগ:
num = int(input("একটি সংখ্যা দিন: "))
if num % 2 == 0:
print(num, "একটি জোড় সংখ্যা")
else:
print(num, "একটি বিজোড় সংখ্যা")
num = float(input("একটি সংখ্যা দিন: "))
if num > 0:
print(num, "ধনাত্মক")
elif num < 0:
print(num, "ঋণাত্মক")
else:
print("শূন্য")
a = int(input("প্রথম সংখ্যা: "))
b = int(input("দ্বিতীয় সংখ্যা: "))
if a > b:
print(a, "বড়")
elif b > a:
print(b, "বড়")
else:
print("সমান")
a = int(input("প্রথম সংখ্যা: "))
b = int(input("দ্বিতীয় সংখ্যা: "))
c = int(input("তৃতীয় সংখ্যা: "))
if a >= b and a >= c:
print(a, "সবচেয়ে বড়")
elif b >= a and b >= c:
print(b, "সবচেয়ে বড়")
else:
print(c, "সবচেয়ে বড়")
marks = float(input("প্রাপ্ত নম্বর: "))
if marks >= 80:
print("গ্রেড: A+ (গোল্ডেন)")
elif marks >= 70:
print("গ্রেড: A")
elif marks >= 60:
print("গ্রেড: A-")
elif marks >= 50:
print("গ্রেড: B")
elif marks >= 40:
print("গ্রেড: C")
elif marks >= 33:
print("গ্রেড: D")
else:
print("গ্রেড: F (ফেল)")
year = int(input("সাল দিন: "))
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
print(year, "একটি লিপ ইয়ার")
else:
print(year, "লিপ ইয়ার নয়")
age = int(input("বয়স: "))
if age >= 18:
print("ভোট দিতে পারবেন")
if age >= 60:
print("আপনি বয়স্ক ভোটার")
else:
remaining = 18 - age
print(f"ভোট দিতে {remaining} বছর অপেক্ষা")
a = float(input("প্রথম সংখ্যা: "))
b = float(input("দ্বিতীয় সংখ্যা: "))
op = input("অপারেটর (+, -, *, /): ")
if op == '+':
print("ফল:", a + b)
elif op == '-':
print("ফল:", a - b)
elif op == '*':
print("ফল:", a * b)
elif op == '/':
if b != 0:
print("ফল:", a / b)
else:
print("ভুল! ০ দিয়ে ভাগ করা যাবে না")
else:
print("ভুল অপারেটর")
a = float(input("প্রথম বাহু: "))
b = float(input("দ্বিতীয় বাহু: "))
c = float(input("তৃতীয় বাহু: "))
if a == b == c:
print("সমবাহু ত্রিভুজ")
elif a == b or b == c or a == c:
print("সমদ্বিবাহু ত্রিভুজ")
elif a*a + b*b == c*c or b*b + c*c == a*a or a*a + c*c == b*b:
print("সমকোণী ত্রিভুজ")
else:
print("বিষমবাহু ত্রিভুজ")
bangla = float(input("বাংলা: "))
english = float(input("ইংরেজি: "))
math = float(input("গণিত: "))
science = float(input("বিজ্ঞান: "))
total = bangla + english + math + science
avg = total / 4
print("মোট নম্বর:", total)
print("গড়:", avg)
if avg >= 80: print("রেজাল্ট: A+")
elif avg >= 70: print("রেজাল্ট: A")
elif avg >= 60: print("রেজাল্ট: A-")
elif avg >= 50: print("রেজাল্ট: B")
elif avg >= 40: print("রেজাল্ট: C")
elif avg >= 33: print("রেজাল্ট: D")
else: print("রেজাল্ট: F (ফেল)")
age = int(input("বয়স: "))
if age <= 5:
print("শিশু")
elif age <= 12:
print("বালক/বালিকা")
elif age <= 17:
print("কিশোর/কিশোরী")
elif age <= 30:
print("যুবক/যুবতী")
elif age <= 60:
print("প্রাপ্তবয়স্ক")
else:
print("বৃদ্ধ")
x = int(input("x = "))
y = int(input("y = "))
z = int(input("z = "))
if x < y and x < z:
print(f"{x} সবচেয়ে ছোট")
elif y < x and y < z:
print(f"{y} সবচেয়ে ছোট")
else:
print(f"{z} সবচেয়ে ছোট")
🔄 Loop (for, while) — NCTB উদাহরণ
NCTB পাঠ্যসূচি অনুযায়ী লুপের বিভিন্ন প্রয়োগ:
print("১ থেকে ১০ পর্যন্ত সংখ্যা:")
for i in range(1, 11):
print(i, end=" ")
print()
print("\nলুপ শেষ!")
i = 1
while i <= 10:
print(i, end=" ")
i = i + 1
print("\nলুপ শেষ")
print("১-২০ পর্যন্ত জোড় সংখ্যা:")
for i in range(2, 21, 2):
print(i, end=" ")
print("\n\nবিজোড় সংখ্যা:")
for i in range(1, 21, 2):
print(i, end=" ")
n = int(input("যে সংখ্যার নামতা চান: "))
print(f"{n} এর নামতা:")
for i in range(1, 11):
print(f"{n} x {i} = {n*i}")
n = int(input("N-এর মান: "))
sum = 0
for i in range(1, n+1):
sum = sum + i
print(f"১ থেকে {n} পর্যন্ত যোগফল = {sum}")
n = int(input("কয়টি সংখ্যা? "))
sum = 0
for i in range(n):
num = float(input(f"সংখ্যা {i+1}: "))
sum = sum + num
avg = sum / n
print("মোট:", sum)
print("গড়:", avg)
n = int(input("একটি সংখ্যা দিন: "))
fact = 1
for i in range(1, n+1):
fact = fact * i
print(f"{n}! = {fact}")
n = 5
print("পিরামিড:")
for i in range(1, n+1):
print(" " * (n-i) + "*" * (2*i-1))
print("\nউল্টো পিরামিড:")
for i in range(n, 0, -1):
print(" " * (n-i) + "*" * (2*i-1))
n = int(input("একটি সংখ্যা: "))
rev = 0
temp = n
while temp > 0:
digit = temp % 10
rev = rev * 10 + digit
temp = temp // 10
print(f"উল্টানো সংখ্যা: {rev}")
n = int(input("একটি সংখ্যা: "))
temp = n
rev = 0
while temp > 0:
rev = rev * 10 + (temp % 10)
temp = temp // 10
if n == rev:
print(f"{n} একটি প্যালিনড্রোম সংখ্যা")
else:
print(f"{n} প্যালিনড্রোম নয়")
n = int(input("একটি সংখ্যা: "))
temp = n
sum = 0
order = len(str(n))
while temp > 0:
digit = temp % 10
sum = sum + (digit ** order)
temp = temp // 10
if n == sum:
print(f"{n} একটি আর্মস্ট্রং সংখ্যা")
else:
print(f"{n} আর্মস্ট্রং নয়")
n = int(input("একটি সংখ্যা: "))
if n <= 1:
print(f"{n} মৌলিক নয়")
else:
is_prime = True
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
is_prime = False
break
if is_prime:
print(f"{n} একটি মৌলিক সংখ্যা")
else:
print(f"{n} মৌলিক নয়")
a = int(input("প্রথম সংখ্যা: "))
b = int(input("দ্বিতীয় সংখ্যা: "))
x, y = a, b
while y != 0:
temp = y
y = x % y
x = temp
print(f"{a} এবং {b} এর গসাগু = {x}")
lcm = (a * b) // x
print(f"{a} এবং {b} এর লসাগু = {lcm}")
n = int(input("কতটি পদ? "))
a, b = 0, 1
print("ফিবোনাচ্চি সিরিজ:")
for i in range(n):
print(a, end=" ")
a, b = b, a + b
n = int(input("N = "))
sum_1 = n * (n + 1) // 2
print(f"1+2+...+{n} = {sum_1}")
sum_sq = n * (n + 1) * (2*n + 1) // 6
print(f"1²+2²+...+{n}² = {sum_sq}")
sum_cu = (n * (n + 1) // 2) ** 2
print(f"1³+2³+...+{n}³ = {sum_cu}")
⏸️ Break ও Continue — NCTB উদাহরণ
NCTB পাঠ্যসূচি অনুযায়ী break ও continue-এর ব্যবহার:
print("৫ এ গিয়ে থামবে:")
for i in range(1, 11):
if i == 5:
print(f"\nব্রেক! {i} এ থামলাম")
break
print(i, end=" ")
print("লুপ শেষ")
print("৩ ও ৭ বাদ দিয়ে:")
for i in range(1, 11):
if i == 3 or i == 7:
continue
print(i, end=" ")
print("\n\nশুধু জোড় সংখ্যা:")
for i in range(1, 11):
if i % 2 != 0:
continue
print(i, end=" ")
num = 1
while True:
print(num, end=" ")
if num >= 8:
print(f"\n{num} এ ব্রেক!")
break
num += 1
print("লুপ শেষ")
num = 0
print("৫ এর গুণিতক বাদে:")
while num < 20:
num += 1
if num % 5 == 0:
continue
print(num, end=" ")
print("১-৫০ এর মধ্যে মৌলিক সংখ্যা:")
for num in range(2, 51):
is_prime = True
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num, end=" ")
fruits = ["আপেল", "কলা", "কমলা", "আঙুর", "পেয়ারা"]
search = "কমলা"
for fruit in fruits:
if fruit == search:
print(f"পাওয়া গেছে: {fruit}")
break
print(f"খুঁজছি... {fruit} নয়")
else:
print("পাওয়া যায়নি")
for i in range(1, 6):
for j in range(1, 6):
if i * j > 15:
break
print(f"{i}x{j}={i*j}", end=" ")
print()
📝 NCTB — অনুশীলনী (Practice Problems)
NCTB পাঠ্যপুস্তক থেকে অনুশীলনীর কিছু গুরুত্বপূর্ণ সমস্যা ও সমাধান:
n = int(input("একটি সংখ্যা: "))
print(f"{n} এর বর্গ = {n*n}")
print(f"{n} এর বর্গমূল = {n**0.5:.2f}")
print(f"{n} এর ঘন = {n**3}")
print(f"{n} এর ঘনমূল = {n**(1/3):.2f}")
choice = input("কনভার্ট করুন (C to F বা F to C): ")
if choice.upper() == "C TO F":
c = float(input("সেলসিয়াস: "))
f = (c * 9/5) + 32
print(f"{c}°C = {f}°F")
elif choice.upper() == "F TO C":
f = float(input("ফারেনহাইট: "))
c = (f - 32) * 5/9
print(f"{f}°F = {c:.2f}°C")
else:
print("ভুল choice")
subjects = 5
total_marks = 500
print("৫টি বিষয়ের নম্বর দিন:")
sum_marks = 0
for i in range(subjects):
m = float(input(f"বিষয় {i+1}: "))
sum_marks += m
avg = sum_marks / subjects
percentage = (sum_marks / total_marks) * 100
print(f"মোট: {sum_marks} / {total_marks}")
print(f"গড়: {avg:.2f}")
print(f"শতকরা: {percentage:.2f}%")
if percentage >= 80: print("গ্রেড: A+")
elif percentage >= 70: print("গ্রেড: A")
elif percentage >= 60: print("গ্রেড: A-")
elif percentage >= 50: print("গ্রেড: B")
elif percentage >= 40: print("গ্রেড: C")
elif percentage >= 33: print("গ্রেড: D")
else: print("ফেল")
n = int(input("কতটি সংখ্যা? "))
positive = negative = zero = 0
for i in range(n):
num = float(input(f"সংখ্যা {i+1}: "))
if num > 0:
positive += 1
elif num < 0:
negative += 1
else:
zero += 1
print(f"ধনাত্মক: {positive}")
print(f"ঋণাত্মক: {negative}")
print(f"শূন্য: {zero}")
n = int(input("N = "))
i = 1
sum_n = 0
while i <= n:
sum_n += i
i += 1
print(f"১+২+৩+...+{n} = {sum_n}")
i = 1
sum_odd = 0
while i <= n:
sum_odd += i
i += 2
print(f"১+৩+৫+... = {sum_odd}")
i = 2
sum_even = 0
while i <= n:
sum_even += i
i += 2
print(f"২+৪+৬+... = {sum_even}")
numbers = []
n = int(input("কতটি সংখ্যা? "))
for i in range(n):
num = int(input(f"সংখ্যা {i+1}: "))
numbers.append(num)
print("লিস্ট:", numbers)
print("সর্বোচ্চ:", max(numbers))
print("সর্বনিম্ন:", min(numbers))
print("মোট:", sum(numbers))
print("গড়:", sum(numbers)/len(numbers))
numbers.sort()
print("সাজানো:", numbers)
numbers.reverse()
print("উল্টো:", numbers)
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print("ম্যাট্রিক্স:")
for row in matrix:
for val in row:
print(val, end=" ")
print()
print("\nকর্ণের যোগফল:")
sum_diag = 0
for i in range(3):
sum_diag += matrix[i][i]
print(f"প্রধান কর্ণ = {sum_diag}")
text = input("একটি শব্দ দিন: ")
if text == text[::-1]:
print(f"{text} একটি প্যালিনড্রোম")
else:
print(f"{text} প্যালিনড্রোম নয়")
# আরেকটি উদাহরণ
sentence = input("একটি বাক্য দিন: ")
words = sentence.split()
print(f"শব্দ সংখ্যা: {len(words)}")
print(f"অক্ষর সংখ্যা: {len(sentence.replace(' ',''))}")
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y != 0:
return x / y
return "ভুল!"
a = float(input("প্রথম সংখ্যা: "))
b = float(input("দ্বিতীয় সংখ্যা: "))
print(f"{a} + {b} = {add(a,b)}")
print(f"{a} - {b} = {subtract(a,b)}")
print(f"{a} * {b} = {multiply(a,b)}")
print(f"{a} / {b} = {divide(a,b)}")
def is_even(n):
return n % 2 == 0
def is_prime(n):
if n <= 1: return False
for i in range(2, int(n**0.5)+1):
if n % i == 0: return False
return True
num = int(input("সংখ্যা: "))
if is_even(num):
print(f"{num} জোড়")
else:
print(f"{num} বিজোড়")
if is_prime(num):
print(f"{num} মৌলিক")
else:
print(f"{num} মৌলিক নয়")
def factorial(n):
if n <= 1:
return 1
return n * factorial(n-1)
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
num = int(input("একটি সংখ্যা: "))
print(f"{num}! = {factorial(num)}")
print(f"Fibonacci({num}) = {fibonacci(num)}")
print(f"\nFibonacci সিরিজ ({num}টি):")
for i in range(num):
print(fibonacci(i), end=" ")
def linear_search(arr, target):
for i, val in enumerate(arr):
if val == target:
return i
return -1
numbers = [10, 25, 8, 42, 17, 35, 5]
print("লিস্ট:", numbers)
target = int(input("কোন সংখ্যা খুঁজবেন? "))
pos = linear_search(numbers, target)
if pos != -1:
print(f"{target} পাওয়া গেছে {pos} নম্বর পজিশনে")
else:
print(f"{target} পাওয়া যায়নি")
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
numbers = [64, 34, 25, 12, 22, 11, 90]
print("আগে:", numbers)
sorted_nums = bubble_sort(numbers.copy())
print("পরে:", sorted_nums)
student = {
"roll": 101,
"name": "রহিম",
"bangla": 85,
"english": 78,
"math": 92
}
print("Student Info:")
for key, value in student.items():
print(f"{key}: {value}")
total = student["bangla"] + student["english"] + student["math"]
print(f"মোট: {total}")
print(f"গড়: {total/3:.2f}")
A = {2, 3, 5, 7, 11}
B = {3, 5, 7, 9, 13}
print("A =", A)
print("B =", B)
print("A∪B =", A | B)
print("A∩B =", A & B)
print("A-B =", A - B)
print("B-A =", B - A)
print("A△B =", A ^ B)
numbers = [2, 3, 2, 5, 3, 7, 5, 11, 7]
print(f"\nDuplicate remove: {list(set(numbers))}")
with open("nctb_output.txt", "w", encoding="utf-8") as f:
f.write("NCTB Class 9-10 Python\n")
f.write("প্রোগ্রামিং শিখছি\n")
for i in range(1, 6):
f.write(f"লাইন {i}: Hello Python!\n")
print("ফাইলে লেখা হয়েছে!")
with open("nctb_output.txt", "r", encoding="utf-8") as f:
content = f.read()
print("ফাইলের বিষয়বস্তু:")
print(content)
filename = "nctb_output.txt"
with open(filename, "r", encoding="utf-8") as f:
lines = f.readlines()
words = 0
chars = 0
for line in lines:
words += len(line.split())
chars += len(line)
print(f"ফাইল: {filename}")
print(f"লাইন সংখ্যা: {len(lines)}")
print(f"শব্দ সংখ্যা: {words}")
print(f"অক্ষর সংখ্যা: {chars}")
try:
num1 = int(input("প্রথম সংখ্যা: "))
num2 = int(input("দ্বিতীয় সংখ্যা: "))
result = num1 / num2
print(f"{num1} / {num2} = {result}")
except ValueError:
print("ত্রুটি: দয়া করে সঠিক সংখ্যা দিন!")
except ZeroDivisionError:
print("ত্রুটি: ০ দিয়ে ভাগ করা যাবে না!")
except Exception as e:
print(f"অজানা ত্রুটি: {e}")
else:
print("কোনো ত্রুটি হয়নি, সফল!")
finally:
print("প্রোগ্রাম শেষ")
n = 5
print("আয়তক্ষেত্র:")
for i in range(n):
for j in range(n):
print("*", end=" ")
print()
print("\nডানকোণী ত্রিভুজ:")
for i in range(1, n+1):
for j in range(i):
print("*", end=" ")
print()
print("\nউল্টা ত্রিভুজ:")
for i in range(n, 0, -1):
for j in range(i):
print("*", end=" ")
print()
n = 5
print("সংখ্যা প্যাটার্ন ১:")
for i in range(1, n+1):
for j in range(1, i+1):
print(j, end=" ")
print()
print("\nসংখ্যা প্যাটার্ন ২:")
for i in range(1, n+1):
for j in range(1, i+1):
print(i, end=" ")
print()
print("\nসংখ্যা প্যাটার্ন ৩:")
for i in range(1, n+1):
print(" " * (n-i), end="")
for j in range(1, i+1):
print(j, end="")
print()
n = int(input("একটি সংখ্যা: "))
temp = n
sum_digits = 0
count_digits = 0
while temp > 0:
sum_digits += temp % 10
count_digits += 1
temp //= 10
print(f"অঙ্কের সংখ্যা: {count_digits}")
print(f"অঙ্কগুলোর যোগফল: {sum_digits}")
print(f"গড়: {sum_digits/count_digits:.2f}")
print("পূর্ণ নামতা (১-১০):")
for i in range(1, 11):
print(f"\n--- {i} এর নামতা ---")
for j in range(1, 11):
print(f"{i} x {j} = {i*j}")
text = input("একটি বাক্য দিন: ").lower()
vowels = "aeiou"
vowel_count = 0
consonant_count = 0
for ch in text:
if ch.isalpha():
if ch in vowels:
vowel_count += 1
else:
consonant_count += 1
print(f"স্বরবর্ণ: {vowel_count}")
print(f"ব্যঞ্জনবর্ণ: {consonant_count}")
print(f"মোট অক্ষর: {vowel_count + consonant_count}")
📌 NCTB পাঠ্যসূচি — মূল পয়েন্ট
NCTB ৯ম-১০ম শ্রেণির ICT বইয়ে পাইথনের মৌলিক বিষয়গুলো খুব সুন্দরভাবে সাজানো আছে। ভেরিয়েবল, কন্ডিশন, লুপ, ব্রেক-কন্টিনিউ — এই চারটি বিষয় ভালোভাবে রপ্ত করলেই পাইথনের বেসিক হয়ে যাবে। প্রতিটি টপিকের ১০-১৫টি করে উদাহরণ প্র্যাকটিস করলে যেকোনো পরীক্ষার প্রশ্নের উত্তর দেওয়া যাবে।
অধ্যায় ১৮ ৫০টি শিক্ষানবিশ প্রোগ্রাম — লাইন বাই লাইন ব্যাখ্যা
📖 পরিচিতি
এই অধ্যায়ে ৫০টি সহজ প্রোগ্রাম দেওয়া হয়েছে যা শিক্ষানবিশদের জন্য খুবই উপযোগী। প্রতিটি প্রোগ্রামের প্রতিটি লাইনের পাশে বাংলা ব্যাখ্যা (কমেন্ট) দেওয়া আছে। আপনি প্রতিটি প্রোগ্রাম রান করে দেখুন, নিজে হাতে কলমে লিখুন, এবং আউটপুট বুঝুন।
🎯 কিভাবে ব্যবহার করবেন
- ▶ Try It — IDE-তে কোড লোড করে রান করুন
- ✏️ Edit — ইনলাইন এডিটর খুলে কোড পরিবর্তন করে দেখুন
- 📋 — কোড কপি করুন
- প্রথমে প্রোগ্রামটি পড়ুন, তারপর নিজে না দেখে লেখার চেষ্টা করুন
# প্রোগ্রাম: Hello World
# print() ফাংশন স্ক্রিনে আউটপুট দেখায়
print("Hello World!") # () এর ভিতরে যা লিখব সেটাই স্ক্রিনে দেখাবে
print("স্বাগতম পাইথন জগতে!") # বাংলাও প্রিন্ট করা যায়
# প্রোগ্রাম: দুটি সংখ্যা যোগ করা
a = 10 # a নামে একটি ভেরিয়েবলে 10 রাখা হয়েছে
b = 20 # b নামে একটি ভেরিয়েবলে 20 রাখা হয়েছে
sum = a + b # a আর b এর যোগফল sum ভেরিয়েবলে রাখা হয়েছে
print("যোগফল:", sum) # যোগফল স্ক্রিনে দেখানো হচ্ছে
# প্রোগ্রাম: ব্যবহারকারীর ইনপুট
# input() ফাংশন ব্যবহারকারীর কাছ থেকে কিছু লেখা নেয়
name = input("তোমার নাম কী? ") # ইউজার যা লিখবে সেটা name-এ রাখা হবে
print("স্বাগতম,", name) # ইউজারের নামসহ স্বাগতম বার্তা
# প্রোগ্রাম: বয়স নির্ণয়
# int() দিয়ে ইনপুটকে পূর্ণসংখ্যায় রূপান্তর করা হয়
birth_year = int(input("তোমার জন্মসাল কী? ")) # ইউজারের জন্মসাল নেওয়া
age = 2026 - birth_year # বর্তমান বছর থেকে জন্মসাল বাদ দিয়ে বয়স
print("তোমার বয়স:", age, "বছর") # বয়স প্রিন্ট
# প্রোগ্রাম: জোড় না বিজোড়
num = int(input("একটি সংখ্যা দাও: ")) # ইউজারের কাছ থেকে সংখ্যা নেওয়া
# % অপারেটর ২ দিয়ে ভাগশেষ বের করে
if num % 2 == 0: # যদি ভাগশেষ ০ হয় তাহলে জোড়
print(num, "একটি জোড় সংখ্যা")
else: # না হলে বিজোড়
print(num, "একটি বিজোড় সংখ্যা")
# প্রোগ্রাম: বড় সংখ্যা নির্ণয়
# if-elif-else দিয়ে শর্ত পরীক্ষা
a = int(input("প্রথম সংখ্যা: ")) # প্রথম সংখ্যা ইনপুট
b = int(input("দ্বিতীয় সংখ্যা: ")) # দ্বিতীয় সংখ্যা ইনপুট
if a > b: # যদি a বড় হয়
print(a, "বড়")
elif b > a: # যদি b বড় হয়
print(b, "বড়")
else: # সমান হলে
print("দুটি সংখ্যা সমান")
# প্রোগ্রাম: ১ থেকে ১০ পর্যন্ত সংখ্যা প্রিন্ট
# for লুপ বারবার কাজ করে
for i in range(1, 11): # range(1,11) = 1,2,3,...,10
print(i, end=" ") # end=" " একই লাইনে প্রিন্ট করে
print() # নতুন লাইনে যাওয়ার জন্য
# প্রোগ্রাম: নাম ৫ বার প্রিন্ট
name = input("তোমার নাম কী? ") # ইউজারের নাম নেওয়া
for i in range(5): # লুপ ৫ বার চলবে
print(i+1, ". ", name, sep="") # নাম বারবার প্রিন্ট
# প্রোগ্রাম: ১ থেকে ১০০ পর্যন্ত জোড় সংখ্যা
print("জোড় সংখ্যা সমূহ:")
for i in range(2, 101, 2): # 2 থেকে শুরু, 2 করে বাড়িয়ে 100 পর্যন্ত
print(i, end=" ") # একই লাইনে প্রিন্ট
print()
# প্রোগ্রাম: ১ থেকে ১০০ পর্যন্ত বিজোড় সংখ্যা
print("বিজোড় সংখ্যা সমূহ:")
for i in range(1, 101, 2): # 1 থেকে শুরু, 2 করে বাড়িয়ে 100 পর্যন্ত
print(i, end=" ")
print()
# প্রোগ্রাম: গুণন সারণি
num = int(input("কোন সংখ্যার সারণি চাও? ")) # ইউজার যার সারণি চায়
for i in range(1, 11): # 1 থেকে 10 পর্যন্ত
print(num, "x", i, "=", num * i) # num x i = num*i
# প্রোগ্রাম: ফ্যাক্টোরিয়াল
# 5! = 5*4*3*2*1 = 120
n = int(input("একটি সংখ্যা দাও: "))
fact = 1 # ফ্যাক্টোরিয়ালের শুরু 1
for i in range(1, n+1): # 1 থেকে n পর্যন্ত লুপ
fact = fact * i # প্রতিবার গুণ করা হচ্ছে
print(n, "এর ফ্যাক্টোরিয়াল =", fact)
# প্রোগ্রাম: ফিবোনাচ্চি সিরিজ
# 0, 1, 1, 2, 3, 5, 8, 13, ...
n = int(input("কতটি সংখ্যা চাও? ")) # কতটি সংখ্যা দেখাবে
a, b = 0, 1 # প্রথম দুটি সংখ্যা
print("ফিবোনাচ্চি সিরিজ:")
for i in range(n): # n বার লুপ
print(a, end=" ") # বর্তমান সংখ্যা প্রিন্ট
a, b = b, a + b # পরবর্তী সংখ্যা বের করা
print()
# প্রোগ্রাম: সংখ্যাটি মৌলিক কিনা
n = int(input("একটি সংখ্যা দাও: "))
count = 0 # কতটি ভাগ যায় তার count
for i in range(1, n+1): # 1 থেকে n পর্যন্ত
if n % i == 0: # যদি i দিয়ে n বিভাজ্য হয়
count += 1 # count বাড়াও
if count == 2: # মৌলিক সংখ্যার ২টি ভাজক: 1 ও নিজে
print(n, "একটি মৌলিক সংখ্যা")
else:
print(n, "একটি মৌলিক সংখ্যা নয়")
# প্রোগ্রাম: লিস্ট তৈরি ও অ্যাক্সেস
fruits = ["আপেল", "কলা", "আম", "লিচু"] # স্ট্রিং এর লিস্ট
print("প্রথম ফল:", fruits[0]) # 0 ইনডেক্স = প্রথম উপাদান
print("শেষ ফল:", fruits[-1]) # -1 ইনডেক্স = শেষ উপাদান
print("দ্বিতীয় ফল:", fruits[1]) # 1 ইনডেক্স = দ্বিতীয় উপাদান
# প্রোগ্রাম: লিস্টের যোগফল বের করা
numbers = [10, 20, 30, 40, 50] # সংখ্যার লিস্ট
total = 0 # যোগফল শুরুতে 0
for num in numbers: # লিস্টের প্রতিটি সংখ্যার জন্য
total = total + num # প্রতিবার যোগ করা
print("লিস্ট:", numbers)
print("যোগফল:", total)
# প্রোগ্রাম: লিস্ট থেকে সবচেয়ে বড় সংখ্যা
numbers = [45, 12, 89, 33, 71, 56] # সংখ্যার লিস্ট
largest = numbers[0] # প্রথম সংখ্যাকে সবচেয়ে বড় ধরে নেওয়া
for num in numbers: # প্রতিটি সংখ্যার জন্য
if num > largest: # যদি কোনো সংখ্যা বড় হয়
largest = num # সেটাকে largest এ রাখা
print("লিস্ট:", numbers)
print("সবচেয়ে বড় সংখ্যা:", largest)
# প্রোগ্রাম: লিস্ট সাজানো
numbers = [45, 12, 89, 33, 71, 56] # অগোছালো লিস্ট
print("আগে:", numbers)
numbers.sort() # sort() ছোট থেকে বড় সাজায়
print("ছোট থেকে বড়:", numbers)
numbers.sort(reverse=True) # reverse=True বড় থেকে ছোট
print("বড় থেকে ছোট:", numbers)
# প্রোগ্রাম: স্ট্রিং উল্টানো
text = input("একটি লেখা দাও: ") # ইউজারের কাছ থেকে লেখা
reversed_text = text[::-1] # [::-1] দিয়ে পুরো স্ট্রিং উল্টানো
print("উল্টানো:", reversed_text)
# প্রোগ্রাম: প্যালিনড্রোম চেক
# প্যালিনড্রোম = উল্টো করেও একই থাকে (যেমন: madam, 121)
text = input("একটি শব্দ দাও: ")
if text == text[::-1]: # মূল ও উল্টানো একই কিনা
print(text, "একটি প্যালিনড্রোম")
else:
print(text, "প্যালিনড্রোম নয়")
# প্রোগ্রাম: একটি বাক্যে স্বরবর্ণ গণনা
sentence = input("একটি বাক্য দাও: ") # ইউজারের বাক্য
vowels = "aeiouAEIOU" # সব স্বরবর্ণ (ছোট ও বড় হাতের)
count = 0 # শুরুতে স্বরবর্ণের সংখ্যা 0
for ch in sentence: # বাক্যের প্রতিটি অক্ষরের জন্য
if ch in vowels: # অক্ষরটি স্বরবর্ণ কিনা
count += 1 # স্বরবর্ণ পেলে count বাড়াও
print("স্বরবর্ণের সংখ্যা:", count)
# প্রোগ্রাম: ফাংশন দিয়ে দুটি সংখ্যা যোগ
def add(a, b): # add() ফাংশন ডিফাইন, a ও b প্যারামিটার
'''দুটি সংখ্যা যোগ করে'''
return a + b # return যোগফল ফেরত দেয়
# ফাংশন কল করা
result = add(15, 25) # 15 ও 25 যোগ করতে add() কল
print("১৫ + ২৫ =", result)
# প্রোগ্রাম: ফাংশন দিয়ে বর্গ নির্ণয়
def square(n): # square() ফাংশন, n প্যারামিটার
'''একটি সংখ্যার বর্গ নির্ণয়'''
return n * n # n * n = n²
num = int(input("একটি সংখ্যা দাও: "))
print(num, "এর বর্গ =", square(num))
# প্রোগ্রাম: ফাংশন দিয়ে জোড়-বিজোড় নির্ণয়
def is_even(n): # is_even() ফাংশন
'''সংখ্যাটি জোড় হলে True ফেরত দেয়'''
return n % 2 == 0 # ২ দিয়ে ভাগশেষ ০ হলে True
num = int(input("একটি সংখ্যা দাও: "))
if is_even(num): # is_even() কল করে চেক
print(num, "জোড়")
else:
print(num, "বিজোড়")
# প্রোগ্রাম: random মডিউল দিয়ে এলোমেলো সংখ্যা
import random # random মডিউল ইম্পোর্ট
print("১-১০০ এর মধ্যে এলোমেলো সংখ্যা:")
for i in range(5): # ৫টি এলোমেলো সংখ্যা
print(random.randint(1, 100), end=" ") # 1-100 এর মধ্যে
print()
# প্রোগ্রাম: Dice Roll সিমুলেশন
import random # random মডিউল
dice1 = random.randint(1, 6) # প্রথম ডাইস 1-6
dice2 = random.randint(1, 6) # দ্বিতীয় ডাইস 1-6
print("প্রথম ডাইস:", dice1)
print("দ্বিতীয় ডাইস:", dice2)
print("মোট:", dice1 + dice2)
# প্রোগ্রাম: সংখ্যা অনুমান করার খেলা
import random
secret = random.randint(1, 50) # গোপন সংখ্যা 1-50
guess = None # ইউজারের guess শুরুতে কিছু না
attempts = 0 # attempt count
while guess != secret: # যতক্ষণ না মিলবে
guess = int(input("একটি সংখ্যা অনুমান করো (1-50): "))
attempts += 1
if guess < secret:
print("ছোট! বড় সংখ্যা চেষ্টা করো")
elif guess > secret:
print("বড়! ছোট সংখ্যা চেষ্টা করো")
else:
print("সঠিক! 🎉", attempts, "চেষ্টায় পেয়েছো")
# প্রোগ্রাম: BMI (বডি মাস ইনডেক্স) ক্যালকুলেটর
weight = float(input("ওজন কত?(kg): ")) # কেজিতে ওজন
height = float(input("উচ্চতা কত?(m): ")) # মিটারে উচ্চতা
bmi = weight / (height ** 2) # BMI = ওজন / (উচ্চতা)^২
print("তোমার BMI:", round(bmi, 2)) # দশমিকের পর ২ ঘর
if bmi < 18.5:
print("ওজন কম")
elif bmi < 25:
print("স্বাভাবিক")
elif bmi < 30:
print("অতিরিক্ত ওজন")
else:
print("মোটা")
# প্রোগ্রাম: সাধারণ ক্যালকুলেটর
a = float(input("প্রথম সংখ্যা: "))
op = input("অপারেটর (+, -, *, /): ") # অপারেটর ইনপুট
b = float(input("দ্বিতীয় সংখ্যা: "))
if op == "+":
print("ফলাফল:", a + b)
elif op == "-":
print("ফলাফল:", a - b)
elif op == "*":
print("ফলাফল:", a * b)
elif op == "/":
if b != 0: # 0 দিয়ে ভাগ করা যাবে না
print("ফলাফল:", a / b)
else:
print("ত্রুটি: 0 দিয়ে ভাগ করা যাবে না")
else:
print("অজানা অপারেটর")
# প্রোগ্রাম: সেলসিয়াস → ফারেনহাইট
c = float(input("সেলসিয়াস তাপমাত্রা: ")) # সেলসিয়াস ইনপুট
f = (c * 9/5) + 32 # ফারেনহাইটের সূত্র
print(c, "°C =", round(f, 2), "°F") # দশমিকের পর ২ ঘর
# প্রোগ্রাম: ২D লিস্ট বা ম্যাট্রিক্স
matrix = [ # ৩x৩ ম্যাট্রিক্স
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print("ম্যাট্রিক্স:")
for row in matrix: # প্রতিটি সারির জন্য
for val in row: # প্রতিটি মানের জন্য
print(val, end=" ")
print() # নতুন সারিতে
# প্রোগ্রাম: ডিকশনারি তৈরি ও ব্যবহার
student = { # ডিকশনারি = কী:ভ্যালু জোড়া
"name": "রহিম",
"roll": 101,
"grade": "A",
"subjects": ["বাংলা", "ইংরেজি", "গণিত"]
}
print("ছাত্রের নাম:", student["name"])
print("রোল:", student["roll"])
print("গ্রেড:", student["grade"])
print("বিষয়:", student["subjects"])
# প্রোগ্রাম: নম্বর অনুযায়ী গ্রেড
marks = float(input("তোমার নম্বর কত? (0-100): "))
if marks >= 80:
grade = "A+"
elif marks >= 70:
grade = "A"
elif marks >= 60:
grade = "A-"
elif marks >= 50:
grade = "B"
elif marks >= 40:
grade = "C"
elif marks >= 33:
grade = "D"
else:
grade = "F"
print("তোমার গ্রেড:", grade)
# প্রোগ্রাম: ছাত্রদের তথ্য সংরক্ষণ
students = [] # খালি লিস্ট
while True:
name = input("ছাত্রের নাম (বা শেষ করতে 'q'): ")
if name == 'q':
break
roll = input("রোল নাম্বার: ")
students.append({"name": name, "roll": roll}) # ডিকশনারি যোগ
print("\nছাত্রদের তালিকা:")
for s in students: # প্রতিটি ছাত্রের জন্য
print(f"রোল: {s['roll']}, নাম: {s['name']}")
# প্রোগ্রাম: ফাইলে কিছু লেখা
# 'w' মোড = write (ফাইল তৈরি বা ওভাররাইট)
with open("note.txt", "w", encoding="utf-8") as f:
f.write("পাইথন প্রোগ্রামিং শিখছি!\n") # ফাইলে লেখা
f.write("এটা আমার প্রথম ফাইল।\n")
print("ফাইল সফলভাবে তৈরি হয়েছে!")
# প্রোগ্রাম: ফাইল থেকে পড়া
try: # ফাইল না থাকলে ত্রুটি এড়াতে try
with open("note.txt", "r", encoding="utf-8") as f:
content = f.read() # পুরো ফাইল পড়া
print("ফাইলের বিষয়বস্তু:")
print(content)
except FileNotFoundError:
print("ফাইলটি পাওয়া যায়নি। আগে ফাইল তৈরি করুন।")
# প্রোগ্রাম: ত্রুটি হ্যান্ডলিং
try:
num = int(input("একটি সংখ্যা দাও: ")) # ভুল ইনপুট দিলে
result = 100 / num # 0 দিলে ভাগের ত্রুটি
print("ফলাফল:", result)
except ValueError: # সংখ্যা না দিলে
print("ত্রুটি: দয়া করে একটি সংখ্যা দিন")
except ZeroDivisionError: # 0 দিলে
print("ত্রুটি: 0 দিয়ে ভাগ করা যাবে না")
finally: # সবসময় চলবে
print("প্রোগ্রাম শেষ")
# প্রোগ্রাম: বর্তমান সময় ও তারিখ
from datetime import datetime # datetime মডিউল থেকে datetime ইম্পোর্ট
now = datetime.now() # বর্তমান সময়
print("আজকের তারিখ:", now.strftime("%Y-%m-%d")) # বছর-মাস-দিন
print("বর্তমান সময়:", now.strftime("%H:%M:%S")) # ঘণ্টা:মিনিট:সেকেন্ড
print("পূর্ণ তথ্য:", now.strftime("%A, %d %B %Y")) # ইংরেজিতে পূর্ণ
# প্রোগ্রাম: এলোমেলো পাসওয়ার্ড তৈরি
import random
import string
length = int(input("পাসওয়ার্ডের দৈর্ঘ্য কত? "))
# সব ধরনের অক্ষর: বড় হাতের, ছোট হাতের, ডিজিট, চিহ্ন
chars = string.ascii_letters + string.digits + "!@#$%^&*"
password = "" # শুরুতে খালি
for i in range(length):
password = password + random.choice(chars) # এলোমেলো অক্ষর
print("তোমার পাসওয়ার্ড:", password)
# প্রোগ্রাম: একটি বাক্যে মোট শব্দ সংখ্যা
sentence = input("একটি বাক্য দাও: ")
words = sentence.split() # split() স্পেস দিয়ে আলাদা করে
print("মোট শব্দ:", len(words)) # len() দিয়ে words-এর দৈর্ঘ্য
# প্রোগ্রাম: সরল সুদ নির্ণয়
P = float(input("আসলের পরিমাণ (P): ")) # মূলধন
R = float(input("সুদের হার (R%): ")) # সুদের হার
T = float(input("সময় (T বছর): ")) # সময়
SI = (P * R * T) / 100 # সরল সুদের সূত্র
total = P + SI # মোট টাকা = আসল + সুদ
print("সরল সুদ (SI):", round(SI, 2))
print("মোট টাকা:", round(total, 2))
# প্রোগ্রাম: কিছু সংখ্যার গড়
numbers = [] # খালি লিস্ট
n = int(input("কতটি সংখ্যা? ")) # কতগুলি সংখ্যা
for i in range(n):
num = float(input(f"সংখ্যা {i+1}: ")) # প্রতিটি সংখ্যা
numbers.append(num) # লিস্টে যোগ
avg = sum(numbers) / n # যোগফল / সংখ্যা = গড়
print("সংখ্যা:", numbers)
print("গড়:", round(avg, 2))
# প্রোগ্রাম: সর্বোচ্চ ও সর্বনিম্ন সংখ্যা
numbers = [] # খালি লিস্ট
n = int(input("কতটি সংখ্যা? "))
for i in range(n):
num = float(input(f"সংখ্যা {i+1}: "))
numbers.append(num)
print("সংখ্যা:", numbers)
print("সর্বোচ্চ:", max(numbers)) # max() বড়টি দেয়
print("সর্বনিম্ন:", min(numbers)) # min() ছোটটি দেয়
# প্রোগ্রাম: সংখ্যা উল্টানো (যেমন: 123 → 321)
n = int(input("একটি সংখ্যা দাও: "))
rev = 0 # উল্টানো সংখ্যা
temp = n # মূল সংখ্যা temp-এ রাখা
while temp > 0:
digit = temp % 10 # শেষ ডিজিট বের করা
rev = rev * 10 + digit # rev-এ যোগ করা
temp = temp // 10 # শেষ ডিজিট বাদ দেওয়া
print(n, "উল্টালে =", rev)
# প্রোগ্রাম: দুটি শব্দ অ্যানাগ্রাম কিনা
# অ্যানাগ্রাম = একই অক্ষর ভিন্ন বিন্যাস (যেমন: eat, tea)
w1 = input("প্রথম শব্দ: ").lower() # ছোট হাতের করে নেওয়া
w2 = input("দ্বিতীয় শব্দ: ").lower()
if sorted(w1) == sorted(w2): # sorted() অক্ষর সাজায়
print("শব্দ দুটি অ্যানাগ্রাম")
else:
print("শব্দ দুটি অ্যানাগ্রাম নয়")
# প্রোগ্রাম: দুটি লিস্ট একত্রিত করা
list1 = [1, 2, 3, 4] # প্রথম লিস্ট
list2 = [5, 6, 7, 8] # দ্বিতীয় লিস্ট
merged = list1 + list2 # + দিয়ে লিস্ট জোড়া
print("প্রথম লিস্ট:", list1)
print("দ্বিতীয় লিস্ট:", list2)
print("একত্রিত:", merged)
# প্রোগ্রাম: লিস্ট থেকে ডুপ্লিকেট সরানো
numbers = [1, 2, 2, 3, 4, 4, 5, 6, 6, 7]
print("আগে:", numbers)
unique = list(set(numbers)) # set() ডুপ্লিকেট সরায়
print("ডুপ্লিকেট ছাড়া:", unique)
# প্রোগ্রাম: ক্লাস ও অবজেক্ট
class Student: # Student নামে ক্লাস
def __init__(self, name, roll): # কনস্ট্রাক্টর
self.name = name # অ্যাট্রিবিউট
self.roll = roll
def show(self): # মেথড
print(f"নাম: {self.name}, রোল: {self.roll}")
s1 = Student("রহিম", 101) # অবজেক্ট তৈরি
s2 = Student("সাদিয়া", 102)
s1.show() # মেথড কল
s2.show()
# প্রোগ্রাম: ইনহেরিটেন্স
class Animal: # প্যারেন্ট ক্লাস
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} কিছু বলছে")
class Dog(Animal): # চাইল্ড ক্লাস (Animal থেকে নেওয়া)
def speak(self):
print(f"{self.name} বলছে: Ghew Ghew!")
class Cat(Animal): # আরেকটি চাইল্ড ক্লাস
def speak(self):
print(f"{self.name} বলছে: Meow Meow!")
a = Dog("ববি") # Dog-এর অবজেক্ট
b = Cat("পুসি") # Cat-এর অবজেক্ট
a.speak()
b.speak()
# প্রোগ্রাম: Tkinter GUI বেসিক
# import tkinter as tk # অনলাইন IDE-তে কাজ নাও করতে পারে
# Tkinter দিয়ে একটি সাধারণ উইন্ডো তৈরি
print("Tkinter GUI তৈরি করতে নিচের কোড লোকাল Python এ চালান:")
print('''import tkinter as tk
root = tk.Tk()
root.title("আমার প্রথম GUI")
root.geometry("300x200")
label = tk.Label(root, text="স্বাগতম পাইথন GUI!")
label.pack()
btn = tk.Button(root, text="ক্লিক করুন")
btn.pack()
root.mainloop()''')
📌 শিক্ষানবিশের জন্য টিপস
এই ৫০টি প্রোগ্রাম বারবার প্র্যাকটিস করুন। প্রথমে প্রতিটি প্রোগ্রাম কপি করে রান করুন। তারপর নিজে নিজে লিখুন। কোনো প্রোগ্রাম বুঝতে সমস্যা হলে কমেন্টগুলো পড়ুন। সবগুলো আয়ত্ত করতে পারলে আপনি পাইথনের বেসিক প্রোগ্রামিংয়ে দক্ষ হয়ে যাবেন। 🚀