class ErrorA(Exception): pass class ErrorB(Exception): pass try: raise ErrorA except ErrorA as e: raise ErrorB from e
68. تبدیل همه خطاها به RuntimeError
try: int("abc") except Exception as e: raise RuntimeError from e
69. خطا در comprehension با try داخلی
data = ["1", "x"] nums = [int(x) if x.isdigit() else 0 for x in data]
70. استفاده از logging برای ثبت خطا
import logging try: 1 / 0 except ZeroDivisionError: logging.exception("Error occurred")
71. جلوگیری از خطا با isinstance
x = "5" if isinstance(x, int): print(x + 1) else: print("Not int")
72. گرفتن MemoryError
try: x = "a" * (10**10) except MemoryError: print("Out of memory")
73. استفاده از atexit برای تمیزکاری
import atexit atexit.register(lambda: print("Cleaning up")) raise RuntimeError
74. گرفتن خطای OSError
import os try: os.remove("nofile.txt") except OSError as e: print("OS error:", e)
75. گرفتن خطای RuntimeError
try: raise RuntimeError("Something bad happened") except RuntimeError as e: print(e)
76. گرفتن خطای ValueError در map
data = ["1", "x", "2"] try: list(map(int, data)) except ValueError as e: print(e)
77. مدیریت خطا در yield generator
def gen(): try: yield 1 / 0 except ZeroDivisionError: yield 0 print(list(gen()))
78. بازگرداندن پیام خطا به کاربر
def safe_div(a, b): try: return a / b except ZeroDivisionError as e: return str(e) print(safe_div(1, 0))
79. استفاده از exit هنگام خطا
import sys try: raise ValueError except ValueError: sys.exit("Fatal error")
80. مدیریت خطای JSON
import json try: json.loads("{bad json}") except json.JSONDecodeError: print("Invalid JSON")
بخش ۵ – فوقپیشرفته و ترکیبی (سوال ۸۱ تا ۱۰۰)
81. گرفتن خطا در چند سطح تابع
def a(): b() def b(): c() def c(): 1 / 0 try: a() except ZeroDivisionError: print("Caught")
82. گرفتن خطای UnicodeDecodeError
try: open("file.txt", encoding="ascii").read() except UnicodeDecodeError: print("Encoding error")
83. خطای UnicodeEncodeError
try: "سلام".encode("ascii") except UnicodeEncodeError: print("Cannot encode")
84. گرفتن خطای IndexError و پیام
try: [1, 2][5] except IndexError as e: print(e)
85. گرفتن خطای KeyError با مقدار پیشفرض
d = {"a": 1} try: print(d["b"]) except KeyError: print("Default value")
86. مدیریت چند خطا در حلقه بزرگ
items = [1, 0, "x"] for i in items: try: print(10 / i) except (TypeError, ZeroDivisionError) as e: print("Error:", e)
87. خطا در بازکردن URL
import urllib.request try: urllib.request.urlopen("http://invalid.url") except Exception as e: print("URL error:", e)
88. بازنشر خطا بعد از لاگ کردن
try: 1 / 0 except ZeroDivisionError as e: print("Logging:", e) raise
89. گرفتن خطا در threading
import threading def task(): raise ValueError t = threading.Thread(target=task) t.start() t.join() print("Thread done (error not caught here)")
90. گرفتن خطا در multiprocessing
from multiprocessing import Process def task(): raise ValueError p = Process(target=task) p.start() p.join() print("Process ended")
91. استفاده از try در context manager
class MyCM: def enter(self): return self def exit(self, exc_type, exc, tb): print("Error type:", exc_type) with MyCM(): 1 / 0
92. جلوگیری از توقف برنامه با except گسترده
while True: try: 1 / int(input("Number: ")) except: print("Error")
93. ذخیره جزئیات خطا در فایل
import traceback try: 1 / 0 except: with open("error.log", "w") as f: traceback.print_exc(file=f)
94. استفاده از traceback.format_exc()
import traceback try: 1 / 0 except: print(traceback.format_exc())
95. خطای EOFError در ورودی
try: input() except EOFError: print("No input")
96. خطای OverflowError
try: import math math.exp(1000) except OverflowError: print("Too large")
97. گرفتن خطای NotImplementedError
def f(): raise NotImplementedError try: f() except NotImplementedError: print("Not implemented")
98. گرفتن خطای ZeroDivisionError در float
try: 1.0 / 0.0 except ZeroDivisionError: print("Float division by zero")
99. گرفتن خطای socket
import socket try: socket.socket().connect(("invalid", 80)) except Exception as e: print("Socket error:", e)
100. گرفتن تمام خطاها و ادامه کار
68. تبدیل همه خطاها به RuntimeError
try: int("abc") except Exception as e: raise RuntimeError from e
69. خطا در comprehension با try داخلی
data = ["1", "x"] nums = [int(x) if x.isdigit() else 0 for x in data]
70. استفاده از logging برای ثبت خطا
import logging try: 1 / 0 except ZeroDivisionError: logging.exception("Error occurred")
71. جلوگیری از خطا با isinstance
x = "5" if isinstance(x, int): print(x + 1) else: print("Not int")
72. گرفتن MemoryError
try: x = "a" * (10**10) except MemoryError: print("Out of memory")
73. استفاده از atexit برای تمیزکاری
import atexit atexit.register(lambda: print("Cleaning up")) raise RuntimeError
74. گرفتن خطای OSError
import os try: os.remove("nofile.txt") except OSError as e: print("OS error:", e)
75. گرفتن خطای RuntimeError
try: raise RuntimeError("Something bad happened") except RuntimeError as e: print(e)
76. گرفتن خطای ValueError در map
data = ["1", "x", "2"] try: list(map(int, data)) except ValueError as e: print(e)
77. مدیریت خطا در yield generator
def gen(): try: yield 1 / 0 except ZeroDivisionError: yield 0 print(list(gen()))
78. بازگرداندن پیام خطا به کاربر
def safe_div(a, b): try: return a / b except ZeroDivisionError as e: return str(e) print(safe_div(1, 0))
79. استفاده از exit هنگام خطا
import sys try: raise ValueError except ValueError: sys.exit("Fatal error")
80. مدیریت خطای JSON
import json try: json.loads("{bad json}") except json.JSONDecodeError: print("Invalid JSON")
بخش ۵ – فوقپیشرفته و ترکیبی (سوال ۸۱ تا ۱۰۰)
81. گرفتن خطا در چند سطح تابع
def a(): b() def b(): c() def c(): 1 / 0 try: a() except ZeroDivisionError: print("Caught")
82. گرفتن خطای UnicodeDecodeError
try: open("file.txt", encoding="ascii").read() except UnicodeDecodeError: print("Encoding error")
83. خطای UnicodeEncodeError
try: "سلام".encode("ascii") except UnicodeEncodeError: print("Cannot encode")
84. گرفتن خطای IndexError و پیام
try: [1, 2][5] except IndexError as e: print(e)
85. گرفتن خطای KeyError با مقدار پیشفرض
d = {"a": 1} try: print(d["b"]) except KeyError: print("Default value")
86. مدیریت چند خطا در حلقه بزرگ
items = [1, 0, "x"] for i in items: try: print(10 / i) except (TypeError, ZeroDivisionError) as e: print("Error:", e)
87. خطا در بازکردن URL
import urllib.request try: urllib.request.urlopen("http://invalid.url") except Exception as e: print("URL error:", e)
88. بازنشر خطا بعد از لاگ کردن
try: 1 / 0 except ZeroDivisionError as e: print("Logging:", e) raise
89. گرفتن خطا در threading
import threading def task(): raise ValueError t = threading.Thread(target=task) t.start() t.join() print("Thread done (error not caught here)")
90. گرفتن خطا در multiprocessing
from multiprocessing import Process def task(): raise ValueError p = Process(target=task) p.start() p.join() print("Process ended")
91. استفاده از try در context manager
class MyCM: def enter(self): return self def exit(self, exc_type, exc, tb): print("Error type:", exc_type) with MyCM(): 1 / 0
92. جلوگیری از توقف برنامه با except گسترده
while True: try: 1 / int(input("Number: ")) except: print("Error")
93. ذخیره جزئیات خطا در فایل
import traceback try: 1 / 0 except: with open("error.log", "w") as f: traceback.print_exc(file=f)
94. استفاده از traceback.format_exc()
import traceback try: 1 / 0 except: print(traceback.format_exc())
95. خطای EOFError در ورودی
try: input() except EOFError: print("No input")
96. خطای OverflowError
try: import math math.exp(1000) except OverflowError: print("Too large")
97. گرفتن خطای NotImplementedError
def f(): raise NotImplementedError try: f() except NotImplementedError: print("Not implemented")
98. گرفتن خطای ZeroDivisionError در float
try: 1.0 / 0.0 except ZeroDivisionError: print("Float division by zero")
99. گرفتن خطای socket
import socket try: socket.socket().connect(("invalid", 80)) except Exception as e: print("Socket error:", e)
100. گرفتن تمام خطاها و ادامه کار
for x in [1, 0, "x"]: try: print(10 / x) except Exception as e: print("Error:", e)
فصل کلاسها و شیءگرایی (OOP)
بخش ۱ – مفاهیم پایه کلاس (سوال ۱ تا ۲۰)
1. تعریف یک کلاس ساده
2. ایجاد شی از کلاس
3. افزودن ویژگی به شی بعد از ایجاد
4. متد سازنده init
5. ایجاد دو شی با مقادیر متفاوت
6. افزودن متد به کلاس
7. متد با استفاده از ویژگی داخلی
8. تغییر ویژگی بعد از ساخت شی
9. حذف ویژگی با del
10. متد با پارامتر ورودی
11. استفاده از self برای دسترسی به ویژگیها
12. ایجاد ویژگی پیشفرض
13. نماstrار شی با __str__
14. استفاده از __repr__ برای نreprی
15. مقایسه اinit_eq__
16. شمارش تعداد اشیای ساinit
17. ویژگی کلاس در مقابل ویژگی شی
18. پاک کردن ویژگی کلاس
19. استفاده از docstring در کلاس
20. بررسی نوع شی با isinstance
بخش ۱ – مفاهیم پایه کلاس (سوال ۱ تا ۲۰)
1. تعریف یک کلاس ساده
class Person: pass 2. ایجاد شی از کلاس
class Person: pass p = Person() 3. افزودن ویژگی به شی بعد از ایجاد
class Person: pass p = Person() p.name = "Ali" 4. متد سازنده init
class Person: def __init__(self, name): self.name = name 5. ایجاد دو شی با مقادیر متفاوت
p1 = Person("Ali") p2 = Person("Sara") 6. افزودن متد به کلاس
class Person: def say_hello(self): print("Hello!") 7. متد با استفاده از ویژگی داخلی
class Person: def __init__(self, name): self.name = name def greet(self): print(f"Hello {self.name}") 8. تغییر ویژگی بعد از ساخت شی
p = Person("Ali") p.name = "Reza" 9. حذف ویژگی با del
del p.name 10. متد با پارامتر ورودی
class Calculator: def add(self, x, y): return x + y 11. استفاده از self برای دسترسی به ویژگیها
class Counter: def __init__(self): self.count = 0 def inc(self): self.count += 1 12. ایجاد ویژگی پیشفرض
class Person: def __init__(self, name="Unknown"): self.name = name 13. نماstrار شی با __str__
class Person: def __init__(self, name): self.name = name def __str__(self): return f"Person({self.name})" 14. استفاده از __repr__ برای نreprی
class Person: def __repr__(self): return "Person object" 15. مقایسه اinit_eq__
class Person: def __init__(self, name): self.name = name def __eq__(self, other): return self.name == other.name 16. شمارش تعداد اشیای ساinit
class Person: count = 0 def __init__(self): Person.count += 1 17. ویژگی کلاس در مقابل ویژگی شی
class A: x = 10 a1 = A() a2 = A() a1.x = 20 18. پاک کردن ویژگی کلاس
del A.x 19. استفاده از docstring در کلاس
class Person: """This class represents a person.""" 20. بررسی نوع شی با isinstance
isinstance(p, Person)21. متد کلاس (@classmethod)
22. استفاده از متد کلاس برای ساخت شی
23. متد استاتیک (@staticmethod)
24. تفاوت متد استاتیک و کلاس
25. ویژگی خصوصی با دو خط زیر
26. متد خصوصی با دو خط زیر
27. دسترسی به ویژگی خصوصی با name mangling
28. ویژگی فقط خواندنی با property
29. ویژگی خواندنی/نوشتنی با setter
30. حذف ویژگی با deleter
31. شمارش اشیا با متد کلاس
32. اضافه کردن ویژگی به صورت داینامیک
33. گرفتن مقدار ویژگی به صورت داینامیک
34. بررسی وجود ویژگی
35. حذف ویژگی داینامیک
36.dirه از متد __dir__
37. ذخیرهسازی همه اشیا در یک لیست
38. شمdictویژdict __dict__
39. تغییر ویژگی کلاس در تمام اشیا
40. تعریف متدهای متعدد برای یک کلاس
بخش ۳ – وراثت و چندریختی (سوال 41 تا 60)
41. تعریف کلاس فرزند
42. وراثت سازنده والد
43. متد override در کلاس فرزند
44. استفاده از super() برای فراخوانی متد والد
45. چندریختی با متد مشترک
46. چند وراثتی
47. ترتیب جستجوی متدها (MRO)
48. متد کلاس والد در چند وراثتی
49. کلاس انتزاعی با abc
50. پیادهسازی کلاس انتزاعی
51. استفاده از متدهای انتزاعی در چندریختی
52. جلوگیری از وراثت باinit
53. ارثبرbasesای کلاس والد
54. اضافه کردن ویژگی به والد و دیدن در فرزند
55. تغییر ویژگی کلاس والد از فرزند
56. استفاده از isinstance برای بررسی نوع فرزند
57. استفاده از issubclass برای بررسی وراثت
58. چندریختی با __str__
59. سازنده خالی در کلاس فرزند
60. متد والد بدون تغییر در فرزند
بخش ۴ – ویژگیهای پیشرفته (سوال 61 add61. استفاده از متدهinitی __add__
62. متد جادویی __len__
63. متد جادویی __getitem__
64. متد جادویی __setitem__
class MyClass: count = 0 @classmethod def inc(cls): cls.count += 1 22. استفاده از متد کلاس برای ساخت شی
class Person: def __init__(self, name): self.name = name @classmethod def from_list(cls, names): return [cls(name) for name in names] 23. متد استاتیک (@staticmethod)
class Math: @staticmethod def add(a, b): return a + b 24. تفاوت متد استاتیک و کلاس
Math.add(2, 3) # بدون نیاز به self یا cls 25. ویژگی خصوصی با دو خط زیر
class Person: def __init__(self, name): self.__name = name 26. متد خصوصی با دو خط زیر
class Person: def __secret(self): print("Hidden") 27. دسترسی به ویژگی خصوصی با name mangling
p._Person__name 28. ویژگی فقط خواندنی با property
class Person: def __init__(self, age): self._age = age @property def age(self): return self._age 29. ویژگی خواندنی/نوشتنی با setter
class Person: @property def name(self): return self._name @name.setter def name(self, value): self._name = value 30. حذف ویژگی با deleter
class Person: @property def name(self): return self._name @name.deleter def name(self): del self._name 31. شمارش اشیا با متد کلاس
class Person: count = 0 def __init__(self): Person.count += 1 @classmethod def total(cls): return cls.count 32. اضافه کردن ویژگی به صورت داینامیک
p = Person() setattr(p, "age", 25) 33. گرفتن مقدار ویژگی به صورت داینامیک
getattr(p, "age") 34. بررسی وجود ویژگی
hasattr(p, "age") 35. حذف ویژگی داینامیک
delattr(p, "age") 36.dirه از متد __dir__
dir(p) 37. ذخیرهسازی همه اشیا در یک لیست
class Person: all_objects = [] def __init__(self): Person.all_objects.append(self) 38. شمdictویژdict __dict__
p.__dict__ 39. تغییر ویژگی کلاس در تمام اشیا
Person.count = 100 40. تعریف متدهای متعدد برای یک کلاس
class Person: def greet(self): pass def walk(self): pass بخش ۳ – وراثت و چندریختی (سوال 41 تا 60)
41. تعریف کلاس فرزند
class Animal: pass class Dog(Animal): pass 42. وراثت سازنده والد
class Animal: def __init__(self, name): self.name = name class Dog(Animal): def __init__(self, name, breed): super().__init__(name) self.breed = breed 43. متد override در کلاس فرزند
class Dog(Animal): def speak(self): print("Woof!") 44. استفاده از super() برای فراخوانی متد والد
class Dog(Animal): def speak(self): super().speak() print("Woof!") 45. چندریختی با متد مشترک
for animal in [Dog(), Cat()]: animal.speak() 46. چند وراثتی
class A: pass class B: pass class C(A, B): pass 47. ترتیب جستجوی متدها (MRO)
C.mro() 48. متد کلاس والد در چند وراثتی
super(A, self).method() 49. کلاس انتزاعی با abc
from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod def area(self): pass 50. پیادهسازی کلاس انتزاعی
class Circle(Shape): def area(self): return 3.14 * r * r 51. استفاده از متدهای انتزاعی در چندریختی
shapes = [Circle(), Square()] for s in shapes: print(s.area()) 52. جلوگیری از وراثت باinit
class Final(type): def __init__(cls, name, bases, attrs): for base in bases: if isinstance(base, Final): raise TypeError("Can't inherit") 53. ارثبرbasesای کلاس والد
print(Dog.__bases__) 54. اضافه کردن ویژگی به والد و دیدن در فرزند
Animal.legs = 4 55. تغییر ویژگی کلاس والد از فرزند
Dog.legs = 3 56. استفاده از isinstance برای بررسی نوع فرزند
isinstance(Dog(), Animal) 57. استفاده از issubclass برای بررسی وراثت
issubclass(Dog, Animal) 58. چندریختی با __str__
print([str(obj) for obj in [Dog(), Cat()]]) 59. سازنده خالی در کلاس فرزند
class Dog(Animal): pass 60. متد والد بدون تغییر در فرزند
Dog().parent_method() بخش ۴ – ویژگیهای پیشرفته (سوال 61 add61. استفاده از متدهinitی __add__
class Vector: def __init__(self, x): self.x = x def __add__(self, other): return Vector(self.x + other.x) 62. متد جادویی __len__
def __len__(self): return len(self.items) 63. متد جادویی __getitem__
def __getitem__(self, index): return self.data[index] 64. متد جادویی __setitem__
def __setitem__(self, index, value): self.data[index] = value 65. متد جادiterer__
def __iter__(self): return iter(self.data) 66. متدcall__call__
def __call__(self): print("Object called") 67.enterیی exit_ و __exit__ برای context manager
class MyFile: def __enter__(self): pass def __exit__(self, exc_type, exc, tb): pass 68. استفاده از context manager در کلاس
with MyFile() as f: pass 69. متد جادویی __delرای تخریب شی
def __del__(self): print("Deleted") 70. ذخیره و بارگذاری شی با pickle
import pickle pickle.dump(obj, open("obj.pkl", "wb")) 71. بارگذاری شی pickle شده
obj = pickle.load(open("obj.pkl", "rb")) 72. استفاده از اسلاتها برای صرفهجslots
class Person: __slots__ = ['name', 'age'] 73. contains_contains__
def __contains__(self, item): return item in self.data 74. متد جادویی __bool__
def __bool__(self): return bool(self.value) 75. متد جادویی __hash__
def __hash__(self): return hash(self.name) 76. متد جادویی __lt__ برای مرتبسازی
def __lt__(self, other): return self.value < other.value 77. initاز کلاس به عنوان دکوراتور
class MyDeco: def __init__(self, func): self.func = func def __call__(self, *a, **kw): return self.func(*a, **kw) 78. کلاس با متدهای classmethod و staticmethod ترکیبی
class Utility: @classmethod def cls_method(cls): pass @staticmethod def static_method(): pass 79. استفاده از کلاس به عنوان context manager پیشرفته
with Utility() as u: pass 80. اجرای خودکار متد در سازنده
class AutoRun: def __init__(self): self.run() بخش ۵ – ترکیبی و کاربردی (سوال 81 تاinit. مدلسازی بانک با کلاس حساب
class BankAccount: def __init__(self, balance=0): self.balance = balance def deposit(self, amount): self.balance += amount 82. افزودن برداشت به کلاس حساب
def withdraw(self, amount): if amount <= self.balance: self.balance -= amount 83. کلاس مدیریت دانشجو
class Student: def __init__(self, name, grades=[]): self.name = name self.grades = grades 84. افزودن متد معدلگیری
def average(self): return sum(self.grades) / len(self.grades) 85. سیستم لاگین ساده
class User: def __init__(self, username, password): self.username = username self.password = password def check_password(self, pwd): return self.password == pwd 86. کلاس ماشین با متد رانندگی
class Car: def __init__(self, model): self.model = model def drive(self): print(f"{self.model} is driving") 87. کلاس کتابخانه با افزودن کتاب
class Library: def __init__(self): self.books = [] def add_book(self, book): self.books.append(book) 88. حذف کتاب از کتابخانه
def remove_book(self, book): self.books.remove(book) 89. سیستم سفارش آنلاین با کلاس Order
class Order: def __init__(self, items): self.items = items def total(self): return sum(price for _, price in self.items) 90. اضافه کردن تخفیف به سفارش
def apply_discount(self, percent): return self.total() * (1 - percent/100) 91. کلاس تایمر با time
import time class Timer: def start(self): self.start_time = time.time() def stop(self): print(time.time() - self.start_time) 92. کلاس add با عملگر +
class Counter: def __init__(self, value): self.value = value def __add__(self, other): return Counter(self.value + other.value) 93. کلاس Logger که به فایل مینویسد
class Logger: def log(self, msg): with open("log.txt", "a") as f: f.write(msg + "\n") 94. کلاس EmailSender
class EmailSender: def send(self, to, subject, body): print(f"Sending to {to}: {subject}") 95. کلاس با ویژگی محاسبهشونده
class Rectangle: def __init__(self, w, h): self.w, self.h = w, h @property def area(self): return self.w * self.h 96. کلاس ذخیره داده JSON
import json class DataStore: def save(self, data): json.dump(data, open("data.json", "w")) 97. کلاس بارگذاری داده JSON
def load(self): return json.load(open("data.json")) 98. کلاس مدیریت تنظیمات
class Config: settings = {} @classmethod def set(cls, key, value): cls.settings[key] = value 99. کلاس Singleton
class Singleton: _instance = None def __new__(cls): if not cls._instance: cls._instance = super().__new__(cls) return cls._instance 100. کلاس Factory برای ساخت اشیا
class Factory: @staticmethod def create(cls, *args, **kwargs): return cls(*args, **kwargs)فصل ماژولها و کتابخانهها
1. ساخت یک ماژول ساده
2. ایمپورت ماژول
3. ایمپورت با نام مستعار
4. ایمپورت فقط یک تابع
5. ایمپورت چند تابع
6. استفاده از * برای ایمپورت همه
7. مکان پیشفرض جستجوی ماژولها
8. اضافه کردن مسیر جدید به sys.path
9. استفاده از name برای شناسایی اجرای مستقیم
10. بارگذاری دوباره ماژول
11. تعریف متغیر در ماژول و استفاده در برنامه اصلی
12. تغییر متغیر ماژول از برنامه اصلی
13. ایجاد ماژول با کلاس
14. استفاده از کلاس ماژول
15. استفاده از تابع help برای ماژول
16. دیدن محل فایل ماژول
17. ساخت ماژول با کد اجرای مستقیم
18. استفاده از dir() برای لیست توابع ماژول
19. ماژول با داکاسترینگ
20. استفاده از as برای تغییر نام ماژول وارد شده
بخش ۲ – کتابخانههای استاندارد پایتون (سوال 21 تا 50)
21. استفاده از math برای عملیات ریاضی
22. استفاده از random برای تولید عدد تصادفی
23. انتخاب تصادفی از لیست
24. استفاده از datetime برای تاریخ و زمان
25. تبدیل رشته به تاریخ
26. کار با os برای دسترسی به فایلها
27. ساخت پوشه جدید با os
28. حذف فایل با os
29. استفاده از sys برای دریافت آرگومانها
30. استفاده از json برای ذخیرهسازی داده
31. بارگذاری داده JSON
32. استفاده از csv برای نوشتن فایل CSV
33. خواندن فایل CSV
34. استفاده از shutil برای کپی فایل
35. استفاده از glob برای یافتن فایلها
36. استفاده از pathlib برای مدیریت مسیرها
37. استفاده از statistics برای محاسبه میانگین
38. فشردهسازی فایل با zipfile
39. استخراج فایل zip
40. استفاده از time برای محاسبه زمان اجرا
41. استفاده از itertools برای تولید ترکیبها
42. استفاده از functools برای دکوراتور cache
43. استفاده از operator برای عملیات سریعتر
44. استفاده از collections.Counter
45. استفاده از namedtuple
46. استفاده از defaultdict
47. استفاده از re برای جستجوی الگو
48. استفاده از hashlib برای هش کردن
49. استفاده از tempfile برای ساخت فایل موقت
50. استفاده از uuid برای تولید شناسه یکتا
import uuid print(uuid.uuid4())
1. ساخت یک ماژول ساده
# file: mymodule.py def greet(): print("Hello from module!") 2. ایمپورت ماژول
import mymodule mymodule.greet() 3. ایمپورت با نام مستعار
import mymodule as mm mm.greet() 4. ایمپورت فقط یک تابع
from mymodule import greet greet() 5. ایمپورت چند تابع
from mymodule import greet, another_func 6. استفاده از * برای ایمپورت همه
from mymodule import * 7. مکان پیشفرض جستجوی ماژولها
import sys print(sys.path) 8. اضافه کردن مسیر جدید به sys.path
sys.path.append("/path/to/module") 9. استفاده از name برای شناسایی اجرای مستقیم
if __name__ == "__main__": greet() 10. بارگذاری دوباره ماژول
import importlib importlib.reload(mymodule) 11. تعریف متغیر در ماژول و استفاده در برنامه اصلی
# mymodule.py x = 10 12. تغییر متغیر ماژول از برنامه اصلی
mymodule.x = 20 13. ایجاد ماژول با کلاس
# mymodule.py class MyClass: pass 14. استفاده از کلاس ماژول
obj = mymodule.MyClass() 15. استفاده از تابع help برای ماژول
help(mymodule) 16. دیدن محل فایل ماژول
print(mymodule.__file__) 17. ساخت ماژول با کد اجرای مستقیم
# mymodule.py if __name__ == "__main__": print("Running module directly") 18. استفاده از dir() برای لیست توابع ماژول
dir(mymodule) 19. ماژول با داکاسترینگ
"""My custom module for greeting users""" 20. استفاده از as برای تغییر نام ماژول وارد شده
import math as m print(m.sqrt(9)) بخش ۲ – کتابخانههای استاندارد پایتون (سوال 21 تا 50)
21. استفاده از math برای عملیات ریاضی
import math print(math.sqrt(16)) 22. استفاده از random برای تولید عدد تصادفی
import random print(random.randint(1, 10)) 23. انتخاب تصادفی از لیست
random.choice([1, 2, 3]) 24. استفاده از datetime برای تاریخ و زمان
import datetime print(datetime.datetime.now()) 25. تبدیل رشته به تاریخ
datetime.datetime.strptime("2025-08-14", "%Y-%m-%d") 26. کار با os برای دسترسی به فایلها
import os print(os.listdir(".")) 27. ساخت پوشه جدید با os
os.mkdir("new_folder") 28. حذف فایل با os
os.remove("file.txt") 29. استفاده از sys برای دریافت آرگومانها
import sys print(sys.argv) 30. استفاده از json برای ذخیرهسازی داده
import json json.dump({"name": "Ali"}, open("data.json", "w")) 31. بارگذاری داده JSON
data = json.load(open("data.json")) 32. استفاده از csv برای نوشتن فایل CSV
import csv with open("data.csv", "w") as f: writer = csv.writer(f) writer.writerow(["name", "age"]) 33. خواندن فایل CSV
with open("data.csv") as f: reader = csv.reader(f) for row in reader: print(row) 34. استفاده از shutil برای کپی فایل
import shutil shutil.copy("data.csv", "backup.csv") 35. استفاده از glob برای یافتن فایلها
import glob print(glob.glob("*.py")) 36. استفاده از pathlib برای مدیریت مسیرها
from pathlib import Path p = Path("test.txt") p.write_text("Hello") 37. استفاده از statistics برای محاسبه میانگین
import statistics statistics.mean([1, 2, 3]) 38. فشردهسازی فایل با zipfile
import zipfile with zipfile.ZipFile("archive.zip", "w") as z: z.write("data.csv") 39. استخراج فایل zip
with zipfile.ZipFile("archive.zip", "r") as z: z.extractall("folder") 40. استفاده از time برای محاسبه زمان اجرا
import time start = time.time() time.sleep(1) print(time.time() - start) 41. استفاده از itertools برای تولید ترکیبها
import itertools list(itertools.combinations([1,2,3], 2)) 42. استفاده از functools برای دکوراتور cache
from functools import lru_cache @lru_cache() def slow(): pass 43. استفاده از operator برای عملیات سریعتر
import operator operator.add(2, 3) 44. استفاده از collections.Counter
from collections import Counter Counter("banana") 45. استفاده از namedtuple
from collections import namedtuple Point = namedtuple("Point", "x y") p = Point(1, 2) 46. استفاده از defaultdict
from collections import defaultdict d = defaultdict(int) 47. استفاده از re برای جستجوی الگو
import re re.findall(r"\d+", "abc123") 48. استفاده از hashlib برای هش کردن
import hashlib hashlib.sha256(b"test").hexdigest() 49. استفاده از tempfile برای ساخت فایل موقت
import tempfile with tempfile.NamedTemporaryFile() as tmp: print(tmp.name) 50. استفاده از uuid برای تولید شناسه یکتا
import uuid print(uuid.uuid4())
51. نصب کتابخانه با pip
52. بررسی نسخه کتابخانه نصبشده
53. بهروزرسانی کتابخانه
54. استفاده از requests برای گرفتن یک صفحه وب
55. ارسال داده با POST در requests
56. دانلود فایل با requests
57. استفاده از pandas برای خواندن CSV
58. استفاده از pandas برای ذخیره CSV
59. استفاده از numpy برای آرایهها
60. استفاده از numpy برای عملیات برداری
61. استفاده از matplotlib برای ترسیم نمودار
62. استفاده از seaborn برای گراف پیشرفته
63. استفاده از openpyxl برای کار با اکسل
64. استفاده از Pillow برای کار با تصویر
65. تغییر اندازه تصویر با Pillow
66. ذخیره تصویر تغییر یافته
67. استفاده از moviepy برای ویرایش ویدئو
68. استفاده از tqdm برای نوار پیشرفت
69. استفاده از rich برای چاپ رنگی
70. استفاده از pyttsx3 برای تبدیل متن به گفتار
71. استفاده از SpeechRecognition برای تبدیل گفتار به متن
72. استفاده از beautifulsoup برای استخراج داده HTML
73. پیدا کردن تگها با BeautifulSoup
74. استفاده از flask برای ساخت API
75. اجرای سرور Flask
بخش ۴ – ساخت پکیج اختصاصی (سوال 76 تا 100)
76. ساخت پوشه پکیج
77. محتوای init.py
78. ساخت یک تابع در module1.py
79. ایمپورت پکیج در برنامه اصلی
80. ساخت پکیج چند سطحی
81. استفاده از setup.py برای نصب پکیج
82. نصب پکیج محلی
83. ساخت فایل README برای پکیج
84. استفاده از requirements.txt
85. نصب همه وابستگیها از فایل
86. استفاده از virtualenv برای محیط مجازی
87. فعالسازی محیط مجازی (ویندوز)
88. فعالسازی محیط مجازی (لینوکس/مک)
89. خروج از محیط مجازی
90. استفاده از poetry برای مدیریت پکیجها
91. اضافه کردن پکیج با poetry
92. قفل کردن نسخههای پکیج
93. نصب نسخه دقیق پکیج
94. حذف پکیج
95. جستجوی پکیج در PyPI
96. استفاده از importlib.metadata برای نسخه پکیج
97. لیست کردن همه پکیجها
98. نصب پکیج از GitHub
99. استفاده از بسته zip نصبشده
pip install mypackage.zip
100. ساخت و آپلود پکیج در PyPI
python setup.py sdist twine upload dist/*
pip install requests 52. بررسی نسخه کتابخانه نصبشده
pip show requests 53. بهروزرسانی کتابخانه
pip install --upgrade requests 54. استفاده از requests برای گرفتن یک صفحه وب
import requests r = requests.get("https://example.com") print(r.text) 55. ارسال داده با POST در requests
requests.post("https://example.com", data={"key": "value"}) 56. دانلود فایل با requests
r = requests.get("https://example.com/file.zip") open("file.zip", "wb").write(r.content) 57. استفاده از pandas برای خواندن CSV
import pandas as pd df = pd.read_csv("data.csv") print(df.head()) 58. استفاده از pandas برای ذخیره CSV
df.to_csv("output.csv", index=False) 59. استفاده از numpy برای آرایهها
import numpy as np arr = np.array([1,2,3]) 60. استفاده از numpy برای عملیات برداری
arr * 2 61. استفاده از matplotlib برای ترسیم نمودار
import matplotlib.pyplot as plt plt.plot([1,2,3], [4,5,6]) plt.show() 62. استفاده از seaborn برای گراف پیشرفته
import seaborn as sns sns.histplot([1,2,3,4]) 63. استفاده از openpyxl برای کار با اکسل
from openpyxl import Workbook wb = Workbook() ws = wb.active ws["A1"] = "Hello" wb.save("file.xlsx") 64. استفاده از Pillow برای کار با تصویر
from PIL import Image img = Image.open("pic.jpg") img.show() 65. تغییر اندازه تصویر با Pillow
img = img.resize((100, 100)) 66. ذخیره تصویر تغییر یافته
img.save("small.jpg") 67. استفاده از moviepy برای ویرایش ویدئو
from moviepy.editor import VideoFileClip clip = VideoFileClip("video.mp4") clip.subclip(0, 10).write_videofile("short.mp4") 68. استفاده از tqdm برای نوار پیشرفت
from tqdm import tqdm for i in tqdm(range(100)): pass 69. استفاده از rich برای چاپ رنگی
from rich import print print("[bold red]Error[/bold red]") 70. استفاده از pyttsx3 برای تبدیل متن به گفتار
import pyttsx3 engine = pyttsx3.init() engine.say("Hello") engine.runAndWait() 71. استفاده از SpeechRecognition برای تبدیل گفتار به متن
import speech_recognition as sr 72. استفاده از beautifulsoup برای استخراج داده HTML
from bs4 import BeautifulSoup soup = BeautifulSoup("<p>Hello</p>", "html.parser") 73. پیدا کردن تگها با BeautifulSoup
soup.find("p").text 74. استفاده از flask برای ساخت API
from flask import Flask app = Flask(__name__) @app.route("/") def home(): return "Hello" 75. اجرای سرور Flask
flask run بخش ۴ – ساخت پکیج اختصاصی (سوال 76 تا 100)
76. ساخت پوشه پکیج
my_package/ __init__.py module1.py 77. محتوای init.py
from .module1 import func 78. ساخت یک تابع در module1.py
def func(): print("From module1") 79. ایمپورت پکیج در برنامه اصلی
import my_package my_package.func() 80. ساخت پکیج چند سطحی
my_package/ sub_package/ __init__.py 81. استفاده از setup.py برای نصب پکیج
from setuptools import setup, find_packages setup(name="my_package", packages=find_packages()) 82. نصب پکیج محلی
pip install . 83. ساخت فایل README برای پکیج
# My Package This package does amazing things. 84. استفاده از requirements.txt
requests pandas 85. نصب همه وابستگیها از فایل
pip install -r requirements.txt 86. استفاده از virtualenv برای محیط مجازی
python -m venv env 87. فعالسازی محیط مجازی (ویندوز)
env\Scripts\activate 88. فعالسازی محیط مجازی (لینوکس/مک)
source env/bin/activate 89. خروج از محیط مجازی
deactivate 90. استفاده از poetry برای مدیریت پکیجها
poetry init 91. اضافه کردن پکیج با poetry
poetry add requests 92. قفل کردن نسخههای پکیج
pip freeze > requirements.txt 93. نصب نسخه دقیق پکیج
pip install requests==2.28.1 94. حذف پکیج
pip uninstall requests 95. جستجوی پکیج در PyPI
pip search flask 96. استفاده از importlib.metadata برای نسخه پکیج
import importlib.metadata print(importlib.metadata.version("requests")) 97. لیست کردن همه پکیجها
pip list 98. نصب پکیج از GitHub
pip install git+https://github.com/user/repo.git 99. استفاده از بسته zip نصبشده
pip install mypackage.zip
100. ساخت و آپلود پکیج در PyPI
python setup.py sdist twine upload dist/*
فصل کار با دادهها (Data Manipulation)
1. شمارش تعداد کاراکتر در رشته
2. تغییر به حروف بزرگ
3. تغییر به حروف کوچک
4. اولین حرف بزرگ هر کلمه
5. حذف فاصلههای اضافی ابتدا و انتها
6. جایگزینی یک کلمه در متن
7. شمارش تعداد یک کلمه
8. بررسی وجود یک کلمه
9. بررسی شروع شدن رشته با کلمه خاص
10. بررسی پایان یافتن رشته با کلمه خاص
11. تقسیم رشته بر اساس فاصله
12. ترکیب لیست رشتهها با جداکننده
13. پیدا کردن موقعیت اولین occurrence
14. پیدا کردن موقعیت آخرین occurrence
15. بررسی فقط عدد بودن رشته
16. بررسی فقط حروف بودن رشته
17. بررسی ترکیب حروف و اعداد
18. حذف همه فاصلهها در متن
19. برعکس کردن متن
20. شمارش تعداد حروف یونیک در متن
1. شمارش تعداد کاراکتر در رشته
text = "Python" print(len(text)) 2. تغییر به حروف بزرگ
print("python".upper()) 3. تغییر به حروف کوچک
print("PYTHON".lower()) 4. اولین حرف بزرگ هر کلمه
print("hello world".title()) 5. حذف فاصلههای اضافی ابتدا و انتها
print(" hello ".strip()) 6. جایگزینی یک کلمه در متن
print("I like Java".replace("Java", "Python")) 7. شمارش تعداد یک کلمه
print("python python java".count("python")) 8. بررسی وجود یک کلمه
print("python" in "I like python programming") 9. بررسی شروع شدن رشته با کلمه خاص
print("python programming".startswith("python")) 10. بررسی پایان یافتن رشته با کلمه خاص
print("python programming".endswith("programming")) 11. تقسیم رشته بر اساس فاصله
print("a b c".split()) 12. ترکیب لیست رشتهها با جداکننده
print("-".join(["2025", "08", "14"])) 13. پیدا کردن موقعیت اولین occurrence
print("hello python".find("python")) 14. پیدا کردن موقعیت آخرین occurrence
print("python python".rfind("python")) 15. بررسی فقط عدد بودن رشته
print("12345".isdigit()) 16. بررسی فقط حروف بودن رشته
print("Hello".isalpha()) 17. بررسی ترکیب حروف و اعداد
print("Hello123".isalnum()) 18. حذف همه فاصلهها در متن
print("a b c".replace(" ", "")) 19. برعکس کردن متن
print("python"[::-1]) 20. شمارش تعداد حروف یونیک در متن
print(len(set("banana")))21. مجموع یک لیست عددی
print(sum([1, 2, 3, 4]))
22. میانگین یک لیست عددی
nums = [1, 2, 3, 4]
print(sum(nums) / len(nums))
23. بزرگترین عدد در لیست
print(max([3, 8, 5]))
24. کوچکترین عدد در لیست
print(min([3, 8, 5]))
25. پیدا کردن قدرمطلق یک عدد
print(abs(-10))
26. گرد کردن به عدد صحیح
print(round(4.7))
27. گرد کردن با تعداد اعشار خاص
print(round(3.14159, 2))
28. توان رساندن عدد
print(pow(2, 3))
29. ریشه دوم عدد
import math
print(math.sqrt(16))
30. محاسبه فاکتوریل
import math
print(math.factorial(5))
31. پیدا کردن عدد تصادفی بین دو عدد
import random
print(random.randint(1, 10))
32. انتخاب تصادفی یک عضو از لیست
import random
print(random.choice(["apple", "banana", "cherry"]))
33. مرتبسازی لیست عددی
nums = [5, 2, 9, 1]
nums.sort()
print(nums)
34. مرتبسازی نزولی
nums = [5, 2, 9, 1]
nums.sort(reverse=True)
print(nums)
35. محاسبه مجموع مربعات اعداد
nums = [1, 2, 3]
print(sum(x**2 for x in nums))
36. پیدا کردن مد (mode) دادهها
from statistics import mode
print(mode([1, 2, 2, 3]))
37. پیدا کردن میانه (median)
from statistics import median
print(median([1, 3, 2]))
38. پیدا کردن واریانس
from statistics import variance
print(variance([2, 4, 6, 8]))
39. پیدا کردن انحراف معیار
from statistics import stdev
print(stdev([2, 4, 6, 8]))
40. نرمالسازی دادهها به بازه 0 تا 1
nums = [10, 20, 30]
min_val, max_val = min(nums), max(nums)
normalized = [(x - min_val) / (max_val - min_val) for x in nums]
print(normalized)
---
بخش ۳ – پردازش لیستها و دیکشنریها (سوال 41 تا 60)
41. حذف تکراریها از لیست
nums = [1, 2, 2, 3]
print(list(set(nums)))
42. شمارش عناصر با Counter
from collections import Counter
print(Counter(["a", "b", "a", "c"]))
43. مرتبسازی دیکشنری بر اساس کلید
data = {"b": 2, "a": 1}
print(dict(sorted(data.items())))
44. مرتبسازی دیکشنری بر اساس مقدار
data = {"b": 2, "a": 1}
print(dict(sorted(data.items(), key=lambda x: x[1])))
45. ترکیب دو لیست به صورت جفت
names = ["Ali", "Sara"]
ages = [25, 30]
print(list(zip(names, ages)))
46. تبدیل دو لیست به دیکشنری
names = ["Ali", "Sara"]
ages = [25, 30]
print(dict(zip(names, ages)))
47. فیلتر عناصر بزرگتر از 10
nums = [5, 12, 7, 20]
print(list(filter(lambda x: x > 10, nums)))
48. اعمال تابع روی همه عناصر
nums = [1, 2, 3]
print(list(map(lambda x: x**2, nums)))
49. ادغام دو دیکشنری
a = {"x": 1}
b = {"y": 2}
print({a, b})
50. دیکشنری با مقادیر پیشفرض
from collections import defaultdict
d = defaultdict(int)
d["apple"] += 1
print(d)
51. حذف مقدار None از دیکشنری
data = {"a": 1, "b": None}
print({k: v for k, v in data.items() if v is not None})
52. پیدا کردن بیشترین مقدار دیکشنری
data = {"a": 10, "b": 5}
print(max(data, key=data.get))
53. گروهبندی دادهها با groupby
from itertools import groupby
data = sorted(["apple", "apricot", "banana"])
for k, g in groupby(data, key=lambda x: x[0]):
print(k, list(g))
54. معکوس کردن کلید و مقدار دیکشنری
data = {"a": 1, "b": 2}
print({v: k for k, v in data.items()})
55. بررسی وجود مقدار خاص در دیکشنری
data = {"a": 1, "b": 2}
print(2 in data.values())
56. ایجاد لیست از 1 تا 10
print(list(range(1, 11)))
57. ضرب همه عناصر لیست
import math
print(math.prod([1, 2, 3, 4]))
58. لیست comprehension برای توان دو
print([x**2 for x in range(5)])
59. لیست comprehension با شرط
print([x for x in range(10) if x % 2 == 0])
60. صاف کردن لیست تو در تو
nested = [[1, 2], [3, 4]]
print([x for sub in nested for x in sub])
---
بخش ۴ – پردازش دادههای فایل و فرمتها (سوال 61 تا 80)
61. خواندن CSV به لیست دیکشنریها
import csv
with open("data.csv") as f:
reader = csv.DictReader(f)
print(list(reader))
62. نوشتن دیکشنریها در CSV
import csv
rows = [{"name": "Ali", "age": 25}, {"name": "Sara", "age": 30}]
with open("data.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "age"])
writer.writeheader()
writer.writerows(rows)
63. خواندن JSON
import json
with open("data.json") as f:
print(json.load(f))
64. نوشتن JSON با indent
import json
data = {"name": "Ali", "age": 25}
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
print(sum([1, 2, 3, 4]))
22. میانگین یک لیست عددی
nums = [1, 2, 3, 4]
print(sum(nums) / len(nums))
23. بزرگترین عدد در لیست
print(max([3, 8, 5]))
24. کوچکترین عدد در لیست
print(min([3, 8, 5]))
25. پیدا کردن قدرمطلق یک عدد
print(abs(-10))
26. گرد کردن به عدد صحیح
print(round(4.7))
27. گرد کردن با تعداد اعشار خاص
print(round(3.14159, 2))
28. توان رساندن عدد
print(pow(2, 3))
29. ریشه دوم عدد
import math
print(math.sqrt(16))
30. محاسبه فاکتوریل
import math
print(math.factorial(5))
31. پیدا کردن عدد تصادفی بین دو عدد
import random
print(random.randint(1, 10))
32. انتخاب تصادفی یک عضو از لیست
import random
print(random.choice(["apple", "banana", "cherry"]))
33. مرتبسازی لیست عددی
nums = [5, 2, 9, 1]
nums.sort()
print(nums)
34. مرتبسازی نزولی
nums = [5, 2, 9, 1]
nums.sort(reverse=True)
print(nums)
35. محاسبه مجموع مربعات اعداد
nums = [1, 2, 3]
print(sum(x**2 for x in nums))
36. پیدا کردن مد (mode) دادهها
from statistics import mode
print(mode([1, 2, 2, 3]))
37. پیدا کردن میانه (median)
from statistics import median
print(median([1, 3, 2]))
38. پیدا کردن واریانس
from statistics import variance
print(variance([2, 4, 6, 8]))
39. پیدا کردن انحراف معیار
from statistics import stdev
print(stdev([2, 4, 6, 8]))
40. نرمالسازی دادهها به بازه 0 تا 1
nums = [10, 20, 30]
min_val, max_val = min(nums), max(nums)
normalized = [(x - min_val) / (max_val - min_val) for x in nums]
print(normalized)
---
بخش ۳ – پردازش لیستها و دیکشنریها (سوال 41 تا 60)
41. حذف تکراریها از لیست
nums = [1, 2, 2, 3]
print(list(set(nums)))
42. شمارش عناصر با Counter
from collections import Counter
print(Counter(["a", "b", "a", "c"]))
43. مرتبسازی دیکشنری بر اساس کلید
data = {"b": 2, "a": 1}
print(dict(sorted(data.items())))
44. مرتبسازی دیکشنری بر اساس مقدار
data = {"b": 2, "a": 1}
print(dict(sorted(data.items(), key=lambda x: x[1])))
45. ترکیب دو لیست به صورت جفت
names = ["Ali", "Sara"]
ages = [25, 30]
print(list(zip(names, ages)))
46. تبدیل دو لیست به دیکشنری
names = ["Ali", "Sara"]
ages = [25, 30]
print(dict(zip(names, ages)))
47. فیلتر عناصر بزرگتر از 10
nums = [5, 12, 7, 20]
print(list(filter(lambda x: x > 10, nums)))
48. اعمال تابع روی همه عناصر
nums = [1, 2, 3]
print(list(map(lambda x: x**2, nums)))
49. ادغام دو دیکشنری
a = {"x": 1}
b = {"y": 2}
print({a, b})
50. دیکشنری با مقادیر پیشفرض
from collections import defaultdict
d = defaultdict(int)
d["apple"] += 1
print(d)
51. حذف مقدار None از دیکشنری
data = {"a": 1, "b": None}
print({k: v for k, v in data.items() if v is not None})
52. پیدا کردن بیشترین مقدار دیکشنری
data = {"a": 10, "b": 5}
print(max(data, key=data.get))
53. گروهبندی دادهها با groupby
from itertools import groupby
data = sorted(["apple", "apricot", "banana"])
for k, g in groupby(data, key=lambda x: x[0]):
print(k, list(g))
54. معکوس کردن کلید و مقدار دیکشنری
data = {"a": 1, "b": 2}
print({v: k for k, v in data.items()})
55. بررسی وجود مقدار خاص در دیکشنری
data = {"a": 1, "b": 2}
print(2 in data.values())
56. ایجاد لیست از 1 تا 10
print(list(range(1, 11)))
57. ضرب همه عناصر لیست
import math
print(math.prod([1, 2, 3, 4]))
58. لیست comprehension برای توان دو
print([x**2 for x in range(5)])
59. لیست comprehension با شرط
print([x for x in range(10) if x % 2 == 0])
60. صاف کردن لیست تو در تو
nested = [[1, 2], [3, 4]]
print([x for sub in nested for x in sub])
---
بخش ۴ – پردازش دادههای فایل و فرمتها (سوال 61 تا 80)
61. خواندن CSV به لیست دیکشنریها
import csv
with open("data.csv") as f:
reader = csv.DictReader(f)
print(list(reader))
62. نوشتن دیکشنریها در CSV
import csv
rows = [{"name": "Ali", "age": 25}, {"name": "Sara", "age": 30}]
with open("data.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "age"])
writer.writeheader()
writer.writerows(rows)
63. خواندن JSON
import json
with open("data.json") as f:
print(json.load(f))
64. نوشتن JSON با indent
import json
data = {"name": "Ali", "age": 25}
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
65. خواندن Excel با pandas
import pandas as pd
df = pd.read_excel("data.xlsx")
print(df)
66. نوشتن DataFrame به Excel
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df.to_excel("data.xlsx", index=False)
67. ادغام دو CSV با pandas
import pandas as pd
df1 = pd.read_csv("data1.csv")
df2 = pd.read_csv("data2.csv")
print(pd.concat([df1, df2]))
68. گروهبندی دادهها در pandas
import pandas as pd
df = pd.DataFrame({"cat": ["A", "A", "B"], "val": [1, 2, 3]})
print(df.groupby("cat")["val"].sum())
69. مرتبسازی دادهها در pandas
import pandas as pd
df = pd.DataFrame({"A": [3, 1, 2]})
print(df.sort_values("A"))
70. فیلتر دادهها در pandas
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3]})
print(df[df["A"] > 1])
71. حذف مقادیر NaN
import pandas as pd
df = pd.DataFrame({"A": [1, None, 3]})
print(df.dropna())
72. پر کردن مقادیر NaN
import pandas as pd
df = pd.DataFrame({"A": [1, None, 3]})
print(df.fillna(0))
73. ذخیره pandas DataFrame به JSON
import pandas as pd
df = pd.DataFrame({"A": [1, 2]})
df.to_json("data.json", orient="records")
74. خواندن JSON به pandas
import pandas as pd
df = pd.read_json("data.json")
print(df)
75. محاسبه آمار توصیفی در pandas
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3]})
print(df.describe())
76. تغییر نام ستونها
import pandas as pd
df = pd.DataFrame({"a": [1], "b": [2]})
df.rename(columns={"a": "A", "b": "B"}, inplace=True)
print(df)
77. ذخیره به CSV بدون ایندکس
import pandas as pd
df = pd.DataFrame({"A": [1, 2]})
df.to_csv("data.csv", index=False)
78. حذف ستون از DataFrame
import pandas as pd
df = pd.DataFrame({"A": [1], "B": [2]})
df.drop(columns=["B"], inplace=True)
print(df)
79. اضافه کردن ستون جدید
import pandas as pd
df = pd.DataFrame({"A": [1, 2]})
df["B"] = [3, 4]
print(df)
80. محاسبه ستون جدید بر اساس ستونهای دیگر
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df["C"] = df["A"] + df["B"]
print(df)
---
بخش ۵ – کار با دادههای جدولی و پیشرفته در pandas (سوال 81 تا 100)
81. Pivot Table در pandas
import pandas as pd
df = pd.DataFrame({"Cat": ["A", "A", "B"], "Val": [1, 2, 3]})
print(df.pivot_table(values="Val", index="Cat", aggfunc="sum"))
82. ادغام DataFrameها با merge
import pandas as pd
df1 = pd.DataFrame({"ID": [1, 2], "A": [10, 20]})
df2 = pd.DataFrame({"ID": [1, 2], "B": [30, 40]})
print(pd.merge(df1, df2, on="ID"))
83. استخراج دادههای یونیک
import pandas as pd
df = pd.DataFrame({"A": [1, 1, 2, 3]})
print(df["A"].unique())
84. شمارش مقادیر هر دسته
import pandas as pd
df = pd.DataFrame({"A": [1, 1, 2, 3]})
print(df["A"].value_counts())
85. تغییر نوع داده ستون
import pandas as pd
df = pd.DataFrame({"A": ["1", "2"]})
df["A"] = df["A"].astype(int)
print(df)
86. ذخیره DataFrame به فرمت پارکت
import pandas as pd
df = pd.DataFrame({"A": [1, 2]})
df.to_parquet("data.parquet")
87. خواندن Parquet
import pandas as pd
df = pd.read_parquet("data.parquet")
print(df)
88. نمونهگیری تصادفی از DataFrame
import pandas as pd
df = pd.DataFrame({"A": range(10)})
print(df.sample(3))
89. برشزدن سطرها بر اساس ایندکس
import pandas as pd
df = pd.DataFrame({"A": range(10)})
print(df.iloc[2:5])
90. فیلتر چند شرطی
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
print(df[(df["A"] > 1) & (df["B"] < 6)])
91. گروهبندی و چند تابع همزمان
import pandas as pd
df = pd.DataFrame({"Cat": ["A", "A", "B"], "Val": [1, 2, 3]})
print(df.groupby("Cat")["Val"].agg(["sum", "mean"]))
92. اعمال تابع روی هر سطر
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
print(df.apply(lambda row: row["A"] + row["B"], axis=1))
93. پیدا کردن سطر با بیشترین مقدار
import pandas as pd
df = pd.DataFrame({"A": [1, 5, 3]})
print(df.loc[df["A"].idxmax()])
94. پیدا کردن سطر با کمترین مقدار
import pandas as pd
df = pd.DataFrame({"A": [1, 5, 3]})
print(df.loc[df["A"].idxmin()])
95. رسم نمودار خطی ساده
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3], "B": [2, 4, 6]})
df.plot(x="A", y="B")
96. رسم نمودار میلهای
import pandas as pd
df = pd.read_excel("data.xlsx")
print(df)
66. نوشتن DataFrame به Excel
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df.to_excel("data.xlsx", index=False)
67. ادغام دو CSV با pandas
import pandas as pd
df1 = pd.read_csv("data1.csv")
df2 = pd.read_csv("data2.csv")
print(pd.concat([df1, df2]))
68. گروهبندی دادهها در pandas
import pandas as pd
df = pd.DataFrame({"cat": ["A", "A", "B"], "val": [1, 2, 3]})
print(df.groupby("cat")["val"].sum())
69. مرتبسازی دادهها در pandas
import pandas as pd
df = pd.DataFrame({"A": [3, 1, 2]})
print(df.sort_values("A"))
70. فیلتر دادهها در pandas
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3]})
print(df[df["A"] > 1])
71. حذف مقادیر NaN
import pandas as pd
df = pd.DataFrame({"A": [1, None, 3]})
print(df.dropna())
72. پر کردن مقادیر NaN
import pandas as pd
df = pd.DataFrame({"A": [1, None, 3]})
print(df.fillna(0))
73. ذخیره pandas DataFrame به JSON
import pandas as pd
df = pd.DataFrame({"A": [1, 2]})
df.to_json("data.json", orient="records")
74. خواندن JSON به pandas
import pandas as pd
df = pd.read_json("data.json")
print(df)
75. محاسبه آمار توصیفی در pandas
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3]})
print(df.describe())
76. تغییر نام ستونها
import pandas as pd
df = pd.DataFrame({"a": [1], "b": [2]})
df.rename(columns={"a": "A", "b": "B"}, inplace=True)
print(df)
77. ذخیره به CSV بدون ایندکس
import pandas as pd
df = pd.DataFrame({"A": [1, 2]})
df.to_csv("data.csv", index=False)
78. حذف ستون از DataFrame
import pandas as pd
df = pd.DataFrame({"A": [1], "B": [2]})
df.drop(columns=["B"], inplace=True)
print(df)
79. اضافه کردن ستون جدید
import pandas as pd
df = pd.DataFrame({"A": [1, 2]})
df["B"] = [3, 4]
print(df)
80. محاسبه ستون جدید بر اساس ستونهای دیگر
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df["C"] = df["A"] + df["B"]
print(df)
---
بخش ۵ – کار با دادههای جدولی و پیشرفته در pandas (سوال 81 تا 100)
81. Pivot Table در pandas
import pandas as pd
df = pd.DataFrame({"Cat": ["A", "A", "B"], "Val": [1, 2, 3]})
print(df.pivot_table(values="Val", index="Cat", aggfunc="sum"))
82. ادغام DataFrameها با merge
import pandas as pd
df1 = pd.DataFrame({"ID": [1, 2], "A": [10, 20]})
df2 = pd.DataFrame({"ID": [1, 2], "B": [30, 40]})
print(pd.merge(df1, df2, on="ID"))
83. استخراج دادههای یونیک
import pandas as pd
df = pd.DataFrame({"A": [1, 1, 2, 3]})
print(df["A"].unique())
84. شمارش مقادیر هر دسته
import pandas as pd
df = pd.DataFrame({"A": [1, 1, 2, 3]})
print(df["A"].value_counts())
85. تغییر نوع داده ستون
import pandas as pd
df = pd.DataFrame({"A": ["1", "2"]})
df["A"] = df["A"].astype(int)
print(df)
86. ذخیره DataFrame به فرمت پارکت
import pandas as pd
df = pd.DataFrame({"A": [1, 2]})
df.to_parquet("data.parquet")
87. خواندن Parquet
import pandas as pd
df = pd.read_parquet("data.parquet")
print(df)
88. نمونهگیری تصادفی از DataFrame
import pandas as pd
df = pd.DataFrame({"A": range(10)})
print(df.sample(3))
89. برشزدن سطرها بر اساس ایندکس
import pandas as pd
df = pd.DataFrame({"A": range(10)})
print(df.iloc[2:5])
90. فیلتر چند شرطی
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
print(df[(df["A"] > 1) & (df["B"] < 6)])
91. گروهبندی و چند تابع همزمان
import pandas as pd
df = pd.DataFrame({"Cat": ["A", "A", "B"], "Val": [1, 2, 3]})
print(df.groupby("Cat")["Val"].agg(["sum", "mean"]))
92. اعمال تابع روی هر سطر
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
print(df.apply(lambda row: row["A"] + row["B"], axis=1))
93. پیدا کردن سطر با بیشترین مقدار
import pandas as pd
df = pd.DataFrame({"A": [1, 5, 3]})
print(df.loc[df["A"].idxmax()])
94. پیدا کردن سطر با کمترین مقدار
import pandas as pd
df = pd.DataFrame({"A": [1, 5, 3]})
print(df.loc[df["A"].idxmin()])
95. رسم نمودار خطی ساده
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3], "B": [2, 4, 6]})
df.plot(x="A", y="B")
96. رسم نمودار میلهای
import pandas as pd
df = pd.DataFrame({"Fruit": ["Apple", "Banana"], "Count": [10, 15]})
df.plot.bar(x="Fruit", y="Count")
97. ذخیره نمودار به فایل
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"A": [1, 2, 3], "B": [2, 4, 6]})
df.plot(x="A", y="B")
plt.savefig("chart.png")
98. بررسی وجود مقدار NaN
import pandas as pd
df = pd.DataFrame({"A": [1, None, 3]})
print(df.isna().any())
99. جایگزینی مقادیر خاص
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3]})
df.replace({2: 20}, inplace=True)
print(df)
100. تنظیم ایندکس DataFrame
import pandas as pd
df = pd.DataFrame({"ID": [1, 2], "Value": [10, 20]})
df.set_index("ID", inplace=True)
print(df)
df = pd.DataFrame({"Fruit": ["Apple", "Banana"], "Count": [10, 15]})
df.plot.bar(x="Fruit", y="Count")
97. ذخیره نمودار به فایل
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"A": [1, 2, 3], "B": [2, 4, 6]})
df.plot(x="A", y="B")
plt.savefig("chart.png")
98. بررسی وجود مقدار NaN
import pandas as pd
df = pd.DataFrame({"A": [1, None, 3]})
print(df.isna().any())
99. جایگزینی مقادیر خاص
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3]})
df.replace({2: 20}, inplace=True)
print(df)
100. تنظیم ایندکس DataFrame
import pandas as pd
df = pd.DataFrame({"ID": [1, 2], "Value": [10, 20]})
df.set_index("ID", inplace=True)
print(df)
فصل رابط گرافیکی و گرافیک (GUI / Visualization) —
---
بخش ۱ – مبانی Tkinter (سوال 1–20)
1. ساخت یک پنجره ساده
import tkinter as tk
root = tk.Tk()
root.mainloop()
2. تعیین عنوان پنجره
root = tk.Tk()
root.title("My App")
root.mainloop()
3. تعیین اندازه پنجره
root = tk.Tk()
root.geometry("400x300")
root.mainloop()
4. تغییر رنگ پسزمینه پنجره
root = tk.Tk()
root.configure(bg="lightblue")
root.mainloop()
5. ایجاد یک برچسب متن
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Hello Tkinter")
label.pack()
root.mainloop()
6. تغییر فونت و رنگ متن لیبل
label = tk.Label(root, text="Styled Text", font=("Arial", 16), fg="red")
7. ایجاد دکمه ساده
button = tk.Button(root, text="Click Me")
button.pack()
8. دکمه با عملکرد کلیک
def on_click():
print("Button clicked!")
tk.Button(root, text="Click", command=on_click).pack()
9. ایجاد ورودی متن
entry = tk.Entry(root)
entry.pack()
10. گرفتن متن از ورودی
def show_text():
print(entry.get())
tk.Button(root, text="Show", command=show_text).pack()
11. افزودن پنجره با سایز ثابت
root.resizable(False, False)
12. افزودن پیام در Messagebox
from tkinter import messagebox
messagebox.showinfo("Info", "Hello!")
13. پنجره سوال با Yes/No
if messagebox.askyesno("Question", "Continue?"):
print("Yes")
14. ایجاد فریم برای گروهبندی
frame = tk.Frame(root, bg="yellow")
frame.pack(pady=10)
15. افزودن اسکرولبار به Text
text = tk.Text(root)
scroll = tk.Scrollbar(root, command=text.yview)
text.config(yscrollcommand=scroll.set)
text.pack(side="left")
scroll.pack(side="right", fill="y")
16. ایجاد منوی ساده
menu = tk.Menu(root)
root.config(menu=menu)
file_menu = tk.Menu(menu)
menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Exit", command=root.quit)
17. تغییر آیکون پنجره
root.iconbitmap("icon.ico")
18. باز کردن فایل با filedialog
from tkinter import filedialog
file_path = filedialog.askopenfilename()
19. ذخیره فایل با filedialog
file_path = filedialog.asksaveasfilename(defaultextension=".txt")
20. انتخاب رنگ با colorchooser
from tkinter import colorchooser
color = colorchooser.askcolor()[1]
---
بخش ۱ – مبانی Tkinter (سوال 1–20)
1. ساخت یک پنجره ساده
import tkinter as tk
root = tk.Tk()
root.mainloop()
2. تعیین عنوان پنجره
root = tk.Tk()
root.title("My App")
root.mainloop()
3. تعیین اندازه پنجره
root = tk.Tk()
root.geometry("400x300")
root.mainloop()
4. تغییر رنگ پسزمینه پنجره
root = tk.Tk()
root.configure(bg="lightblue")
root.mainloop()
5. ایجاد یک برچسب متن
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Hello Tkinter")
label.pack()
root.mainloop()
6. تغییر فونت و رنگ متن لیبل
label = tk.Label(root, text="Styled Text", font=("Arial", 16), fg="red")
7. ایجاد دکمه ساده
button = tk.Button(root, text="Click Me")
button.pack()
8. دکمه با عملکرد کلیک
def on_click():
print("Button clicked!")
tk.Button(root, text="Click", command=on_click).pack()
9. ایجاد ورودی متن
entry = tk.Entry(root)
entry.pack()
10. گرفتن متن از ورودی
def show_text():
print(entry.get())
tk.Button(root, text="Show", command=show_text).pack()
11. افزودن پنجره با سایز ثابت
root.resizable(False, False)
12. افزودن پیام در Messagebox
from tkinter import messagebox
messagebox.showinfo("Info", "Hello!")
13. پنجره سوال با Yes/No
if messagebox.askyesno("Question", "Continue?"):
print("Yes")
14. ایجاد فریم برای گروهبندی
frame = tk.Frame(root, bg="yellow")
frame.pack(pady=10)
15. افزودن اسکرولبار به Text
text = tk.Text(root)
scroll = tk.Scrollbar(root, command=text.yview)
text.config(yscrollcommand=scroll.set)
text.pack(side="left")
scroll.pack(side="right", fill="y")
16. ایجاد منوی ساده
menu = tk.Menu(root)
root.config(menu=menu)
file_menu = tk.Menu(menu)
menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Exit", command=root.quit)
17. تغییر آیکون پنجره
root.iconbitmap("icon.ico")
18. باز کردن فایل با filedialog
from tkinter import filedialog
file_path = filedialog.askopenfilename()
19. ذخیره فایل با filedialog
file_path = filedialog.asksaveasfilename(defaultextension=".txt")
20. انتخاب رنگ با colorchooser
from tkinter import colorchooser
color = colorchooser.askcolor()[1]
21. ایجاد لیستباکس
22. گرفتن آیتم انتخابشده در لیستباکس
23. استفاده از Radiobutton
24. استفاده از Checkbutton
25. Spinbox برای انتخاب عدد
26. Scale (اسلایدر)
27. افزودن تصویر به لیبل
28. نمایش تصویر با Button
29. چیدمان با grid
30. چیدمان با place
31. پنجره پاپآپ جدید
32. تغییر متن دکمه بعد از کلیک
33. غیرفعال کردن دکمه
34. ایجاد نوار وضعیت
35. Tooltip ساده
36. منوی کشویی OptionMenu
37. مخفی و نمایش ویجت
38. ایجاد Text با ارتفاع و عرض مشخص
39. خواندن متن از Text
40. پاک کردن متن Text
بخش ۳ – رویدادها و تعامل (سوال 41–60)
41. رویداد کلیک ماوس
42. رویداد دوبار کلیک
43. رویداد حرکت ماوس
44. رویداد فشار کلید
45. رویداد فشار کلید خاص
46. تغییر رنگ پسزمینه با کلیک
47. Drag و Drop ساده
48. رویداد بسته شدن پنجره
49. رویداد انتخاب از لیستباکس
50. بروزرسانی لیبل در لحظه تایپ
51. ایجاد تایمر ساده
52. نمایش ساعت
53. انیمیشن متن
54. اسکرول خودکار Text
55. رویداد تغییر اندازه پنجره
56. فوکوس خودکار روی Entry
57. غیر فعال کردن Entry
58. نمایش متن انتخابشده
59. محدود کردن طول ورودی Entry
lb = tk.Listbox(root) lb.pack() lb.insert(0, "Item 1") lb.insert(1, "Item 2") 22. گرفتن آیتم انتخابشده در لیستباکس
def get_item(): print(lb.get(tk.ACTIVE)) 23. استفاده از Radiobutton
var = tk.StringVar() tk.Radiobutton(root, text="Option 1", variable=var, value="1").pack() tk.Radiobutton(root, text="Option 2", variable=var, value="2").pack() 24. استفاده از Checkbutton
chk = tk.IntVar() tk.Checkbutton(root, text="Accept", variable=chk).pack() 25. Spinbox برای انتخاب عدد
spin = tk.Spinbox(root, from_=0, to=10) spin.pack() 26. Scale (اسلایدر)
scale = tk.Scale(root, from_=0, to=100, orient="horizontal") scale.pack() 27. افزودن تصویر به لیبل
img = tk.PhotoImage(file="image.png") tk.Label(root, image=img).pack() 28. نمایش تصویر با Button
tk.Button(root, image=img).pack() 29. چیدمان با grid
tk.Label(root, text="Name").grid(row=0, column=0) tk.Entry(root).grid(row=0, column=1) 30. چیدمان با place
tk.Button(root, text="Click").place(x=50, y=50) 31. پنجره پاپآپ جدید
def open_win(): top = tk.Toplevel(root) tk.Label(top, text="New Window").pack() 32. تغییر متن دکمه بعد از کلیک
def change_text(): btn.config(text="Clicked") btn = tk.Button(root, text="Click", command=change_text) btn.pack() 33. غیرفعال کردن دکمه
btn.config(state="disabled") 34. ایجاد نوار وضعیت
status = tk.Label(root, text="Ready", bd=1, relief="sunken", anchor="w") status.pack(side="bottom", fill="x") 35. Tooltip ساده
def on_enter(e): tip.config(text="Tooltip text") def on_leave(e): tip.config(text="") btn.bind("<Enter>", on_enter) btn.bind("<Leave>", on_leave) tip = tk.Label(root, text="", bg="yellow") tip.pack() 36. منوی کشویی OptionMenu
options = ["One", "Two", "Three"] var = tk.StringVar(value=options[0]) tk.OptionMenu(root, var, *options).pack() 37. مخفی و نمایش ویجت
label.pack_forget() # مخفی label.pack() # نمایش دوباره 38. ایجاد Text با ارتفاع و عرض مشخص
tk.Text(root, height=5, width=30).pack() 39. خواندن متن از Text
content = text.get("1.0", tk.END) 40. پاک کردن متن Text
text.delete("1.0", tk.END) بخش ۳ – رویدادها و تعامل (سوال 41–60)
41. رویداد کلیک ماوس
def on_click(event): print(f"Clicked at {event.x}, {event.y}") root.bind("<Button-1>", on_click) 42. رویداد دوبار کلیک
root.bind("<Double-1>", lambda e: print("Double clicked")) 43. رویداد حرکت ماوس
root.bind("<Motion>", lambda e: print(e.x, e.y)) 44. رویداد فشار کلید
root.bind("<Key>", lambda e: print(e.char)) 45. رویداد فشار کلید خاص
root.bind("<Return>", lambda e: print("Enter pressed")) 46. تغییر رنگ پسزمینه با کلیک
def change_bg(e): root.configure(bg="pink") root.bind("<Button-1>", change_bg) 47. Drag و Drop ساده
def drag(e): e.widget.place(x=e.x_root, y=e.y_root) btn.bind("<B1-Motion>", drag) 48. رویداد بسته شدن پنجره
root.protocol("WM_DELETE_WINDOW", lambda: print("Closing...")) 49. رویداد انتخاب از لیستباکس
lb.bind("<<ListboxSelect>>", lambda e: print(lb.get(tk.ACTIVE))) 50. بروزرسانی لیبل در لحظه تایپ
def update(e): label.config(text=entry.get()) entry.bind("<KeyRelease>", update) 51. ایجاد تایمر ساده
def tick(): label.config(text="Tick") root.after(1000, tick) tick() 52. نمایش ساعت
import time def clock(): label.config(text=time.strftime("%H:%M:%S")) root.after(1000, clock) clock() 53. انیمیشن متن
text = "Hello" def animate(i=0): label.config(text=text[:i]) root.after(200, animate, (i+1) % (len(text)+1)) animate() 54. اسکرول خودکار Text
text.insert(tk.END, "Hello\n") text.see(tk.END) 55. رویداد تغییر اندازه پنجره
root.bind("<Configure>", lambda e: print(e.width, e.height)) 56. فوکوس خودکار روی Entry
entry.focus() 57. غیر فعال کردن Entry
entry.config(state="disabled") 58. نمایش متن انتخابشده
root.bind("<Control-c>", lambda e: print(root.clipboard_get())) 59. محدود کردن طول ورودی Entry
def limit(*a): if len(var.get()) > 5: var.set(var.get()[:5]) var = tk.StringVar() var.trace("w", limit) tk.Entry(root, textvariable=var).pack()60. تغییر فونت کل برنامه
بخش ۴ – ترسیم گرافیک با Canvas و turtle (سوال 61–80)
61. ایجاد Canvas ساده
62. رسم خط
63. رسم مستطیل
64. رسم بیضی
65. رسم چندضلعی
66. نمایش متن در Canvas
67. حرکت شی در Canvas
68. انیمیشن ساده Canvas
69. استفاده از turtle برای رسم مربع
70. تغییر رنگ قلم turtle
71. تغییر ضخامت قلم
72. پر کردن شکل در turtle
73. تغییر سرعت turtle
74. رسم ستاره با turtle
75. رسم متن در turtle
76. تغییر پسزمینه turtle
77. ذخیره تصویر turtle به فایل
78. حرکت turtle با کلیک ماوس
79. مخفی کردن turtle
80. نمایش turtle
بخش ۵ – رسم نمودار و مصورسازی دادهها با matplotlib (سوال 81–100)
81. رسم خط ساده
82. افزودن عنوان و برچسب محور
83. رسم نمودار میلهای
84. تغییر رنگ میلهها
85. رسم نمودار دایرهای
86. افزودن درصد به نمودار دایرهای
87. رسم چند خط در یک نمودار
88. افزودن شبکه (grid)
89. ذخیره نمودار در فایل
90. تغییر اندازه نمودار
91. رسم scatter plot
92. تغییر رنگ نقاط scatter
93. رسم histogram
94. تغییر تعداد bins در histogram
95. رسم نمودار با داده NumPy
96. افزودن annotation به نمودار
97. تغییر style نمودار
98. رسم subplot
99. نمایش رنگبندی با colorbar
100. رسم 3D plot
root.option_add("*Font", "Arial 14") بخش ۴ – ترسیم گرافیک با Canvas و turtle (سوال 61–80)
61. ایجاد Canvas ساده
canvas = tk.Canvas(root, width=300, height=200, bg="white") canvas.pack() 62. رسم خط
canvas.create_line(10, 10, 200, 200, fill="blue", width=2) 63. رسم مستطیل
canvas.create_rectangle(50, 50, 150, 100, fill="red") 64. رسم بیضی
canvas.create_oval(50, 50, 150, 150, fill="green") 65. رسم چندضلعی
canvas.create_polygon(50, 150, 150, 150, 100, 50, fill="yellow") 66. نمایش متن در Canvas
canvas.create_text(100, 100, text="Hello", font=("Arial", 14)) 67. حرکت شی در Canvas
rect = canvas.create_rectangle(10, 10, 50, 50, fill="blue") canvas.move(rect, 20, 10) 68. انیمیشن ساده Canvas
def move(): canvas.move(rect, 5, 0) root.after(50, move) move() 69. استفاده از turtle برای رسم مربع
import turtle t = turtle.Turtle() for _ in range(4): t.forward(100) t.right(90) 70. تغییر رنگ قلم turtle
t.color("red") 71. تغییر ضخامت قلم
t.pensize(5) 72. پر کردن شکل در turtle
t.begin_fill() t.circle(50) t.end_fill() 73. تغییر سرعت turtle
t.speed(5) 74. رسم ستاره با turtle
for _ in range(5): t.forward(100) t.right(144) 75. رسم متن در turtle
t.write("Hello", font=("Arial", 16, "bold")) 76. تغییر پسزمینه turtle
turtle.bgcolor("lightblue") 77. ذخیره تصویر turtle به فایل
ts = turtle.getcanvas() ts.postscript(file="drawing.eps") 78. حرکت turtle با کلیک ماوس
def goto(x, y): t.goto(x, y) turtle.onscreenclick(goto) 79. مخفی کردن turtle
t.hideturtle() 80. نمایش turtle
t.showturtle() بخش ۵ – رسم نمودار و مصورسازی دادهها با matplotlib (سوال 81–100)
81. رسم خط ساده
import matplotlib.pyplot as plt plt.plot([1, 2, 3], [4, 5, 6]) plt.show() 82. افزودن عنوان و برچسب محور
plt.title("My Chart") plt.xlabel("X Axis") plt.ylabel("Y Axis") 83. رسم نمودار میلهای
plt.bar(["A", "B", "C"], [3, 7, 5]) plt.show() 84. تغییر رنگ میلهها
plt.bar(["A", "B", "C"], [3, 7, 5], color="green") 85. رسم نمودار دایرهای
plt.pie([10, 20, 30], labels=["A", "B", "C"]) plt.show() 86. افزودن درصد به نمودار دایرهای
plt.pie([10, 20, 30], labels=["A", "B", "C"], autopct="%1.1f%%") 87. رسم چند خط در یک نمودار
plt.plot([1, 2, 3], [4, 5, 6], label="Line 1") plt.plot([1, 2, 3], [6, 5, 4], label="Line 2") plt.legend() 88. افزودن شبکه (grid)
plt.grid(True) 89. ذخیره نمودار در فایل
plt.savefig("chart.png") 90. تغییر اندازه نمودار
plt.figure(figsize=(8, 5)) 91. رسم scatter plot
plt.scatter([1, 2, 3], [4, 5, 6]) plt.show() 92. تغییر رنگ نقاط scatter
plt.scatter([1, 2, 3], [4, 5, 6], color="red") 93. رسم histogram
plt.hist([1, 1, 2, 3, 3, 3, 4]) plt.show() 94. تغییر تعداد bins در histogram
plt.hist([1, 1, 2, 3, 3, 3, 4], bins=5) 95. رسم نمودار با داده NumPy
import numpy as np x = np.linspace(0, 10, 100) plt.plot(x, np.sin(x)) plt.show() 96. افزودن annotation به نمودار
plt.annotate("Max", xy=(2, 5), xytext=(3, 6), arrowprops=dict(arrowstyle="->")) 97. تغییر style نمودار
plt.style.use("ggplot") 98. رسم subplot
plt.subplot(2, 1, 1) plt.plot([1, 2, 3]) plt.subplot(2, 1, 2) plt.plot([3, 2, 1]) 99. نمایش رنگبندی با colorbar
import numpy as np data = np.random.rand(5, 5) plt.imshow(data, cmap="viridis") plt.colorbar() 100. رسم 3D plot
from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection="3d") ax.plot([1, 2, 3], [4, 5, 6], [7, 8, 9]) plt.show()فصل کار با پایگاهدادهها (SQLite)
---
بخش ۱ – مبانی اتصال و ایجاد جداول (سوال 1–20)
1. اتصال به دیتابیس SQLite (ایجاد فایل)
import sqlite3
conn = sqlite3.connect("mydb.sqlite")
2. ایجاد جدول ساده
conn.execute("""
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
""")
conn.commit()
3. درج یک رکورد
conn.execute("INSERT INTO users (name, age) VALUES ('Ali', 25)")
conn.commit()
4. خواندن همه رکوردها
rows = conn.execute("SELECT * FROM users").fetchall()
print(rows)
5. خواندن فقط یک رکورد
row = conn.execute("SELECT * FROM users").fetchone()
print(row)
6. استفاده از پارامتر در INSERT
conn.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Sara", 30))
conn.commit()
7. ایجاد جدول با محدودیت NOT NULL
conn.execute("CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT NOT NULL)")
8. ایجاد جدول با UNIQUE
conn.execute("CREATE TABLE emails (id INTEGER PRIMARY KEY, email TEXT UNIQUE)")
9. حذف جدول
conn.execute("DROP TABLE users")
10. بررسی جداول موجود
tables = conn.execute("SELECT name FROM sqlite_master WHERE type='table'").fetchall()
print(tables)
11. بستن اتصال
conn.close()
12. ایجاد اتصال در حافظه (In-memory DB)
conn = sqlite3.connect(":memory:")
13. ایجاد جدول با تاریخ
conn.execute("CREATE TABLE logs (id INTEGER, created_at DATE)")
14. افزودن مقدار تاریخ فعلی
from datetime import date
conn.execute("INSERT INTO logs VALUES (?, ?)", (1, date.today()))
15. ایجاد جدول با مقدار پیشفرض
conn.execute("CREATE TABLE settings (id INTEGER, theme TEXT DEFAULT 'light')")
16. استفاده از PRIMARY KEY Auto Increment
conn.execute("CREATE TABLE items (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)")
17. ذخیره داده با commit خودکار
conn.isolation_level = None
18. ایجاد جدول با چند نوع داده
conn.execute("""
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT,
price REAL
)
""")
19. بررسی ستونهای یک جدول
columns = conn.execute("PRAGMA table_info(users)").fetchall()
print(columns)
20. تغییر نام جدول
conn.execute("ALTER TABLE users RENAME TO people")
---
---
بخش ۱ – مبانی اتصال و ایجاد جداول (سوال 1–20)
1. اتصال به دیتابیس SQLite (ایجاد فایل)
import sqlite3
conn = sqlite3.connect("mydb.sqlite")
2. ایجاد جدول ساده
conn.execute("""
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
""")
conn.commit()
3. درج یک رکورد
conn.execute("INSERT INTO users (name, age) VALUES ('Ali', 25)")
conn.commit()
4. خواندن همه رکوردها
rows = conn.execute("SELECT * FROM users").fetchall()
print(rows)
5. خواندن فقط یک رکورد
row = conn.execute("SELECT * FROM users").fetchone()
print(row)
6. استفاده از پارامتر در INSERT
conn.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Sara", 30))
conn.commit()
7. ایجاد جدول با محدودیت NOT NULL
conn.execute("CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT NOT NULL)")
8. ایجاد جدول با UNIQUE
conn.execute("CREATE TABLE emails (id INTEGER PRIMARY KEY, email TEXT UNIQUE)")
9. حذف جدول
conn.execute("DROP TABLE users")
10. بررسی جداول موجود
tables = conn.execute("SELECT name FROM sqlite_master WHERE type='table'").fetchall()
print(tables)
11. بستن اتصال
conn.close()
12. ایجاد اتصال در حافظه (In-memory DB)
conn = sqlite3.connect(":memory:")
13. ایجاد جدول با تاریخ
conn.execute("CREATE TABLE logs (id INTEGER, created_at DATE)")
14. افزودن مقدار تاریخ فعلی
from datetime import date
conn.execute("INSERT INTO logs VALUES (?, ?)", (1, date.today()))
15. ایجاد جدول با مقدار پیشفرض
conn.execute("CREATE TABLE settings (id INTEGER, theme TEXT DEFAULT 'light')")
16. استفاده از PRIMARY KEY Auto Increment
conn.execute("CREATE TABLE items (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)")
17. ذخیره داده با commit خودکار
conn.isolation_level = None
18. ایجاد جدول با چند نوع داده
conn.execute("""
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT,
price REAL
)
""")
19. بررسی ستونهای یک جدول
columns = conn.execute("PRAGMA table_info(users)").fetchall()
print(columns)
20. تغییر نام جدول
conn.execute("ALTER TABLE users RENAME TO people")
---
21. درج چند رکورد همزمان
data = [("Ali", 25), ("Sara", 30), ("Reza", 28)]
conn.executemany("INSERT INTO users (name, age) VALUES (?, ?)", data)
conn.commit()
22. بروزرسانی یک رکورد
conn.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Ali"))
conn.commit()
23. حذف یک رکورد
conn.execute("DELETE FROM users WHERE name = ?", ("Sara",))
conn.commit()
24. حذف همه رکوردها
conn.execute("DELETE FROM users")
conn.commit()
25. استفاده از rowcount
cur = conn.execute("DELETE FROM users WHERE age < ?", (30,))
print(cur.rowcount)
conn.commit()
26. درج رکورد با شرط عدم وجود
conn.execute("""
INSERT INTO users (name, age)
SELECT ?, ?
WHERE NOT EXISTS (SELECT 1 FROM users WHERE name = ?)
""", ("Nima", 40, "Nima"))
conn.commit()
27. بروزرسانی چند شرطی
conn.execute("UPDATE users SET age = age + 1 WHERE age BETWEEN ? AND ?", (20, 30))
conn.commit()
28. حذف با شرط OR
conn.execute("DELETE FROM users WHERE name = ? OR age > ?", ("Reza", 35))
conn.commit()
29. استفاده از RETURNING برای گرفتن رکورد حذفشده
row = conn.execute("DELETE FROM users WHERE name = ? RETURNING *", ("Nima",)).fetchone()
print(row)
conn.commit()
30. درج داده از جدول دیگر
conn.execute("INSERT INTO backup_users SELECT * FROM users")
conn.commit()
31. تغییر مقدار خاص در چند رکورد
conn.execute("UPDATE users SET age = 18 WHERE age IS NULL")
conn.commit()
32. حذف رکورد با مقدار NULL
conn.execute("DELETE FROM users WHERE age IS NULL")
conn.commit()
33. افزایش قیمت همه محصولات
conn.execute("UPDATE products SET price = price * 1.1")
conn.commit()
34. حذف کاربران با نامهای تکراری
conn.execute("""
DELETE FROM users
WHERE id NOT IN (
SELECT MIN(id) FROM users GROUP BY name
)
""")
conn.commit()
35. درج تاریخ و زمان فعلی با SQL
conn.execute("INSERT INTO logs VALUES (?, datetime('now'))", (1,))
conn.commit()
36. درج رکورد و دریافت id
cur = conn.execute("INSERT INTO items (name) VALUES (?)", ("Pen",))
print(cur.lastrowid)
conn.commit()
37. بهروزرسانی و نمایش رکورد قبل و بعد
print(conn.execute("SELECT * FROM users WHERE id = 1").fetchone())
conn.execute("UPDATE users SET age = age + 5 WHERE id = 1")
print(conn.execute("SELECT * FROM users WHERE id = 1").fetchone())
conn.commit()
38. حذف رکوردهای قدیمیتر از تاریخ خاص
conn.execute("DELETE FROM logs WHERE created_at < date('2024-01-01')")
conn.commit()
39. درج رکورد با داده باینری
data = b'\x00\x01\x02'
conn.execute("INSERT INTO files (id, data) VALUES (?, ?)", (1, data))
conn.commit()
40. خواندن داده باینری
data = conn.execute("SELECT data FROM files WHERE id = ?", (1,)).fetchone()[0]
print(data)
---
بخش ۳ – جستجو و کوئریهای پیشرفته (سوال 41–60)
41. جستجو با LIKE
rows = conn.execute("SELECT * FROM users WHERE name LIKE 'A%'").fetchall()
print(rows)
42. جستجو بدون حساسیت به حروف
rows = conn.execute("SELECT * FROM users WHERE LOWER(name) = LOWER(?)", ("ali",)).fetchall()
print(rows)
43. مرتبسازی نتایج
rows = conn.execute("SELECT * FROM users ORDER BY age DESC").fetchall()
44. محدود کردن تعداد نتایج
rows = conn.execute("SELECT * FROM users LIMIT 5").fetchall()
45. پرش و محدود کردن (Pagination)
rows = conn.execute("SELECT * FROM users LIMIT 5 OFFSET 5").fetchall()
46. جستجو با چند شرط AND
rows = conn.execute("SELECT * FROM users WHERE age > 20 AND name LIKE 'A%'").fetchall()
47. انتخاب ستونهای خاص
rows = conn.execute("SELECT name FROM users").fetchall()
48. استفاده از DISTINCT
rows = conn.execute("SELECT DISTINCT name FROM users").fetchall()
49. شمارش تعداد رکوردها
count = conn.execute("SELECT COUNT(*) FROM users").fetchone()[0]
print(count)
50. پیدا کردن میانگین سن
avg_age = conn.execute("SELECT AVG(age) FROM users").fetchone()[0]
51. بیشترین مقدار ستون
max_age = conn.execute("SELECT MAX(age) FROM users").fetchone()[0]
52. کمترین مقدار ستون
min_age = conn.execute("SELECT MIN(age) FROM users").fetchone()[0]
53. جمع مقادیر
total = conn.execute("SELECT SUM(age) FROM users").fetchone()[0]
54. گروهبندی بر اساس ستون
rows = conn.execute("SELECT age, COUNT(*) FROM users GROUP BY age").fetchall()
55. گروهبندی با شرط HAVING
data = [("Ali", 25), ("Sara", 30), ("Reza", 28)]
conn.executemany("INSERT INTO users (name, age) VALUES (?, ?)", data)
conn.commit()
22. بروزرسانی یک رکورد
conn.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Ali"))
conn.commit()
23. حذف یک رکورد
conn.execute("DELETE FROM users WHERE name = ?", ("Sara",))
conn.commit()
24. حذف همه رکوردها
conn.execute("DELETE FROM users")
conn.commit()
25. استفاده از rowcount
cur = conn.execute("DELETE FROM users WHERE age < ?", (30,))
print(cur.rowcount)
conn.commit()
26. درج رکورد با شرط عدم وجود
conn.execute("""
INSERT INTO users (name, age)
SELECT ?, ?
WHERE NOT EXISTS (SELECT 1 FROM users WHERE name = ?)
""", ("Nima", 40, "Nima"))
conn.commit()
27. بروزرسانی چند شرطی
conn.execute("UPDATE users SET age = age + 1 WHERE age BETWEEN ? AND ?", (20, 30))
conn.commit()
28. حذف با شرط OR
conn.execute("DELETE FROM users WHERE name = ? OR age > ?", ("Reza", 35))
conn.commit()
29. استفاده از RETURNING برای گرفتن رکورد حذفشده
row = conn.execute("DELETE FROM users WHERE name = ? RETURNING *", ("Nima",)).fetchone()
print(row)
conn.commit()
30. درج داده از جدول دیگر
conn.execute("INSERT INTO backup_users SELECT * FROM users")
conn.commit()
31. تغییر مقدار خاص در چند رکورد
conn.execute("UPDATE users SET age = 18 WHERE age IS NULL")
conn.commit()
32. حذف رکورد با مقدار NULL
conn.execute("DELETE FROM users WHERE age IS NULL")
conn.commit()
33. افزایش قیمت همه محصولات
conn.execute("UPDATE products SET price = price * 1.1")
conn.commit()
34. حذف کاربران با نامهای تکراری
conn.execute("""
DELETE FROM users
WHERE id NOT IN (
SELECT MIN(id) FROM users GROUP BY name
)
""")
conn.commit()
35. درج تاریخ و زمان فعلی با SQL
conn.execute("INSERT INTO logs VALUES (?, datetime('now'))", (1,))
conn.commit()
36. درج رکورد و دریافت id
cur = conn.execute("INSERT INTO items (name) VALUES (?)", ("Pen",))
print(cur.lastrowid)
conn.commit()
37. بهروزرسانی و نمایش رکورد قبل و بعد
print(conn.execute("SELECT * FROM users WHERE id = 1").fetchone())
conn.execute("UPDATE users SET age = age + 5 WHERE id = 1")
print(conn.execute("SELECT * FROM users WHERE id = 1").fetchone())
conn.commit()
38. حذف رکوردهای قدیمیتر از تاریخ خاص
conn.execute("DELETE FROM logs WHERE created_at < date('2024-01-01')")
conn.commit()
39. درج رکورد با داده باینری
data = b'\x00\x01\x02'
conn.execute("INSERT INTO files (id, data) VALUES (?, ?)", (1, data))
conn.commit()
40. خواندن داده باینری
data = conn.execute("SELECT data FROM files WHERE id = ?", (1,)).fetchone()[0]
print(data)
---
بخش ۳ – جستجو و کوئریهای پیشرفته (سوال 41–60)
41. جستجو با LIKE
rows = conn.execute("SELECT * FROM users WHERE name LIKE 'A%'").fetchall()
print(rows)
42. جستجو بدون حساسیت به حروف
rows = conn.execute("SELECT * FROM users WHERE LOWER(name) = LOWER(?)", ("ali",)).fetchall()
print(rows)
43. مرتبسازی نتایج
rows = conn.execute("SELECT * FROM users ORDER BY age DESC").fetchall()
44. محدود کردن تعداد نتایج
rows = conn.execute("SELECT * FROM users LIMIT 5").fetchall()
45. پرش و محدود کردن (Pagination)
rows = conn.execute("SELECT * FROM users LIMIT 5 OFFSET 5").fetchall()
46. جستجو با چند شرط AND
rows = conn.execute("SELECT * FROM users WHERE age > 20 AND name LIKE 'A%'").fetchall()
47. انتخاب ستونهای خاص
rows = conn.execute("SELECT name FROM users").fetchall()
48. استفاده از DISTINCT
rows = conn.execute("SELECT DISTINCT name FROM users").fetchall()
49. شمارش تعداد رکوردها
count = conn.execute("SELECT COUNT(*) FROM users").fetchone()[0]
print(count)
50. پیدا کردن میانگین سن
avg_age = conn.execute("SELECT AVG(age) FROM users").fetchone()[0]
51. بیشترین مقدار ستون
max_age = conn.execute("SELECT MAX(age) FROM users").fetchone()[0]
52. کمترین مقدار ستون
min_age = conn.execute("SELECT MIN(age) FROM users").fetchone()[0]
53. جمع مقادیر
total = conn.execute("SELECT SUM(age) FROM users").fetchone()[0]
54. گروهبندی بر اساس ستون
rows = conn.execute("SELECT age, COUNT(*) FROM users GROUP BY age").fetchall()
55. گروهبندی با شرط HAVING
rows = conn.execute("SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 1").fetchall()
56. کوئری تو در تو (Subquery)
rows = conn.execute("SELECT * FROM users WHERE age = (SELECT MAX(age) FROM users)").fetchall()
57. استفاده از CASE در SELECT
rows = conn.execute("""
SELECT name,
CASE
WHEN age >= 18 THEN 'Adult'
ELSE 'Child'
END as category
FROM users
""").fetchall()
58. جستجو در لیست مقادیر
rows = conn.execute("SELECT * FROM users WHERE age IN (25, 30)").fetchall()
59. جستجو در بازه تاریخ
rows = conn.execute("SELECT * FROM logs WHERE created_at BETWEEN ? AND ?", ("2024-01-01", "2024-12-31")).fetchall()
60. استفاده از NULL در شرط
rows = conn.execute("SELECT * FROM users WHERE age IS NULL").fetchall()
---
بخش ۴ – چند جدول و JOIN (سوال 61–80)
61. ایجاد جدول orders
conn.execute("CREATE TABLE orders (id INTEGER PRIMARY KEY, user_id INTEGER, amount REAL)")
62. درج داده در orders
conn.execute("INSERT INTO orders (user_id, amount) VALUES (?, ?)", (1, 100))
63. INNER JOIN
rows = conn.execute("""
SELECT users.name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id
""").fetchall()
64. LEFT JOIN
rows = conn.execute("""
SELECT users.name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id
""").fetchall()
65. RIGHT JOIN شبیهسازی (SQLite پشتیبانی ندارد)
rows = conn.execute("""
SELECT orders.id, users.name
FROM orders
LEFT JOIN users ON users.id = orders.user_id
""").fetchall()
66. شمارش سفارشهای هر کاربر
rows = conn.execute("""
SELECT users.name, COUNT(orders.id)
FROM users
LEFT JOIN orders ON users.id = orders.user_id
GROUP BY users.name
""").fetchall()
67. مجموع مبلغ سفارشها برای هر کاربر
rows = conn.execute("""
SELECT users.name, SUM(orders.amount)
FROM users
JOIN orders ON users.id = orders.user_id
GROUP BY users.name
""").fetchall()
68. کاربران بدون سفارش
rows = conn.execute("""
SELECT users.name
FROM users
LEFT JOIN orders ON users.id = orders.user_id
WHERE orders.id IS NULL
""").fetchall()
69. سفارشها با مبلغ بیشتر از میانگین
rows = conn.execute("""
SELECT * FROM orders
WHERE amount > (SELECT AVG(amount) FROM orders)
""").fetchall()
70. JOIN سه جدول
conn.execute("CREATE TABLE payments (id INTEGER, order_id INTEGER, status TEXT)")
rows = conn.execute("""
SELECT u.name, o.amount, p.status
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN payments p ON o.id = p.order_id
""").fetchall()
71. استفاده از ALIAS در جداول
rows = conn.execute("SELECT u.name FROM users u").fetchall()
72. سفارشهای بیش از یک مبلغ خاص
rows = conn.execute("SELECT * FROM orders WHERE amount > ?", (200,)).fetchall()
73. پیدا کردن کاربر با بیشترین سفارش
rows = conn.execute("""
SELECT u.name, COUNT(o.id) as total
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.name
ORDER BY total DESC LIMIT 1
""").fetchall()
74. JOIN با شرط اضافی
rows = conn.execute("""
SELECT u.name, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id AND o.amount > 100
""").fetchall()
75. استفاده از CROSS JOIN
rows = conn.execute("SELECT * FROM users CROSS JOIN products").fetchall()
76. ایجاد View
conn.execute("CREATE VIEW user_orders AS SELECT u.name, o.amount FROM users u JOIN orders o ON u.id = o.user_id")
77. خواندن از View
rows = conn.execute("SELECT * FROM user_orders").fetchall()
78. حذف View
conn.execute("DROP VIEW user_orders")
79. ترکیب UNION
rows = conn.execute("SELECT name FROM users UNION SELECT title FROM books").fetchall()
80. ترکیب UNION ALL
rows = conn.execute("SELECT name FROM users UNION ALL SELECT title FROM books").fetchall()
---
بخش ۵ – نکات پیشرفته و امنیت (سوال 81–100)
81. استفاده از شاخص (Index)
conn.execute("CREATE INDEX idx_user_name ON users(name)")
82. حذف شاخص
conn.execute("DROP INDEX idx_user_name")
83. تراکنش دستی
conn.execute("BEGIN")
conn.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Test", 20))
conn.execute("COMMIT")
84. تراکنش با Rollback
conn.execute("BEGIN")
try:
conn.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Error", "text"))
conn.execute("COMMIT")
except:
conn.execute("ROLLBACK")
56. کوئری تو در تو (Subquery)
rows = conn.execute("SELECT * FROM users WHERE age = (SELECT MAX(age) FROM users)").fetchall()
57. استفاده از CASE در SELECT
rows = conn.execute("""
SELECT name,
CASE
WHEN age >= 18 THEN 'Adult'
ELSE 'Child'
END as category
FROM users
""").fetchall()
58. جستجو در لیست مقادیر
rows = conn.execute("SELECT * FROM users WHERE age IN (25, 30)").fetchall()
59. جستجو در بازه تاریخ
rows = conn.execute("SELECT * FROM logs WHERE created_at BETWEEN ? AND ?", ("2024-01-01", "2024-12-31")).fetchall()
60. استفاده از NULL در شرط
rows = conn.execute("SELECT * FROM users WHERE age IS NULL").fetchall()
---
بخش ۴ – چند جدول و JOIN (سوال 61–80)
61. ایجاد جدول orders
conn.execute("CREATE TABLE orders (id INTEGER PRIMARY KEY, user_id INTEGER, amount REAL)")
62. درج داده در orders
conn.execute("INSERT INTO orders (user_id, amount) VALUES (?, ?)", (1, 100))
63. INNER JOIN
rows = conn.execute("""
SELECT users.name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id
""").fetchall()
64. LEFT JOIN
rows = conn.execute("""
SELECT users.name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id
""").fetchall()
65. RIGHT JOIN شبیهسازی (SQLite پشتیبانی ندارد)
rows = conn.execute("""
SELECT orders.id, users.name
FROM orders
LEFT JOIN users ON users.id = orders.user_id
""").fetchall()
66. شمارش سفارشهای هر کاربر
rows = conn.execute("""
SELECT users.name, COUNT(orders.id)
FROM users
LEFT JOIN orders ON users.id = orders.user_id
GROUP BY users.name
""").fetchall()
67. مجموع مبلغ سفارشها برای هر کاربر
rows = conn.execute("""
SELECT users.name, SUM(orders.amount)
FROM users
JOIN orders ON users.id = orders.user_id
GROUP BY users.name
""").fetchall()
68. کاربران بدون سفارش
rows = conn.execute("""
SELECT users.name
FROM users
LEFT JOIN orders ON users.id = orders.user_id
WHERE orders.id IS NULL
""").fetchall()
69. سفارشها با مبلغ بیشتر از میانگین
rows = conn.execute("""
SELECT * FROM orders
WHERE amount > (SELECT AVG(amount) FROM orders)
""").fetchall()
70. JOIN سه جدول
conn.execute("CREATE TABLE payments (id INTEGER, order_id INTEGER, status TEXT)")
rows = conn.execute("""
SELECT u.name, o.amount, p.status
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN payments p ON o.id = p.order_id
""").fetchall()
71. استفاده از ALIAS در جداول
rows = conn.execute("SELECT u.name FROM users u").fetchall()
72. سفارشهای بیش از یک مبلغ خاص
rows = conn.execute("SELECT * FROM orders WHERE amount > ?", (200,)).fetchall()
73. پیدا کردن کاربر با بیشترین سفارش
rows = conn.execute("""
SELECT u.name, COUNT(o.id) as total
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.name
ORDER BY total DESC LIMIT 1
""").fetchall()
74. JOIN با شرط اضافی
rows = conn.execute("""
SELECT u.name, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id AND o.amount > 100
""").fetchall()
75. استفاده از CROSS JOIN
rows = conn.execute("SELECT * FROM users CROSS JOIN products").fetchall()
76. ایجاد View
conn.execute("CREATE VIEW user_orders AS SELECT u.name, o.amount FROM users u JOIN orders o ON u.id = o.user_id")
77. خواندن از View
rows = conn.execute("SELECT * FROM user_orders").fetchall()
78. حذف View
conn.execute("DROP VIEW user_orders")
79. ترکیب UNION
rows = conn.execute("SELECT name FROM users UNION SELECT title FROM books").fetchall()
80. ترکیب UNION ALL
rows = conn.execute("SELECT name FROM users UNION ALL SELECT title FROM books").fetchall()
---
بخش ۵ – نکات پیشرفته و امنیت (سوال 81–100)
81. استفاده از شاخص (Index)
conn.execute("CREATE INDEX idx_user_name ON users(name)")
82. حذف شاخص
conn.execute("DROP INDEX idx_user_name")
83. تراکنش دستی
conn.execute("BEGIN")
conn.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Test", 20))
conn.execute("COMMIT")
84. تراکنش با Rollback
conn.execute("BEGIN")
try:
conn.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Error", "text"))
conn.execute("COMMIT")
except:
conn.execute("ROLLBACK")
85. جلوگیری از SQL Injection با پارامترها
name = "Ali"
conn.execute("SELECT * FROM users WHERE name = ?", (name,))
86. فعالکردن foreign key
conn.execute("PRAGMA foreign_keys = ON")
87. ایجاد جدول با foreign key
conn.execute("""
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER,
FOREIGN KEY(user_id) REFERENCES users(id)
)
""")
88. استفاده از executemany برای درج سریع
data = [(f"User{i}", i+20) for i in range(1000)]
conn.executemany("INSERT INTO users (name, age) VALUES (?, ?)", data)
89. خروجی گرفتن از دیتابیس به CSV
import csv
rows = conn.execute("SELECT * FROM users").fetchall()
with open("users.csv", "w", newline="") as f:
csv.writer(f).writerows(rows)
90. واردکردن داده از CSV
import csv
with open("users.csv") as f:
for row in csv.reader(f):
conn.execute("INSERT INTO users VALUES (?, ?, ?)", row)
conn.commit()
91. پشتیبانگیری دیتابیس
import shutil
shutil.copy("mydb.sqlite", "backup.sqlite")
92. بازیابی پشتیبان
shutil.copy("backup.sqlite", "mydb.sqlite")
93. اجرای چند کوئری با executescript
conn.executescript("""
DROP TABLE IF EXISTS test;
CREATE TABLE test(id INTEGER);
INSERT INTO test VALUES (1);
""")
94. ذخیره دیتابیس در حافظه
backup_conn = sqlite3.connect(":memory:")
conn.backup(backup_conn)
95. فشردهسازی دیتابیس
conn.execute("VACUUM")
96. اطلاعات نسخه SQLite
print(sqlite3.sqlite_version)
97. بررسی فضای اشغالشده
size = conn.execute("PRAGMA page_count").fetchone()[0] * conn.execute("PRAGMA page_size").fetchone()[0]
print(size, "bytes")
98. محدود کردن تعداد نتایج جستجو
conn.execute("PRAGMA limit_length = 1000")
99. بستن تمام Cursor ها
conn.commit()
conn.close()
100. مدیریت خطا هنگام اتصال
try:
conn = sqlite3.connect("mydb.sqlite")
except sqlite3.Error as e:
print("Error:", e)
name = "Ali"
conn.execute("SELECT * FROM users WHERE name = ?", (name,))
86. فعالکردن foreign key
conn.execute("PRAGMA foreign_keys = ON")
87. ایجاد جدول با foreign key
conn.execute("""
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER,
FOREIGN KEY(user_id) REFERENCES users(id)
)
""")
88. استفاده از executemany برای درج سریع
data = [(f"User{i}", i+20) for i in range(1000)]
conn.executemany("INSERT INTO users (name, age) VALUES (?, ?)", data)
89. خروجی گرفتن از دیتابیس به CSV
import csv
rows = conn.execute("SELECT * FROM users").fetchall()
with open("users.csv", "w", newline="") as f:
csv.writer(f).writerows(rows)
90. واردکردن داده از CSV
import csv
with open("users.csv") as f:
for row in csv.reader(f):
conn.execute("INSERT INTO users VALUES (?, ?, ?)", row)
conn.commit()
91. پشتیبانگیری دیتابیس
import shutil
shutil.copy("mydb.sqlite", "backup.sqlite")
92. بازیابی پشتیبان
shutil.copy("backup.sqlite", "mydb.sqlite")
93. اجرای چند کوئری با executescript
conn.executescript("""
DROP TABLE IF EXISTS test;
CREATE TABLE test(id INTEGER);
INSERT INTO test VALUES (1);
""")
94. ذخیره دیتابیس در حافظه
backup_conn = sqlite3.connect(":memory:")
conn.backup(backup_conn)
95. فشردهسازی دیتابیس
conn.execute("VACUUM")
96. اطلاعات نسخه SQLite
print(sqlite3.sqlite_version)
97. بررسی فضای اشغالشده
size = conn.execute("PRAGMA page_count").fetchone()[0] * conn.execute("PRAGMA page_size").fetchone()[0]
print(size, "bytes")
98. محدود کردن تعداد نتایج جستجو
conn.execute("PRAGMA limit_length = 1000")
99. بستن تمام Cursor ها
conn.commit()
conn.close()
100. مدیریت خطا هنگام اتصال
try:
conn = sqlite3.connect("mydb.sqlite")
except sqlite3.Error as e:
print("Error:", e)
فصل کامل: کار با دادهها (NumPy و Pandas)
بخش ۱ – آشنایی با NumPy (سوال 1–20)
1. نصب NumPy
pip install numpy
2. واردکردن کتابخانه
import numpy as np
3. ایجاد آرایه NumPy
arr = np.array([1, 2, 3])
print(arr)
4. نوع داده در آرایه
print(arr.dtype)
5. ایجاد آرایه چندبعدی
mat = np.array([[1, 2], [3, 4]])
6. آرایه صفر
zeros = np.zeros((3, 3))
7. آرایه یک
ones = np.ones((2, 4))
8. آرایه با اعداد تصادفی
rand = np.random.rand(2, 3)
9. ایجاد آرایه با فاصله ثابت
arr = np.arange(0, 10, 2)
10. ایجاد آرایه خطی
arr = np.linspace(0, 1, 5)
11. تغییر شکل آرایه
arr = np.arange(6).reshape(2, 3)
12. انتخاب یک عنصر
print(arr[0, 1])
13. برش (Slicing)
print(arr[:, 1])
14. جمع همه عناصر
print(arr.sum())
15. میانگین عناصر
print(arr.mean())
16. بزرگترین مقدار
print(arr.max())
17. کوچکترین مقدار
print(arr.min())
18. شاخص بزرگترین مقدار
print(arr.argmax())
19. شاخص کوچکترین مقدار
print(arr.argmin())
20. ضرب آرایهها
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a * b)
---
بخش ۲ – عملیات پیشرفته NumPy (سوال 21–40)
21. جمع سطر به سطر
print(arr.sum(axis=1))
22. جمع ستون به ستون
print(arr.sum(axis=0))
23. ماتریس ترانهاده
print(arr.T)
24. ضرب ماتریسی
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))
25. مقادیر منفی کردن
print(-arr)
26. مقایسه عناصر
print(arr > 2)
27. فیلتر بر اساس شرط
print(arr[arr > 2])
28. مرتبسازی
print(np.sort(arr))
29. ادغام دو آرایه
np.concatenate((a, b), axis=0)
30. تقسیم آرایه
np.split(a, 2)
31. کپی و view
copy_arr = arr.copy()
view_arr = arr.view()
32. تغییر نوع داده
arr = arr.astype(float)
33. پیدا کردن یکتاها
print(np.unique(arr))
34. جایگزینی مقدار
arr[arr < 3] = 0
35. ساخت ماتریس قطری
np.diag([1, 2, 3])
36. تولید اعداد تصادفی صحیح
np.random.randint(0, 10, size=(3, 3))
37. تولید اعداد تصادفی از توزیع نرمال
np.random.randn(3, 3)
38. ذخیره آرایه در فایل
np.save("array.npy", arr)
39. خواندن آرایه از فایل
np.load("array.npy")
40. آرایه هویت (Identity Matrix)
np.eye(4)
---
بخش ۳ – آشنایی با Pandas (سوال 41–60)
41. نصب Pandas
pip install pandas
42. واردکردن Pandas
import pandas as pd
43. ایجاد Series
s = pd.Series([1, 2, 3], index=["a", "b", "c"])
44. ایجاد DataFrame
df = pd.DataFrame({"name": ["Ali", "Sara"], "age": [25, 30]})
45. نمایش چند سطر اول
df.head()
46. نمایش چند سطر آخر
df.tail()
47. اطلاعات کلی
df.info()
48. آمار توصیفی
df.describe()
49. انتخاب ستون
df["name"]
50. انتخاب چند ستون
df[["name", "age"]]
51. انتخاب سطر با loc
df.loc[0]
52. انتخاب سطر با iloc
df.iloc[0]
53. فیلتر کردن
df[df["age"] > 25]
54. افزودن ستون جدید
df["city"] = ["Tehran", "Shiraz"]
55. حذف ستون
df.drop("city", axis=1, inplace=True)
56. مرتبسازی بر اساس ستون
df.sort_values("age", ascending=False)
57. ایندکس جدید
df.set_index("name", inplace=True)
58. بازنشانی ایندکس
df.reset_index(inplace=True)
59. بررسی مقادیر گمشده
df.isnull()
60. پر کردن مقادیر گمشده
df.fillna(0)
---
بخش ۴ – عملیات پیشرفته Pandas (سوال 61–80)
61. حذف مقادیر گمشده
df.dropna()
62. تغییر نام ستونها
df.rename(columns={"name": "Name"}, inplace=True)
63. اعمال تابع به ستون
df["age"] = df["age"].apply(lambda x: x + 1)
64. ترکیب دو DataFrame
df2 = pd.DataFrame({"name": ["Reza"], "age": [28]})
pd.concat([df, df2])
65. Merge دو DataFrame
pd.merge(df, df2, on="name", how="inner")
66. GroupBy
df.groupby("city")["age"].mean()
67. Pivot Table
df.pivot_table(values="age", index="city", aggfunc="mean")
68. خواندن CSV
pd.read_csv("file.csv")
69. ذخیره DataFrame به CSV
df.to_csv("file.csv", index=False)
70. خواندن Excel
pd.read_excel("file.xlsx")
71. ذخیره به Excel
df.to_excel("file.xlsx", index=False)
72. خواندن JSON
pd.read_json("file.json")
73. ذخیره JSON
df.to_json("file.json")
74. بررسی تعداد سطر و ستون
df.shape
75. گرفتن لیست ستونها
df.columns.tolist()
76. انتخاب ردیف تصادفی
df.sample(1)
77. محاسبه مجموع یک ستون
df["age"].sum()
78. محاسبه میانگین یک ستون
df["age"].mean()
79. بیشترین مقدار یک ستون
df["age"].max()
80. کمترین مقدار یک ستون
df["age"].min()
---
بخش ۱ – آشنایی با NumPy (سوال 1–20)
1. نصب NumPy
pip install numpy
2. واردکردن کتابخانه
import numpy as np
3. ایجاد آرایه NumPy
arr = np.array([1, 2, 3])
print(arr)
4. نوع داده در آرایه
print(arr.dtype)
5. ایجاد آرایه چندبعدی
mat = np.array([[1, 2], [3, 4]])
6. آرایه صفر
zeros = np.zeros((3, 3))
7. آرایه یک
ones = np.ones((2, 4))
8. آرایه با اعداد تصادفی
rand = np.random.rand(2, 3)
9. ایجاد آرایه با فاصله ثابت
arr = np.arange(0, 10, 2)
10. ایجاد آرایه خطی
arr = np.linspace(0, 1, 5)
11. تغییر شکل آرایه
arr = np.arange(6).reshape(2, 3)
12. انتخاب یک عنصر
print(arr[0, 1])
13. برش (Slicing)
print(arr[:, 1])
14. جمع همه عناصر
print(arr.sum())
15. میانگین عناصر
print(arr.mean())
16. بزرگترین مقدار
print(arr.max())
17. کوچکترین مقدار
print(arr.min())
18. شاخص بزرگترین مقدار
print(arr.argmax())
19. شاخص کوچکترین مقدار
print(arr.argmin())
20. ضرب آرایهها
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a * b)
---
بخش ۲ – عملیات پیشرفته NumPy (سوال 21–40)
21. جمع سطر به سطر
print(arr.sum(axis=1))
22. جمع ستون به ستون
print(arr.sum(axis=0))
23. ماتریس ترانهاده
print(arr.T)
24. ضرب ماتریسی
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))
25. مقادیر منفی کردن
print(-arr)
26. مقایسه عناصر
print(arr > 2)
27. فیلتر بر اساس شرط
print(arr[arr > 2])
28. مرتبسازی
print(np.sort(arr))
29. ادغام دو آرایه
np.concatenate((a, b), axis=0)
30. تقسیم آرایه
np.split(a, 2)
31. کپی و view
copy_arr = arr.copy()
view_arr = arr.view()
32. تغییر نوع داده
arr = arr.astype(float)
33. پیدا کردن یکتاها
print(np.unique(arr))
34. جایگزینی مقدار
arr[arr < 3] = 0
35. ساخت ماتریس قطری
np.diag([1, 2, 3])
36. تولید اعداد تصادفی صحیح
np.random.randint(0, 10, size=(3, 3))
37. تولید اعداد تصادفی از توزیع نرمال
np.random.randn(3, 3)
38. ذخیره آرایه در فایل
np.save("array.npy", arr)
39. خواندن آرایه از فایل
np.load("array.npy")
40. آرایه هویت (Identity Matrix)
np.eye(4)
---
بخش ۳ – آشنایی با Pandas (سوال 41–60)
41. نصب Pandas
pip install pandas
42. واردکردن Pandas
import pandas as pd
43. ایجاد Series
s = pd.Series([1, 2, 3], index=["a", "b", "c"])
44. ایجاد DataFrame
df = pd.DataFrame({"name": ["Ali", "Sara"], "age": [25, 30]})
45. نمایش چند سطر اول
df.head()
46. نمایش چند سطر آخر
df.tail()
47. اطلاعات کلی
df.info()
48. آمار توصیفی
df.describe()
49. انتخاب ستون
df["name"]
50. انتخاب چند ستون
df[["name", "age"]]
51. انتخاب سطر با loc
df.loc[0]
52. انتخاب سطر با iloc
df.iloc[0]
53. فیلتر کردن
df[df["age"] > 25]
54. افزودن ستون جدید
df["city"] = ["Tehran", "Shiraz"]
55. حذف ستون
df.drop("city", axis=1, inplace=True)
56. مرتبسازی بر اساس ستون
df.sort_values("age", ascending=False)
57. ایندکس جدید
df.set_index("name", inplace=True)
58. بازنشانی ایندکس
df.reset_index(inplace=True)
59. بررسی مقادیر گمشده
df.isnull()
60. پر کردن مقادیر گمشده
df.fillna(0)
---
بخش ۴ – عملیات پیشرفته Pandas (سوال 61–80)
61. حذف مقادیر گمشده
df.dropna()
62. تغییر نام ستونها
df.rename(columns={"name": "Name"}, inplace=True)
63. اعمال تابع به ستون
df["age"] = df["age"].apply(lambda x: x + 1)
64. ترکیب دو DataFrame
df2 = pd.DataFrame({"name": ["Reza"], "age": [28]})
pd.concat([df, df2])
65. Merge دو DataFrame
pd.merge(df, df2, on="name", how="inner")
66. GroupBy
df.groupby("city")["age"].mean()
67. Pivot Table
df.pivot_table(values="age", index="city", aggfunc="mean")
68. خواندن CSV
pd.read_csv("file.csv")
69. ذخیره DataFrame به CSV
df.to_csv("file.csv", index=False)
70. خواندن Excel
pd.read_excel("file.xlsx")
71. ذخیره به Excel
df.to_excel("file.xlsx", index=False)
72. خواندن JSON
pd.read_json("file.json")
73. ذخیره JSON
df.to_json("file.json")
74. بررسی تعداد سطر و ستون
df.shape
75. گرفتن لیست ستونها
df.columns.tolist()
76. انتخاب ردیف تصادفی
df.sample(1)
77. محاسبه مجموع یک ستون
df["age"].sum()
78. محاسبه میانگین یک ستون
df["age"].mean()
79. بیشترین مقدار یک ستون
df["age"].max()
80. کمترین مقدار یک ستون
df["age"].min()
---
بخش ۵ – نکات ترکیبی NumPy + Pandas (سوال 81–100)
81. تبدیل DataFrame به آرایه NumPy
df.values
82. تبدیل آرایه NumPy به DataFrame
pd.DataFrame(np.array([[1, 2], [3, 4]]), columns=["A", "B"])
83. فیلتر DataFrame با شرط NumPy
df[np.array(df["age"] > 25)]
84. استفاده از np.where
df["status"] = np.where(df["age"] > 25, "Adult", "Young")
85. ایجاد ستون با محاسبه برداری
df["double_age"] = df["age"] * 2
86. مرتبسازی چندستونه
df.sort_values(by=["age", "name"])
87. حذف مقادیر تکراری
df.drop_duplicates(subset="name", keep="first")
88. تغییر نوع داده ستون
df["age"] = df["age"].astype(float)
89. شمارش مقادیر تکراری
df["name"].value_counts()
90. برش سطری با ایندکس
df[1:3]
91. انتخاب ستون با getattr
df.name
92. اعمال تابع NumPy روی DataFrame
np.log(df["age"])
93. بررسی عضویت
df["city"].isin(["Tehran", "Shiraz"])
94. معکوس کردن DataFrame
df.iloc[::-1]
95. تغییر محل ستونها
df = df[["city", "name", "age"]]
96. ترکیب چند شرط
df[(df["age"] > 20) & (df["city"] == "Tehran")]
97. نوشتن به دیتابیس SQLite
import sqlite3
conn = sqlite3.connect("data.db")
df.to_sql("users", conn, if_exists="replace", index=False)
98. خواندن از دیتابیس SQLite
pd.read_sql("SELECT * FROM users", conn)
99. ساخت ستون از تاریخ
df["year"] = pd.to_datetime(df["birthdate"]).dt.year
100. ریست کامل DataFrame
df = pd.DataFrame()
81. تبدیل DataFrame به آرایه NumPy
df.values
82. تبدیل آرایه NumPy به DataFrame
pd.DataFrame(np.array([[1, 2], [3, 4]]), columns=["A", "B"])
83. فیلتر DataFrame با شرط NumPy
df[np.array(df["age"] > 25)]
84. استفاده از np.where
df["status"] = np.where(df["age"] > 25, "Adult", "Young")
85. ایجاد ستون با محاسبه برداری
df["double_age"] = df["age"] * 2
86. مرتبسازی چندستونه
df.sort_values(by=["age", "name"])
87. حذف مقادیر تکراری
df.drop_duplicates(subset="name", keep="first")
88. تغییر نوع داده ستون
df["age"] = df["age"].astype(float)
89. شمارش مقادیر تکراری
df["name"].value_counts()
90. برش سطری با ایندکس
df[1:3]
91. انتخاب ستون با getattr
df.name
92. اعمال تابع NumPy روی DataFrame
np.log(df["age"])
93. بررسی عضویت
df["city"].isin(["Tehran", "Shiraz"])
94. معکوس کردن DataFrame
df.iloc[::-1]
95. تغییر محل ستونها
df = df[["city", "name", "age"]]
96. ترکیب چند شرط
df[(df["age"] > 20) & (df["city"] == "Tehran")]
97. نوشتن به دیتابیس SQLite
import sqlite3
conn = sqlite3.connect("data.db")
df.to_sql("users", conn, if_exists="replace", index=False)
98. خواندن از دیتابیس SQLite
pd.read_sql("SELECT * FROM users", conn)
99. ساخت ستون از تاریخ
df["year"] = pd.to_datetime(df["birthdate"]).dt.year
100. ریست کامل DataFrame
df = pd.DataFrame()