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()
فصل کامل: وباسکرپینگ و کار با 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 در فایل
درخواستهای 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 + اسکرپینگ + دیتابیس
---
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()
---
---
بخش ۱ – مبانی ایجاد پنجره و ویجتها (سوال 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 با کلیک دکمه
22. گرفتن رویداد کلیک ماوس
23. گرفتن رویداد کلید کیبورد
24. استفاده از grid برای چیدمان
25. استفاده از place برای موقعیت دقیق
26. افزودن منوی کشویی (Menu)
27. استفاده از MessageBox
28. سوال Yes/No با MessageBox
29. انتخاب رنگ با ColorChooser
30. انتخاب فایل با FileDialog
31. انتخاب چند فایل
32. انتخاب پوشه
33. باز کردن تصویر با PhotoImage
34. تغییر فونت متن
35. Tooltip ساده
36. تغییر اندازه ویجت هنگام تغییر پنجره
37. ایجاد چند پنجره (Toplevel)
38. بستن پنجره فرعی
39. غیرفعال کردن دکمه
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
42. گرفتن مقدار Spinbox
43. استفاده از Listbox
44. انتخاب آیتم از Listbox
45. استفاده از Canvas برای ترسیم خط
46. ترسیم دایره در Canvas
47. ترسیم مستطیل در Canvas
48. افزودن متن به Canvas
49. حرکت شیء در Canvas
50. استفاده از Progressbar
51. افزایش Progressbar
52. حالت نامحدود Progressbar
53. استفاده از Treeview
54. افزودن نوار اسکرول
55. نمایش پاپآپ منو با کلیک راست
56. تغییر رنگ پسزمینه پنجره
57. استفاده از Frame برای گروهبندی
58. افزودن ویجت به Frame
59. تغییر آیکون پنجره
60. تغییر حالت تمامصفحه
بخش ۴ – پروژههای کوچک (سوال 61–80)
61. تایمر ساده
62. ساعت دیجیتال
63. تغییر پسزمینه خودکار
64. شمارش معکوس
65. ماشین حساب ساده
66. دفترچه یادداشت ساده
67. ذخیره متن دفترچه یادداشت
68. باز کردن فایل در دفترچه یادداشت
69. تغییر متن بر اساس انتخاب منو
70. تغییر اندازه فونت Text
71. نمایش تصویر انتخابی کاربر
72. تغییر زبان برنامه
73. ایجاد دکمههای داینامیک
74. فرم ورود ساده
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. بررسی ورود کاربر
76. اسلایدشو تصویر
77. کشیدن با ماوس روی Canvas
78. بازی کلیک سریع
79. نمایش پیشرفت تایمر در Progressbar
80. دکمه تغییر حالت تاریک/روشن
بخش ۵ – پروژههای کامل (سوال 81–100)
81. بازی حدس عدد
82. بازی حرکت دکمه فرار
83. تایمر Pomodoro
84. برنامه مدیریت کارها (To-Do List)
85. جستجوی فایل در پوشه و نمایش
86. ساخت گالری عکس
87. ماشین حساب علمی
88. برنامه ثبت هزینهها
89. نمایش آبوهوا (API)
90. ساخت چتروم ساده (Socket)
91. نمایش PDF در Tkinter
92. ادغام PDF با دکمه
93. ارسال ایمیل از طریق Tkinter
94. اجرای دستورات ترمینال
95. برنامه مدیریت رمز عبور
96. بازی مار با Tkinter
97. بازی پینگ پنگ
98. پخش موزیک
99. ویرایش تصویر (PIL)
100. خروج از برنامه با کلید Esc
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)
---
---
بخش ۱: مبانی هوش مصنوعی و داده (سوال 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)
---
---
بخش ۲: NumPy و Pandas پیشرفته (سوال 21–40)
21. انتخاب یک بخش خاص از آرایه (Slicing)
import numpy as np
arr = np.arange(10)
print(arr[2:7])
22. انتخاب سطر و ستون خاص از ماتریس
import numpy as np
arr = np.arange(1, 10).reshape(3, 3)
print(arr[1, 2]) # سطر دوم، ستون سوم
23. عملیات جمع و ضرب عنصر به عنصر
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a * b)
24. ضرب ماتریسی
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))
25. ترانهاده (Transpose) یک ماتریس
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T)
26. انتخاب دادهها با ماسک شرطی
import numpy as np
arr = np.arange(10)
print(arr[arr > 5])
27. جایگزینی مقادیر بر اساس شرط
import numpy as np
arr = np.arange(10)
arr[arr < 5] = 0
print(arr)
28. پیدا کردن اندیس بیشترین مقدار
import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmax(arr))
29. پیدا کردن اندیس کمترین مقدار
import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmin(arr))
30. ذخیره و بارگذاری آرایه NumPy
import numpy as np
arr = np.arange(5)
np.save("array.npy", arr)
loaded = np.load("array.npy")
print(loaded)
31. گروهبندی دادهها در Pandas
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali"], "Score": [90, 85, 95]})
print(df.groupby("Name").mean())
32. شمارش تعداد هر مقدار در یک ستون
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali", "Mina"]})
print(df["Name"].value_counts())
33. ادغام دو جدول بر اساس ستون مشترک
import pandas as pd
df1 = pd.DataFrame({"ID": [1, 2], "Name": ["Ali", "Sara"]})
df2 = pd.DataFrame({"ID": [1, 2], "Score": [90, 85]})
merged = pd.merge(df1, df2, on="ID")
print(merged)
34. تبدیل ستون به نوع داده جدید
import pandas as pd
df = pd.DataFrame({"Age": ["25", "30", "35"]})
df["Age"] = df["Age"].astype(int)
print(df)
35. انتخاب سطر با اندیس خاص
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Mina"]})
print(df.iloc[1])
36. تغییر اندیس DataFrame
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.index = ["A", "B"]
print(df)
37. ادغام دادهها با append
import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali"], "Age": [25]})
df2 = pd.DataFrame({"Name": ["Sara"], "Age": [30]})
print(df1.append(df2, ignore_index=True))
38. Pivot Table در Pandas
import pandas as pd
df = pd.DataFrame({
"Name": ["Ali", "Sara", "Ali"],
"Subject": ["Math", "Math", "English"],
"Score": [90, 85, 95]
})
print(df.pivot_table(values="Score", index="Name", columns="Subject"))
39. ذخیره DataFrame به Excel
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.to_excel("data.xlsx", index=False)
40. خواندن فایل Excel
import pandas as pd
df = pd.read_excel("data.xlsx")
print(df)
بخش ۲: NumPy و Pandas پیشرفته (سوال 21–40)
21. انتخاب یک بخش خاص از آرایه (Slicing)
import numpy as np
arr = np.arange(10)
print(arr[2:7])
22. انتخاب سطر و ستون خاص از ماتریس
import numpy as np
arr = np.arange(1, 10).reshape(3, 3)
print(arr[1, 2]) # سطر دوم، ستون سوم
23. عملیات جمع و ضرب عنصر به عنصر
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a * b)
24. ضرب ماتریسی
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))
25. ترانهاده (Transpose) یک ماتریس
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T)
26. انتخاب دادهها با ماسک شرطی
import numpy as np
arr = np.arange(10)
print(arr[arr > 5])
27. جایگزینی مقادیر بر اساس شرط
import numpy as np
arr = np.arange(10)
arr[arr < 5] = 0
print(arr)
28. پیدا کردن اندیس بیشترین مقدار
import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmax(arr))
29. پیدا کردن اندیس کمترین مقدار
import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmin(arr))
30. ذخیره و بارگذاری آرایه NumPy
import numpy as np
arr = np.arange(5)
np.save("array.npy", arr)
loaded = np.load("array.npy")
print(loaded)
31. گروهبندی دادهها در Pandas
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali"], "Score": [90, 85, 95]})
print(df.groupby("Name").mean())
32. شمارش تعداد هر مقدار در یک ستون
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali", "Mina"]})
print(df["Name"].value_counts())
33. ادغام دو جدول بر اساس ستون مشترک
import pandas as pd
df1 = pd.DataFrame({"ID": [1, 2], "Name": ["Ali", "Sara"]})
df2 = pd.DataFrame({"ID": [1, 2], "Score": [90, 85]})
merged = pd.merge(df1, df2, on="ID")
print(merged)
34. تبدیل ستون به نوع داده جدید
import pandas as pd
df = pd.DataFrame({"Age": ["25", "30", "35"]})
df["Age"] = df["Age"].astype(int)
print(df)
35. انتخاب سطر با اندیس خاص
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Mina"]})
print(df.iloc[1])
36. تغییر اندیس DataFrame
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.index = ["A", "B"]
print(df)
37. ادغام دادهها با append
import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali"], "Age": [25]})
df2 = pd.DataFrame({"Name": ["Sara"], "Age": [30]})
print(df1.append(df2, ignore_index=True))
38. Pivot Table در Pandas
import pandas as pd
df = pd.DataFrame({
"Name": ["Ali", "Sara", "Ali"],
"Subject": ["Math", "Math", "English"],
"Score": [90, 85, 95]
})
print(df.pivot_table(values="Score", index="Name", columns="Subject"))
39. ذخیره DataFrame به Excel
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.to_excel("data.xlsx", index=False)
40. خواندن فایل Excel
import pandas as pd
df = pd.read_excel("data.xlsx")
print(df)
(سوال 41–100) و اینطوری کامل میشه.
بخش ۳: مصورسازی دادهها (Matplotlib / Seaborn) — سوال 41–60
41. رسم یک نمودار خطی ساده
42. تغییر رنگ و سبک خط
43. افزودن عنوان و برچسب محورها
44. رسم چند خط در یک نمودار
45. رسم نمودار میلهای (Bar Chart)
46. نمودار میلهای افقی
47. رسم نمودار دایرهای (Pie Chart)
48. رسم نمودار Scatter
49. تغییر اندازه شکل
50. ذخیره نمودار به فایل
51. استفاده از Seaborn برای نمودار خطی
52. نمودار Scatter با Seaborn
53. نمودار جعبهای (Boxplot)
54. نمودار Histogram
55. Heatmap با Seaborn
56. Pairplot در Seaborn
57. اضافه کردن رنگبندی به نمودار میلهای
58. رسم KDE Plot
59. رسم نمودار با DataFrame مستقیم
60. ذخیره نمودار Seaborn
بخش ۴: مقدمات یادگیری ماشین (scikit-learn) — سوال 61–80
61. نصب scikit-learn
62. وارد کردن کتابخانههای پایه
63. ساخت داده نمونه با NumPy
64. تقسیم داده به آموزش و تست
65. ایجاد مدل رگرسیون خطی و آموزش
66. پیشبینی مقادیر
67. محاسبه دقت مدل
68. مدل طبقهبندی با Logistic Regression
69. استفاده از Decision Tree
70. رسم درخت تصمیم
71. مدل Random Forest
72. نرمالسازی دادهها
73. استانداردسازی دادهها
74. استفاده از KNN
75. مدل SVM
76. Confusion Matrix
77. Classification Report
بخش ۳: مصورسازی دادهها (Matplotlib / Seaborn) — سوال 41–60
41. رسم یک نمودار خطی ساده
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 16] plt.plot(x, y) plt.show() 42. تغییر رنگ و سبک خط
plt.plot(x, y, color='red', linestyle='--', marker='o') plt.show() 43. افزودن عنوان و برچسب محورها
plt.plot(x, y) plt.title("My Chart") plt.xlabel("X Axis") plt.ylabel("Y Axis") plt.show() 44. رسم چند خط در یک نمودار
plt.plot(x, y, label="Squared") plt.plot(x, [i**3 for i in x], label="Cubed") plt.legend() plt.show() 45. رسم نمودار میلهای (Bar Chart)
plt.bar(["A", "B", "C"], [3, 7, 5]) plt.show() 46. نمودار میلهای افقی
plt.barh(["A", "B", "C"], [3, 7, 5]) plt.show() 47. رسم نمودار دایرهای (Pie Chart)
plt.pie([30, 50, 20], labels=["A", "B", "C"], autopct="%1.1f%%") plt.show() 48. رسم نمودار Scatter
plt.scatter([5, 7, 8], [7, 8, 6]) plt.show() 49. تغییر اندازه شکل
plt.figure(figsize=(8, 5)) plt.plot(x, y) plt.show() 50. ذخیره نمودار به فایل
plt.plot(x, y) plt.savefig("chart.png") 51. استفاده از Seaborn برای نمودار خطی
import seaborn as sns sns.lineplot(x=[1, 2, 3], y=[4, 5, 6]) plt.show() 52. نمودار Scatter با Seaborn
sns.scatterplot(x=[5, 7, 8], y=[7, 8, 6]) plt.show() 53. نمودار جعبهای (Boxplot)
sns.boxplot(x=[7, 8, 5, 6, 9]) plt.show() 54. نمودار Histogram
sns.histplot([1, 2, 2, 3, 3, 3, 4]) plt.show() 55. Heatmap با Seaborn
import numpy as np data = np.random.rand(3, 3) sns.heatmap(data, annot=True) plt.show() 56. Pairplot در Seaborn
import pandas as pd df = sns.load_dataset("iris") sns.pairplot(df, hue="species") plt.show() 57. اضافه کردن رنگبندی به نمودار میلهای
sns.barplot(x=["A", "B", "C"], y=[3, 7, 5], palette="coolwarm") plt.show() 58. رسم KDE Plot
sns.kdeplot([1, 2, 2, 3, 4, 5]) plt.show() 59. رسم نمودار با DataFrame مستقیم
df = pd.DataFrame({"x": [1, 2, 3], "y": [4, 5, 6]}) sns.lineplot(data=df, x="x", y="y") plt.show() 60. ذخیره نمودار Seaborn
plot = sns.lineplot(x=[1, 2, 3], y=[4, 5, 6]) plt.savefig("seaborn_chart.png") بخش ۴: مقدمات یادگیری ماشین (scikit-learn) — سوال 61–80
61. نصب scikit-learn
pip install scikit-learn 62. وارد کردن کتابخانههای پایه
from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression 63. ساخت داده نمونه با NumPy
import numpy as np X = np.array([[1], [2], [3], [4]]) y = np.array([2, 4, 6, 8]) 64. تقسیم داده به آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25) 65. ایجاد مدل رگرسیون خطی و آموزش
model = LinearRegression() model.fit(X_train, y_train) 66. پیشبینی مقادیر
predictions = model.predict(X_test) print(predictions) 67. محاسبه دقت مدل
print(model.score(X_test, y_test)) 68. مدل طبقهبندی با Logistic Regression
from sklearn.linear_model import LogisticRegression X = [[0, 0], [1, 1]] y = [0, 1] clf = LogisticRegression().fit(X, y) print(clf.predict([[2, 2]])) 69. استفاده از Decision Tree
from sklearn.tree import DecisionTreeClassifier clf = DecisionTreeClassifier().fit(X, y) 70. رسم درخت تصمیم
from sklearn import tree tree.plot_tree(clf) plt.show() 71. مدل Random Forest
from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier().fit(X, y) 72. نرمالسازی دادهها
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X) 73. استانداردسازی دادهها
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_std = scaler.fit_transform(X) 74. استفاده از KNN
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3).fit(X, y) 75. مدل SVM
from sklearn import svm clf = svm.SVC().fit(X, y) 76. Confusion Matrix
from sklearn.metrics import confusion_matrix print(confusion_matrix(y_test, model.predict(X_test))) 77. Classification Report