চিট শিট

Python চিট শিট: সিনট্যাক্স, কমান্ড ও বিল্ট-ইন ফাংশন টেবিলে

হালনাগাদ: · Skillaria.Top

Python-এর সিনট্যাক্স ব্লক বোঝায় ব্র্যাকেটের বদলে ইনডেন্টেশন দিয়ে: কোলনের পরের ব্লক চার স্পেসে সরে। মূল বিষয়গুলো হলো টাইপ ঘোষণা ছাড়া ভেরিয়েবল, if/elif/else শর্ত, for ও while লুপ, def দিয়ে ফাংশন, এবং বিল্ট-ইন ফাংশন print, len, range, input, type সহ স্ট্রিং, লিস্ট ও ডিকশনারির মেথড।

এই চিট শিটে Python-এর প্রথম কয়েক মাসে হাতের কাছে রাখার মতো সব কিছু এক পাতায় জড়ো করা হয়েছে: সিনট্যাক্স, লুপ, বিল্ট-ইন ফাংশন, স্ট্রিং, লিস্ট ও ডিকশনারির মেথড এবং টার্মিনাল কমান্ড। প্রতিটি টেবিল একটি ছোট রেফারেন্স, যার উদাহরণ সরাসরি REPL-এ বসিয়ে চালানো যায়।

Python সিনট্যাক্সের মূল বিষয়

ভাষার প্রধান বৈশিষ্ট্য — ব্লক লেখা হয় ব্র্যাকেটে নয়, ইনডেন্টেশনে। কোলনযুক্ত লাইনের পরের (if, for, def, class) লাইনগুলো চার স্পেসে সরানো হয়। ট্যাব ও স্পেস মেশানো যায় না — পাবেন IndentationError।

গঠনউদাহরণব্যাখ্যা
মন্তব্য# text# থেকে লাইনের শেষ পর্যন্ত সব উপেক্ষিত
ভেরিয়েবলage = 25টাইপ ঘোষণা হয় না, মান থেকে নির্ধারিত হয়
একসঙ্গে অ্যাসাইনমেন্টa, b = 1, 2আনপ্যাকিং; মান বদল: a, b = b, a
আউটপুটprint("Hello", name)আর্গুমেন্টগুলো স্পেস দিয়ে আলাদা হয়
ইনপুটs = input("Name: ")সবসময় স্ট্রিং ফেরত দেয়
f-স্ট্রিংf"{name}: {price:.2f}"এক্সপ্রেশন বসানো ও ফরম্যাট
টাইপ অ্যানোটেশনcount: int = 0IDE ও যাচাই টুলের জন্য ইঙ্গিত, চলার সময় যাচাই হয় না
খালি ব্লকpassসিনট্যাক্সে ব্লক লাগলে প্লেসহোল্ডার
ইমপোর্টfrom math import sqrtমডিউল বা তার ভেতর থেকে নাম যুক্ত করা

ডেটা টাইপ

টাইপলিটারালপরিবর্তনযোগ্য
int42, 1_000_000না
float3.14, 1e-3না
boolTrue, Falseনা
str"text", 'text', """many lines"""না
list[1, 2, 3]হ্যাঁ
tuple(1, 2), (1,)না
dict{"a": 1}হ্যাঁ
set{1, 2}, খালি — set()হ্যাঁ
NoneTypeNone—

অপারেটর

দলঅপারেটরউদাহরণ → ফল
গণিত+ - * / // % **7 // 2 → 3, 7 % 2 → 1, 2 ** 10 → 1024
তুলনা== != < > <= >=1 < x < 10 — তুলনার শৃঙ্খল
যুক্তিand or notx or "ডিফল্ট"
অন্তর্ভুক্তিin, not in"a" in "abc" → True
অভিন্নতাis, is notx is None
অ্যাসাইনমেন্ট+= -= *= /=, :=if (n := len(s)) > 10: ...

শর্ত ও প্যাটার্ন মিলানো

if score >= 90:
    grade = "A"
elif score >= 70:
    grade = "B"
else:
    grade = "C"

status = "adult" if age >= 18 else "child"   # শর্তসাপেক্ষ এক্সপ্রেশন

match command:
    case "start":
        print("Starting")
    case "stop" | "exit":
        print("Stopping")
    case _:
        print("Unknown command")

মিথ্যা হিসেবে গণ্য হয় False, None, 0, খালি স্ট্রিং ও খালি সংগ্রহ। তাই if len(items) > 0-এর বদলে সাধারণত লেখা হয় শুধু if items।

Python-এ লুপ: for ও while সিনট্যাক্স

for লুপ

Python-এ for লুপের সিনট্যাক্স: for ভেরিয়েবল in ক্রম: এবং ইনডেন্ট করা ব্লক। লুপ যেকোনো iterable-এর উপর চলে — স্ট্রিং, লিস্ট, ডিকশনারি, ফাইল, range।

for i in range(5):              # 0 1 2 3 4
    print(i)

for i in range(10, 0, -2):      # 10 8 6 4 2
    print(i)

for i, fruit in enumerate(["apple", "pear"], start=1):
    print(i, fruit)

for name, score in zip(names, scores):
    print(name, score)

for key, value in prices.items():
    print(key, value)

while লুপ

attempts = 3
while attempts > 0:
    password = input("Password: ")
    if password == "secret":
        print("Logged in")
        break
    attempts -= 1
else:
    print("No attempts left")   # চলে যদি break না হয়
কমান্ডকী করে
breakলুপ থেকে আগেভাগে বের হয়
continueপরের ধাপে চলে যায়
লুপের elseলুপ break ছাড়া শেষ হলে চলে
range(stop), range(start, stop, step)সংখ্যার ক্রম, stop অন্তর্ভুক্ত নয়

কমপ্রিহেনশন (comprehensions)

squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100))   # জেনারেটর এক্সপ্রেশন

ফাংশন

def greet(name: str, greeting: str = "Hello") -> str:
    """Returns a greeting."""
    return f"{greeting}, {name}!"

def total(*args, **kwargs):
    return sum(args), kwargs

square = lambda x: x * x
print(greet("Anna"))                  # Hello, Anna!
print(greet("Anna", greeting="Hi"))   # Hi, Anna!
উপাদানঅর্থ
def f(a, b=1)ডিফল্ট মানসহ প্যারামিটার
*argsযেকোনো সংখ্যক পজিশনাল আর্গুমেন্ট (টাপল)
**kwargsযেকোনো সংখ্যক নামযুক্ত আর্গুমেন্ট (ডিকশনারি)
returnমান ফেরত; না থাকলে ফাংশন None দেয়
lambda x: ...এক এক্সপ্রেশনের ছোট নামহীন ফাংশন
global, nonlocalবাইরের স্কোপের ভেরিয়েবল বদলানো

পরিবর্তনযোগ্য ডিফল্ট মান ব্যবহার করবেন না, যেমন def f(items=[]): লিস্টটি একবারই তৈরি হয় এবং কলের মধ্যে জমতে থাকে। সঠিক উপায় — items=None এবং ভেতরে if items is None: items = []।

Python-এর বিল্ট-ইন ফাংশন

বিল্ট-ইন ফাংশন ইমপোর্ট ছাড়াই পাওয়া যায়। প্রায় প্রতিটি স্ক্রিপ্টে এগুলোর কোনো না কোনোটি থাকে।

ফাংশনকী করেউদাহরণ → ফল
print()মান প্রদর্শন করেprint(1, 2, sep="-") → 1-2
input()কিবোর্ড থেকে স্ট্রিং পড়েint(input())
len()সংগ্রহ বা স্ট্রিংয়ের দৈর্ঘ্যlen("abc") → 3
type()অবজেক্টের টাইপtype(3.0) → <class 'float'>
isinstance()টাইপ যাচাইisinstance(5, int) → True
int() float() str() bool()টাইপ রূপান্তরint("42") → 42
list() tuple() set() dict()সংগ্রহ তৈরিlist("ab") → ['a', 'b']
range()সংখ্যার পরিসরlist(range(3)) → [0, 1, 2]
enumerate()(ইনডেক্স, উপাদান) জোড়াlist(enumerate("ab")) → [(0, 'a'), (1, 'b')]
zip()ক্রমগুলো জোড়ায় জোড়ায় মেলায়list(zip([1, 2], "ab")) → [(1, 'a'), (2, 'b')]
sum() min() max()যোগফল, সর্বনিম্ন, সর্বোচ্চmax([3, 7, 1]) → 7
abs() round()মডিউল ও গোলকরণround(3.14159, 2) → 3.14
sorted()নতুন সাজানো লিস্টsorted(words, key=len, reverse=True)
reversed()উল্টো ক্রমের ইটারেটরlist(reversed([1, 2])) → [2, 1]
map() filter()ফাংশন প্রয়োগ / ছাঁকনিlist(map(str, [1, 2])) → ['1', '2']
any() all()অন্তত একটি / সবগুলো সত্যall(x > 0 for x in nums)
open()ফাইল খোলেopen("a.txt", encoding="utf-8")
help() dir()সাহায্য ও অ্যাট্রিবিউটের তালিকাhelp(str.split), dir(list)
id() hash()অবজেক্টের আইডি ও হ্যাশhash("a")

সবচেয়ে সুবিধাজনক রেফারেন্স সবসময় হাতের কাছে — REPL-এর help(): help(dict) ডিকশনারির সব মেথড বর্ণনাসহ দেখায়, আর dir(obj) দেয় উপলব্ধ নামের তালিকা।

স্ট্রিং মেথড

Python-এর স্ট্রিং সিনট্যাক্স: স্ট্রিং অপরিবর্তনীয়, প্রতিটি মেথড নতুন স্ট্রিং ফেরত দেয়। স্লাইস কাজ করে লিস্টের মতো: s[1:4], s[::-1] — উল্টে দেওয়া।

মেথডউদাহরণ → ফল
upper() lower()"Py".upper() → 'PY'
capitalize() title()"hello world".title() → 'Hello World'
strip() lstrip() rstrip()" hi \n".strip() → 'hi'
split(sep)"a,b,c".split(",") → ['a', 'b', 'c']
join(iterable)"-".join(["a", "b"]) → 'a-b'
replace(old, new)"cat".replace("c", "b") → 'bat'
find() index()"hello".find("l") → 2; না পেলে -1 (index-এ ত্রুটি)
count()"banana".count("a") → 3
startswith()"file.py".endswith(".py") → True
isdigit() isalpha() isspace()"123".isdigit() → True
removeprefix() removesuffix()"test_a".removeprefix("test_") → 'a'
zfill() center() ljust()"7".zfill(3) → '007'
format()"{} + {}".format(1, 2) → '1 + 2'

Python লিস্টের কমান্ড

লিস্ট পরিবর্তনযোগ্য ক্রমবদ্ধ সংগ্রহ। বেশির ভাগ মেথড লিস্ট জায়গায় বদলায় এবং None ফেরত দেয়, তাই a = a.sort() একটি সাধারণ ভুল।

অপারেশনকী করেউদাহরণ
append(x)শেষে যোগ করেa.append(4)
extend(iter)সব উপাদান যোগ করেa.extend([5, 6])
insert(i, x)ইনডেক্স ধরে বসায়a.insert(0, "first")
remove(x)মানের প্রথম উপস্থিতি মুছেa.remove(3)
pop(i)উপাদান মুছে ফেরত দেয় (ডিফল্ট — শেষটি)last = a.pop()
clear()লিস্ট খালি করেa.clear()
index(x)প্রথম উপস্থিতির ইনডেক্সa.index("b")
count(x)কতবার আছেa.count(1)
sort()জায়গায় সাজায়a.sort(key=str.lower)
reverse()জায়গায় উল্টে দেয়a.reverse()
copy()অগভীর কপিb = a.copy()
del a[i]ইনডেক্স বা স্লাইস মুছেdel a[1:3]
স্লাইসa[start:stop:step]a[-1] — শেষটি, a[:3] — প্রথম তিনটি

Python ডিকশনারির কমান্ড

অপারেশনকী করেউদাহরণ
d[key]কী-এর মান; কী না থাকলে KeyErrord["name"]
get(key, default)মান বা বিকল্পd.get("age", 0)
d[key] = valueযোগ বা বদলd["city"] = "Dhaka"
keys() values() items()কী, মান, জোড়াfor k, v in d.items():
update()অন্য ডিকশনারির সঙ্গে মেশায়d.update({"a": 1})
d1 | d2নতুন যুক্ত ডিকশনারিmerged = defaults | user
pop(key, default)মুছে মান ফেরতd.pop("tmp", None)
popitem()সবশেষে যোগ হওয়া জোড়া মুছেd.popitem()
setdefault(key, value)মান ফেরত; কী না থাকলে তৈরি করেd.setdefault("tags", []).append("py")
key in dকী আছে কিনা যাচাইif "name" in d:
dict.fromkeys()একই মানসহ কী-এর ডিকশনারিdict.fromkeys("abc", 0)
len(d), del d[key]আকার ও মুছে ফেলাdel d["old"]

টাপল ও সেট

অপারেশনউদাহরণ → ফল
টাপল আনপ্যাকিংx, y = (3, 4)
সেটে যোগs.add(5), মুছতে — s.discard(5)
মিলন / ছেদ{1, 2} | {2, 3} → {1, 2, 3}; {1, 2} & {2, 3} → {2}
বিয়োগ{1, 2} - {2} → {1}
লিস্ট থেকে ডুপ্লিকেট সরানোlist(dict.fromkeys(items)) — ক্রম ঠিক রেখে

এক্সেপশন ও ফাইল

try:
    number = int(input("Number: "))
except ValueError as err:
    print("This is not a number:", err)
else:
    print("Success")
finally:
    print("Always runs")

with open("data.txt", "w", encoding="utf-8") as f:
    f.write("line\n")

with open("data.txt", encoding="utf-8") as f:
    for line in f:
        print(line.rstrip())
এক্সেপশনকখন ঘটে
SyntaxError, IndentationErrorসিনট্যাক্স বা ইনডেন্টেশনে ভুল
NameErrorনাম সংজ্ঞায়িত নয় (বানান ভুল)
TypeErrorঅনুপযুক্ত টাইপের অপারেশন: "1" + 1
ValueErrorটাইপ ঠিক, কিন্তু মান ভুল: int("abc")
IndexError, KeyErrorইনডেক্স বা কী নেই
FileNotFoundErrorফাইল পাওয়া যায়নি
ZeroDivisionErrorশূন্য দিয়ে ভাগ

ক্লাস

from dataclasses import dataclass

class Dog:
    def __init__(self, name: str):
        self.name = name

    def bark(self) -> str:
        return f"{self.name}: Woof!"

@dataclass
class Point:
    x: float
    y: float

print(Dog("Bolt").bark())   # Bolt: Woof!
print(Point(1, 2))          # Point(x=1, y=2)

Python-এর বিল্ট-ইন মডিউল

স্ট্যান্ডার্ড লাইব্রেরি ইন্টারপ্রেটারের সঙ্গেই আসে — শুধু import লাগে।

মডিউলকাজউদাহরণ
mathগণিতmath.sqrt(16) → 4.0
randomএলোমেলো সংখ্যাrandom.randint(1, 6), random.choice(items)
datetimeতারিখ ও সময়datetime.date.today()
pathlibপথ ও ফাইলPath("data").glob("*.csv")
os, sysসিস্টেম, এনভায়রনমেন্ট ভেরিয়েবল, আর্গুমেন্টos.environ.get("HOME"), sys.argv
jsonJSON পড়া ও লেখাjson.loads(text), json.dumps(obj, ensure_ascii=False)
csvCSV টেবিলcsv.DictReader(f)
collectionsCounter, defaultdict, dequeCounter("banana").most_common(1) → [('a', 3)]
itertoolsইটারেটরের সংমিশ্রণ ও শৃঙ্খলitertools.chain(a, b)
reরেগুলার এক্সপ্রেশনre.findall(r"\d+", s)
timeবিরতি ও সময় মাপাtime.sleep(1), time.perf_counter()
asyncioঅ্যাসিনক্রোনাস কোডasyncio.run(main())

Python 3.15-এ এসেছে লেজি ইমপোর্ট (PEP 810): lazy import pandas as pd মডিউল লোড স্থগিত রাখে প্রথম ব্যবহার পর্যন্ত, তাই ভারী নির্ভরতাসহ স্ক্রিপ্ট অনেক দ্রুত শুরু হয়।

টার্মিনালে Python-এর কমান্ড

«Python কমান্ড» বলতে বোঝানো হয় ইন্টারপ্রেটার চালানো ও লাইব্রেরি ইনস্টলের কমান্ড। Windows-এ python3-এর বদলে সাধারণত লেখা হয় python বা py।

কমান্ডকী করে
python3 --versionসংস্করণ দেখায়
python3ইন্টারঅ্যাকটিভ কনসোল REPL খোলে (বেরোনো — exit())
python3 script.pyফাইল চালায়
python3 -c "print(2 + 2)"এক লাইনের কোড চালায়
python3 -m venv .venvভার্চুয়াল এনভায়রনমেন্ট বানায়
source .venv/bin/activate / .venv\Scripts\activateএনভায়রনমেন্ট সক্রিয় করে (Linux, macOS / Windows)
python3 -m pip install requestsপ্যাকেজ ইনস্টল করে
pip list, pip freeze > requirements.txtপ্যাকেজের তালিকা ও সংরক্ষণ
pip install -r requirements.txtফাইল থেকে নির্ভরতা ইনস্টল
python3 -m http.server 8000বর্তমান ফোল্ডারে সহজ ওয়েব সার্ভার
uv init, uv add requests, uv run main.pyuv ম্যানেজারে প্রজেক্ট, নির্ভরতা ও চালানো

নতুনদের সাধারণ ভুল

  • তুলনায় = — শর্তে লাগে ==; একক = হলো অ্যাসাইনমেন্ট।
  • কোলন ভুলে যাওয়া if, for, def-এর পর SyntaxError দেয়।
  • স্ট্রিং ও সংখ্যা যোগ: "Age: " + 25 ত্রুটি, লিখুন f"Age: {25}"।
  • লুপের সময় লিস্ট বদলানো — কপি উপর দিয়ে চলুন for x in a[:] বা নতুন লিস্ট তৈরি করুন।
  • input() স্ট্রিং দেয় — হিসাবের জন্য int() বা float()-এ মুড়ুন।

সারসংক্ষেপ

Python-এর সিনট্যাক্স দাঁড়িয়ে আছে ইনডেন্টেশন, কোলন ও অল্প কিছু কাঠামোর উপর: শর্ত, for ও while লুপ, ফাংশন, ক্লাস। এর সঙ্গে যোগ করুন কয়েক ডজন বিল্ট-ইন ফাংশন এবং স্ট্রিং, লিস্ট ও ডিকশনারির মেথড — তাহলে দৈনন্দিন কাজের বড় অংশ সামলানো যাবে। চিট শিটটি সংরক্ষণ করুন, আর টেবিলগুলো পরিচিত হয়ে গেলে মডিউল ও অ্যাসিনক্রোনাসের দিকে যান; এগুলো «Python 3.15: নতুন থেকে পেশাদার» কোর্সে ধাপে ধাপে হাতে-কলমে শেখানো হয়।

সাধারণ প্রশ্ন

Python-এ ইনডেন্টেশনের জন্য কয়টি স্পেস দিতে হয়?

PEP 8 অনুযায়ী প্রতি স্তরে ৪টি স্পেস। মূল কথা — পুরো ব্লকে একই রকম হওয়া এবং ট্যাবের সঙ্গে না মেশানো।

লিস্ট ও টাপলের পার্থক্য কী?

লিস্ট পরিবর্তনযোগ্য, তাতে যোগ ও সাজানো যায় জায়গায়; টাপল অপরিবর্তনীয়, তাই ডিকশনারির কী হিসেবে এবং স্থির মানের সেটের জন্য উপযুক্ত।

Python-এ একটি অবজেক্টের সব মেথড কীভাবে দেখব?

নামের তালিকার জন্য <code>dir(obj)</code>, বর্ণনার জন্য <code>help(obj)</code> ডাকুন — যেমন <code>help(str)</code> স্ট্রিংয়ের সব মেথড দেখাবে।

sort() ও sorted()-এর পার্থক্য কী?

<code>list.sort()</code> লিস্টটিকেই সাজায় এবং <code>None</code> ফেরত দেয়; <code>sorted()</code> ফাংশন নতুন লিস্ট ফেরত দেয় এবং যেকোনো iterable-এর সঙ্গে কাজ করে।

লাইনের শেষে সেমিকোলন লাগে কি?

না। এক লাইনে একাধিক কমান্ডের জন্য সেমিকোলন চলে, কিন্তু স্বাভাবিক কোডে প্রতিটি নির্দেশ নতুন লাইনে লেখা হয়।