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

URL: https://skillaria.top/bn/guides/python/python-cheat-sheet

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 = 0` | IDE ও যাচাই টুলের জন্য ইঙ্গিত, চলার সময় যাচাই হয় না |

| খালি ব্লক | `pass` | সিনট্যাক্সে ব্লক লাগলে প্লেসহোল্ডার |

| ইমপোর্ট | `from math import sqrt` | মডিউল বা তার ভেতর থেকে নাম যুক্ত করা |

### ডেটা টাইপ

| টাইপ | লিটারাল | পরিবর্তনযোগ্য |
| --- | --- | --- |

| `int` | `42`, `1_000_000` | না |

| `float` | `3.14`, `1e-3` | না |

| `bool` | `True`, `False` | না |

| `str` | `"text"`, `'text'`, `"""many lines"""` | না |

| `list` | `[1, 2, 3]` | হ্যাঁ |

| `tuple` | `(1, 2)`, `(1,)` | না |

| `dict` | `{"a": 1}` | হ্যাঁ |

| `set` | `{1, 2}`, খালি — `set()` | হ্যাঁ |

| `NoneType` | `None` | — |

### অপারেটর

| দল | অপারেটর | উদাহরণ → ফল |
| --- | --- | --- |

| গণিত | `+ - * / // % **` | `7 // 2` → 3, `7 % 2` → 1, `2 ** 10` → 1024 |

| তুলনা | `== != < > <= >=` | `1 < x < 10` — তুলনার শৃঙ্খল |

| যুক্তি | `and or not` | `x or "ডিফল্ট"` |

| অন্তর্ভুক্তি | `in`, `not in` | `"a" in "abc"` → True |

| অভিন্নতা | `is`, `is not` | `x 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]` | কী-এর মান; কী না থাকলে `KeyError` | `d["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` |

| `json` | JSON পড়া ও লেখা | `json.loads(text)`, `json.dumps(obj, ensure_ascii=False)` |

| `csv` | CSV টেবিল | `csv.DictReader(f)` |

| `collections` | Counter, defaultdict, deque | `Counter("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.py` | uv ম্যানেজারে প্রজেক্ট, নির্ভরতা ও চালানো |

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

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

## সারসংক্ষেপ

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

## FAQ

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

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

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

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

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

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

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

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

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

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


---
Source: Skillaria.Top (https://skillaria.top)
