آموزش برنامه‌نویسی پایتون و هوش مصنوعی
140 subscribers
358 photos
190 videos
41 files
172 links
🎯 یادگیری پایتون با رویکردی متفاوت
🚀 آموزش‌های کاملاً عملی و پروژه‌محور
💻 مسیر تبدیل شدن به یک برنامه‌نویس حرفه‌ای
🌟 فرقی نداره مبتدی هستی یا پیشرفته، از هر سطحی شروع کن و پایتون رو اصولی یاد بگیر
📩 ارتباط با ادمین: @YMahmoodian
09156519984
Download Telegram
51. نصب کتابخانه با pip
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. شمارش تعداد کاراکتر در رشته
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)
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.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]
21. ایجاد لیست‌باکس
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. تغییر فونت کل برنامه
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")


---
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
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")
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)
فصل کامل: کار با داده‌ها (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 + 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()
فصل کامل: وب‌اسکرپینگ و کار با API در پایتون


درخواست‌های HTTP (Requests)

دریافت داده‌ها از وب‌سایت‌ها

تجزیه HTML با BeautifulSoup

دانلود فایل و تصویر

کار با API و JSON

وب‌اسکرپینگ پیشرفته (Session، Headers، Auth)



---

بخش ۱ – مقدمات Requests (سوال 1–20)

1. نصب کتابخانه Requests

pip install requests

2. وارد کردن Requests

import requests

3. ارسال درخواست GET

response = requests.get("https://example.com")
print(response.text)

4. وضعیت درخواست

print(response.status_code)

5. بررسی موفقیت

if response.ok:
print("Success!")

6. هدرها

print(response.headers)

7. دریافت باینری (مثل تصویر)

content = response.content

8. ذخیره در فایل

with open("page.html", "wb") as f:
f.write(response.content)

9. ارسال پارامتر در URL

params = {"q": "python"}
requests.get("https://www.google.com/search", params=params)

10. درخواست POST

data = {"username": "admin", "password": "123"}
requests.post("https://example.com/login", data=data)

11. ارسال JSON

json_data = {"name": "Ali", "age": 25}
requests.post("https://example.com/api", json=json_data)

12. هدر سفارشی

headers = {"User-Agent": "MyApp"}
requests.get("https://example.com", headers=headers)

13. Timeout

requests.get("https://example.com", timeout=5)

14. Session

s = requests.Session()
s.get("https://example.com")

15. کوکی‌ها

print(response.cookies)

16. ارسال کوکی

cookies = {"session": "abcd"}
requests.get("https://example.com", cookies=cookies)

17. بررسی Redirect

print(response.history)

18. جلوگیری از Redirect

requests.get("https://example.com", allow_redirects=False)

19. دانلود تصویر

img = requests.get("https://example.com/image.jpg")
with open("image.jpg", "wb") as f:
f.write(img.content)

20. آپلود فایل

files = {"file": open("test.txt", "rb")}
requests.post("https://example.com/upload", files=files)


---

بخش ۲ – کار با BeautifulSoup (سوال 21–40)

21. نصب

pip install beautifulsoup4

22. وارد کردن

from bs4 import BeautifulSoup

23. ایجاد شیء Soup

soup = BeautifulSoup(response.text, "html.parser")

24. یافتن اولین تگ

print(soup.find("h1"))

25. یافتن همه تگ‌ها

print(soup.find_all("p"))

26. دسترسی به متن

print(soup.find("p").get_text())

27. دسترسی به ویژگی

print(soup.find("a")["href"])

28. جستجو با کلاس

soup.find_all("div", class_="content")

29. جستجو با id

soup.find(id="main")

30. انتخاب با CSS Selector

soup.select("div.content > p")

31. یافتن چندین نوع تگ

soup.find_all(["h1", "h2"])

32. یافتن با شرط تابع

soup.find_all(lambda tag: tag.name == "p" and "Python" in tag.text)

33. تغییر متن تگ

tag = soup.find("h1")
tag.string = "New Title"

34. حذف تگ

tag.decompose()

35. پیمایش والد

tag.parent

36. پیمایش فرزند

tag.contents

37. پیمایش خواهر

tag.find_next_sibling()

38. پیمایش قبلی

tag.find_previous_sibling()

39. یافتن لینک‌ها

for a in soup.find_all("a", href=True):
print(a["href"])

40. ذخیره HTML تمیز

with open("clean.html", "w", encoding="utf-8") as f:
f.write(soup.prettify())


---

بخش ۳ – کار با API و JSON (سوال 41–60)

41. دریافت JSON

r = requests.get("https://api.github.com")
print(r.json())

42. ارسال JSON

requests.post("https://example.com/api", json={"id": 1})

43. پردازش JSON

data = r.json()
print(data["current_user_url"])

44. استفاده از پارامتر در API

requests.get("https://api.agify.io", params={"name": "Ali"})

45. بررسی نرخ محدودیت

print(r.headers.get("X-RateLimit-Limit"))

46. API با احراز هویت

requests.get("https://api.github.com/user", auth=("user", "pass"))

47. API با Token

headers = {"Authorization": "Bearer TOKEN"}
requests.get("https://api.example.com", headers=headers)

48. API با Session

s = requests.Session()
s.headers.update({"Authorization": "Bearer TOKEN"})

49. بررسی خطا

r.raise_for_status()

50. API POST با فایل

files = {"file": open("test.csv", "rb")}
requests.post("https://api.example.com/upload", files=files)

51. API PUT

requests.put("https://api.example.com/user/1", json={"name": "New"})

52. API DELETE

requests.delete("https://api.example.com/user/1")

53. بررسی Content-Type

print(r.headers["Content-Type"])

54. ذخیره JSON در فایل
import json
with open("data.json", "w") as f:
json.dump(r.json(), f)

55. خواندن JSON از فایل

with open("data.json") as f:
data = json.load(f)

56. تبدیل JSON به رشته

json.dumps(data)

57. تبدیل رشته به JSON

json.loads('{"a": 1}')

58. فیلتر داده API

users = [u for u in data if u["age"] > 30]

59. پردازش API در حلقه

for user in data["users"]:
print(user["name"])

60. بررسی وجود کلید

if "users" in data:
print("Users exist")


---

بخش ۴ – وب‌اسکرپینگ پیشرفته (سوال 61–80)

61. ریکوئست با Proxy

proxies = {"http": "http://proxy.com:8080"}
requests.get("https://example.com", proxies=proxies)

62. ریکوئست HTTPS ناامن

requests.get("https://self-signed.badssl.com/", verify=False)

63. اسکرپینگ با Headers مرورگر

headers = {"User-Agent": "Mozilla/5.0"}
requests.get("https://example.com", headers=headers)

64. اسکرپینگ صفحات متعدد

for page in range(1, 6):
requests.get(f"https://example.com?page={page}")

65. دریافت و ذخیره PDF

pdf = requests.get("https://example.com/file.pdf")
with open("file.pdf", "wb") as f:
f.write(pdf.content)

66. دانلود دسته‌ای تصاویر

urls = ["img1.jpg", "img2.jpg"]
for url in urls:
r = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(r.content)

67. Session Login

s = requests.Session()
s.post("https://example.com/login", data={"u": "admin", "p": "123"})

68. استفاده از API بعد از Login

r = s.get("https://example.com/profile")

69. استخراج جدول HTML

table = soup.find("table")

70. ذخیره جدول در CSV

import csv
rows = table.find_all("tr")
with open("table.csv", "w", newline="") as f:
writer = csv.writer(f)
for row in rows:
cols = [c.text for c in row.find_all(["td", "th"])]
writer.writerow(cols)

71. شبیه‌سازی فرم HTML

requests.post("https://example.com/form", data={"name": "Ali"})

72. استفاده از Referer

headers = {"Referer": "https://google.com"}

73. محدودیت نرخ درخواست

import time
time.sleep(2)

74. ذخیره HTML صفحه

with open("page.html", "w", encoding="utf-8") as f:
f.write(response.text)

75. جستجوی کلمه خاص در HTML

if "Python" in response.text:
print("Found!")

76. استخراج متا تگ‌ها

meta = soup.find_all("meta")

77. استخراج عنوان صفحه

print(soup.title.string)

78. استخراج اسکریپت‌ها

scripts = soup.find_all("script")

79. استخراج تصاویر

imgs = soup.find_all("img", src=True)

80. دانلود همه تصاویر

for img in imgs:
url = img["src"]
r = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(r.content)


---

بخش ۵ – تمرین‌های ترکیبی Requests + API + BeautifulSoup (سوال 81–100)

81. جستجوی کتاب در Google Books API
82. دریافت نرخ ارز از API آزاد
83. اسکرپینگ اخبار از یک سایت خبری
84. استخراج قیمت‌ها از سایت فروشگاهی
85. دانلود عکس پروفایل کاربر از API
86. جمع‌آوری ایمیل‌ها از HTML
87. ذخیره داده‌های API در دیتابیس SQLite
88. دانلود و پردازش JSON هواشناسی
89. اسکرپینگ پست‌های وبلاگ و ذخیره در CSV
90. استخراج لیست محصولات یک دسته‌بندی
91. اتصال به API تلگرام و ارسال پیام
92. دانلود و ذخیره PDF گزارش
93. استخراج لینک‌های دانلود از HTML
94. ساخت کرالر برای چند صفحه
95. پردازش داده‌های API و نمایش نمودار
96. استفاده از API ترجمه گوگل
97. ذخیره تصاویر API به پوشه
98. دریافت داده و ارسال دوباره به API دیگر
99. ساخت گزارش از داده‌های اسکرپ شده
100. پروژه نهایی: ترکیب API + اسکرپینگ + دیتابیس


---
فصل رابط گرافیکی (GUI)

---

بخش ۱ – مبانی ایجاد پنجره و ویجت‌ها (سوال 1–20)

1. ایجاد یک پنجره ساده

import tkinter as tk
root = tk.Tk()
root.mainloop()

2. تغییر عنوان پنجره

root.title("My First GUI")

3. تغییر اندازه اولیه پنجره

root.geometry("400x300")

4. اضافه کردن یک Label

label = tk.Label(root, text="Hello, Tkinter!")
label.pack()

5. تغییر رنگ متن Label

label.config(fg="red")

6. تغییر رنگ پس‌زمینه پنجره

root.configure(bg="lightblue")

7. اضافه کردن دکمه ساده

btn = tk.Button(root, text="Click Me")
btn.pack()

8. تعریف تابع برای دکمه

def say_hello():
print("Hello!")
btn = tk.Button(root, text="Click", command=say_hello)
btn.pack()

9. اضافه کردن ورودی متن

entry = tk.Entry(root)
entry.pack()

10. گرفتن مقدار ورودی

def show_input():
print(entry.get())

11. اضافه کردن TextBox چند خطی

text_box = tk.Text(root, height=5, width=30)
text_box.pack()

12. افزودن Checkbutton

chk_var = tk.BooleanVar()
chk = tk.Checkbutton(root, text="Accept", variable=chk_var)
chk.pack()

13. افزودن Radiobutton

r_var = tk.StringVar(value="A")
tk.Radiobutton(root, text="Option A", variable=r_var, value="A").pack()
tk.Radiobutton(root, text="Option B", variable=r_var, value="B").pack()

14. افزودن Listbox

lst = tk.Listbox(root)
lst.insert(1, "Apple")
lst.insert(2, "Banana")
lst.pack()

15. انتخاب آیتم در Listbox

def show_selected():
print(lst.get(lst.curselection()))

16. استفاده از Frame

frame = tk.Frame(root, bg="gray")
frame.pack()

17. افزودن Scrollbar

scroll = tk.Scrollbar(root)
scroll.pack(side=tk.RIGHT, fill=tk.Y)

18. تغییر آیکون پنجره

root.iconbitmap("icon.ico")

19. بستن پنجره با کد

root.destroy()

20. اجرای حلقه اصلی

root.mainloop()


---
بخش ۲ – مدیریت رویدادها و Layout پیشرفته (سوال 21–40)
21. تغییر متن Label با کلیک دکمه
def change_text(): label.config(text="Text Changed!") btn = tk.Button(root, text="Change", command=change_text) btn.pack()
22. گرفتن رویداد کلیک ماوس
def on_click(event): print(f"Clicked at {event.x}, {event.y}") root.bind("<Button-1>", on_click)
23. گرفتن رویداد کلید کیبورد
def on_key(event): print("Key pressed:", event.char) root.bind("<Key>", on_key)
24. استفاده از grid برای چیدمان
tk.Label(root, text="Name").grid(row=0, column=0) tk.Entry(root).grid(row=0, column=1)
25. استفاده از place برای موقعیت دقیق
tk.Label(root, text="Fixed Position").place(x=50, y=50)
26. افزودن منوی کشویی (Menu)
menu = tk.Menu(root) root.config(menu=menu) file_menu = tk.Menu(menu, tearoff=0) menu.add_cascade(label="File", menu=file_menu) file_menu.add_command(label="Exit", command=root.quit)
27. استفاده از MessageBox
from tkinter import messagebox messagebox.showinfo("Title", "This is a message")
28. سوال Yes/No با MessageBox
if messagebox.askyesno("Confirm", "Do you agree?"): print("Yes!")
29. انتخاب رنگ با ColorChooser
from tkinter import colorchooser color = colorchooser.askcolor()[1] print(color)
30. انتخاب فایل با FileDialog
from tkinter import filedialog file_path = filedialog.askopenfilename() print(file_path)
31. انتخاب چند فایل
files = filedialog.askopenfilenames() print(files)
32. انتخاب پوشه
folder = filedialog.askdirectory() print(folder)
33. باز کردن تصویر با PhotoImage
img = tk.PhotoImage(file="image.png") tk.Label(root, image=img).pack()
34. تغییر فونت متن
import tkinter.font as tkFont label.config(font=("Arial", 16, "bold"))
35. Tooltip ساده
def show_tooltip(event): print("Tooltip: Click the button!") btn.bind("<Enter>", show_tooltip)
36. تغییر اندازه ویجت هنگام تغییر پنجره
root.columnconfigure(0, weight=1) root.rowconfigure(0, weight=1)
37. ایجاد چند پنجره (Toplevel)
win = tk.Toplevel(root) win.title("New Window")
38. بستن پنجره فرعی
win.destroy()
39. غیرفعال کردن دکمه
btn.config(state=tk.DISABLED)
40. فعال کردن دوباره دکمه
btn.config(state=tk.NORMAL)
41. استفاده از Spinbox
spin = tk.Spinbox(root, from_=0, to=10) spin.pack()
42. گرفتن مقدار Spinbox
print(spin.get())
43. استفاده از Listbox
lb = tk.Listbox(root) lb.insert(1, "Python") lb.insert(2, "Java") lb.pack()
44. انتخاب آیتم از Listbox
def show_selected(event): print(lb.get(lb.curselection())) lb.bind("<<ListboxSelect>>", show_selected)
45. استفاده از Canvas برای ترسیم خط
canvas = tk.Canvas(root, width=200, height=200) canvas.pack() canvas.create_line(0, 0, 200, 200, fill="red", width=3)
46. ترسیم دایره در Canvas
canvas.create_oval(50, 50, 150, 150, fill="blue")
47. ترسیم مستطیل در Canvas
canvas.create_rectangle(20, 20, 100, 80, fill="green")
48. افزودن متن به Canvas
canvas.create_text(100, 100, text="Hello", font=("Arial", 14))
49. حرکت شیء در Canvas
rect = canvas.create_rectangle(50, 50, 100, 100, fill="red") canvas.move(rect, 10, 0)
50. استفاده از Progressbar
from tkinter import ttk pb = ttk.Progressbar(root, length=200, mode="determinate") pb["value"] = 50 pb.pack()
51. افزایش Progressbar
pb["value"] += 10
52. حالت نامحدود Progressbar
pb.config(mode="indeterminate") pb.start()
53. استفاده از Treeview
tree = ttk.Treeview(root) tree["columns"] = ("one", "two") tree.heading("one", text="Column 1") tree.heading("two", text="Column 2") tree.insert("", "end", values=("A", "B")) tree.pack()
54. افزودن نوار اسکرول
scroll = tk.Scrollbar(root, orient="vertical", command=lb.yview) lb.config(yscrollcommand=scroll.set) scroll.pack(side="right", fill="y")
55. نمایش پاپ‌آپ منو با کلیک راست
popup = tk.Menu(root, tearoff=0) popup.add_command(label="Option 1") def show_popup(event): popup.post(event.x_root, event.y_root) root.bind("<Button-3>", show_popup)
56. تغییر رنگ پس‌زمینه پنجره
root.config(bg="lightblue")
57. استفاده از Frame برای گروه‌بندی
frame = tk.Frame(root, bg="yellow", padx=10, pady=10) frame.pack()
58. افزودن ویجت به Frame
tk.Label(frame, text="Inside Frame").pack()
59. تغییر آیکون پنجره
root.iconbitmap("icon.ico")
60. تغییر حالت تمام‌صفحه
root.attributes("-fullscreen", True)
بخش ۴ – پروژه‌های کوچک (سوال 61–80)
61. تایمر ساده
counter = 0 def update_timer(): global counter counter += 1 label.config(text=str(counter)) root.after(1000, update_timer) update_timer()
62. ساعت دیجیتال
import time def clock(): label.config(text=time.strftime("%H:%M:%S")) root.after(1000, clock) clock()
63. تغییر پس‌زمینه خودکار
colors = ["red", "blue", "green"] def change_bg(): root.config(bg=colors[counter % len(colors)]) root.after(1000, change_bg) change_bg()
64. شمارش معکوس
time_left = 10 def countdown(): global time_left if time_left > 0: time_left -= 1 label.config(text=str(time_left)) root.after(1000, countdown) countdown()
65. ماشین حساب ساده
expr = "" def press(num): global expr expr += str(num) label.config(text=expr) def equal(): global expr label.config(text=str(eval(expr))) expr = ""
66. دفترچه یادداشت ساده
text_area = tk.Text(root) text_area.pack()
67. ذخیره متن دفترچه یادداشت
def save_file(): with open("note.txt", "w") as f: f.write(text_area.get("1.0", tk.END))
68. باز کردن فایل در دفترچه یادداشت
def open_file(): with open("note.txt") as f: text_area.delete("1.0", tk.END) text_area.insert(tk.END, f.read())
69. تغییر متن بر اساس انتخاب منو
def set_text(): label.config(text="Menu Selected") file_menu.add_command(label="Set Text", command=set_text)
70. تغییر اندازه فونت Text
text_area.config(font=("Arial", 14))
71. نمایش تصویر انتخابی کاربر
path = filedialog.askopenfilename() img = tk.PhotoImage(file=path) tk.Label(root, image=img).pack()
72. تغییر زبان برنامه
lang = tk.StringVar(value="English") tk.OptionMenu(root, lang, "English", "Persian", "Arabic").pack()
73. ایجاد دکمه‌های داینامیک
for i in range(5): tk.Button(root, text=f"Button {i}").pack()
74. فرم ورود ساده
tk.Label(root, text="Username").pack() username = tk.Entry(root) username.pack() tk.Label(root, text="Password").pack() password = tk.Entry(root, show="*") password.pack()
75. بررسی ورود کاربر
def login(): if username.get() == "admin" and password.get() == "123": messagebox.showinfo("Login", "Welcome!")
76. اسلایدشو تصویر
images = ["img1.png", "img2.png"] index = 0 def slideshow(): global index img = tk.PhotoImage(file=images[index]) label.config(image=img) label.image = img index = (index + 1) % len(images) root.after(2000, slideshow) slideshow()
77. کشیدن با ماوس روی Canvas
def paint(event): x1, y1 = (event.x - 2), (event.y - 2) x2, y2 = (event.x + 2), (event.y + 2) canvas.create_oval(x1, y1, x2, y2, fill="black") canvas.bind("<B1-Motion>", paint)
78. بازی کلیک سریع
score = 0 def click_game(): global score score += 1 label.config(text=str(score))
79. نمایش پیشرفت تایمر در Progressbar
pb["value"] = (counter / 10) * 100
80. دکمه تغییر حالت تاریک/روشن
def toggle_theme(): current = root.cget("bg") root.config(bg="black" if current != "black" else "white")
بخش ۵ – پروژه‌های کامل (سوال 81–100)
81. بازی حدس عدد
import random number = random.randint(1, 10) def guess(): if int(entry.get()) == number: messagebox.showinfo("Win", "Correct!")
82. بازی حرکت دکمه فرار
def move_btn(event): btn.place(x=random.randint(0, 300), y=random.randint(0, 300)) btn.bind("<Enter>", move_btn)
83. تایمر Pomodoro
work_time = 25*60
84. برنامه مدیریت کارها (To-Do List)
tasks = []
85. جستجوی فایل در پوشه و نمایش
from pathlib import Path
86. ساخت گالری عکس
# مشابه اسلایدشو
87. ماشین حساب علمی
import math
88. برنامه ثبت هزینه‌ها
expenses = []
89. نمایش آب‌وهوا (API)
import requests
90. ساخت چت‌روم ساده (Socket)
import socket
91. نمایش PDF در Tkinter
import fitz
92. ادغام PDF با دکمه
import PyPDF2
93. ارسال ایمیل از طریق Tkinter
import smtplib
94. اجرای دستورات ترمینال
import subprocess
95. برنامه مدیریت رمز عبور
import hashlib
96. بازی مار با Tkinter
# canvas + after
97. بازی پینگ پنگ
# canvas + حرکت توپ
98. پخش موزیک
import pygame
99. ویرایش تصویر (PIL)
from PIL import Image
100. خروج از برنامه با کلید Esc
root.bind("<Escape>", lambda e: root.quit())
فصل هوش مصنوعی و یادگیری ماشین/عمیق

---

بخش ۱: مبانی هوش مصنوعی و داده (سوال 1–20)

1. ایجاد یک آرایه ساده با NumPy

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)

2. ایجاد آرایه صفرها و یک‌ها

import numpy as np
zeros = np.zeros((3, 3))
ones = np.ones((2, 4))
print(zeros)
print(ones)

3. ایجاد آرایه با مقادیر تصادفی

import numpy as np
rand_arr = np.random.rand(3, 3)
print(rand_arr)

4. ایجاد آرایه با مقادیر عددی پشت سر هم

import numpy as np
seq = np.arange(0, 10, 2)
print(seq)

5. تغییر شکل (reshape) آرایه

import numpy as np
arr = np.arange(12).reshape(3, 4)
print(arr)

6. محاسبه میانگین، ماکسیمم و مینیمم

import numpy as np
arr = np.array([5, 8, 2, 9])
print(arr.mean(), arr.max(), arr.min())

7. محاسبه انحراف معیار و واریانس

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.std(), arr.var())

8. خواندن یک فایل CSV با Pandas

import pandas as pd
df = pd.read_csv("data.csv")
print(df.head())

9. نمایش اطلاعات کلی DataFrame

import pandas as pd
df = pd.read_csv("data.csv")
print(df.info())

10. نمایش آمار توصیفی داده‌ها

import pandas as pd
df = pd.read_csv("data.csv")
print(df.describe())

11. انتخاب یک ستون خاص

import pandas as pd
df = pd.read_csv("data.csv")
print(df["Age"])

12. انتخاب چند ستون خاص

import pandas as pd
df = pd.read_csv("data.csv")
print(df[["Name", "Age"]])

13. فیلتر کردن ردیف‌ها با شرط

import pandas as pd
df = pd.read_csv("data.csv")
print(df[df["Age"] > 30])

14. مرتب‌سازی داده‌ها بر اساس یک ستون

import pandas as pd
df = pd.read_csv("data.csv")
print(df.sort_values("Age"))

15. پر کردن مقادیر گمشده با مقدار خاص

import pandas as pd
df = pd.read_csv("data.csv")
df.fillna(0, inplace=True)
print(df)

16. حذف ردیف‌هایی با مقادیر گمشده

import pandas as pd
df = pd.read_csv("data.csv")
df.dropna(inplace=True)
print(df)

17. تغییر نام ستون‌ها

import pandas as pd
df = pd.read_csv("data.csv")
df.rename(columns={"Age": "Years"}, inplace=True)
print(df)

18. ایجاد یک ستون جدید بر اساس محاسبات

import pandas as pd
df = pd.read_csv("data.csv")
df["Age_plus_5"] = df["Age"] + 5
print(df)

19. ذخیره DataFrame به CSV

import pandas as pd
df = pd.read_csv("data.csv")
df.to_csv("new_data.csv", index=False)

20. ترکیب دو DataFrame

import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df2 = pd.DataFrame({"Name": ["Reza", "Mina"], "Age": [22, 35]})
merged = pd.concat([df1, df2])
print(merged)


---