آموزش برنامه‌نویسی پایتون و هوش مصنوعی
140 subscribers
358 photos
190 videos
41 files
172 links
🎯 یادگیری پایتون با رویکردی متفاوت
🚀 آموزش‌های کاملاً عملی و پروژه‌محور
💻 مسیر تبدیل شدن به یک برنامه‌نویس حرفه‌ای
🌟 فرقی نداره مبتدی هستی یا پیشرفته، از هر سطحی شروع کن و پایتون رو اصولی یاد بگیر
📩 ارتباط با ادمین: @YMahmoodian
09156519984
Download Telegram
78. TF-IDF ساده
from sklearn.feature_extraction.text import TfidfVectorizer texts = ["I love AI", "AI is great"] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(texts) print(X.toarray())
79. مدل ساده شبکه عصبی با Keras
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy as np X = np.array([[0],[1],[2],[3]]) y = np.array([0,0,1,1]) model = Sequential([Dense(1,input_dim=1,activation='sigmoid')]) model.compile(optimizer='adam', loss='binary_crossentropy') model.fit(X,y,epochs=50,verbose=0) print(model.predict(X))
80. پیش‌بینی چندکلاسه با شبکه عصبی
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy as np X = np.array([[0,0],[0,1],[1,0],[1,1]]) y = np.array([[1,0,0],[0,1,0],[0,1,0],[0,0,1]]) # one-hot model = Sequential([Dense(3,input_dim=2,activation='softmax')]) model.compile(optimizer='adam', loss='categorical_crossentropy') model.fit(X,y,epochs=100,verbose=0) print(model.predict(X))
پروژه‌های 81 تا 100: یادگیری عمیق پیشرفته، CNN، RNN، پردازش تصویر و NLP.
پروژه 81–100: یادگیری عمیق پیشرفته
81. شبکه عصبی کانولوشنی (CNN) برای MNIST
from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense from tensorflow.keras.utils import to_categorical (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(-1,28,28,1)/255.0 X_test = X_test.reshape(-1,28,28,1)/255.0 y_train = to_categorical(y_train) y_test = to_categorical(y_test) model = Sequential([ Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1)), MaxPooling2D((2,2)), Flatten(), Dense(128,activation='relu'), Dense(10,activation='softmax') ]) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(X_train, y_train, epochs=3, batch_size=32, verbose=1) print(model.evaluate(X_test, y_test))
82. شبکه عصبی بازگشتی (RNN) ساده
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import SimpleRNN, Dense import numpy as np X = np.random.rand(100,10,1) y = np.random.rand(100,1) model = Sequential([ SimpleRNN(10, input_shape=(10,1)), Dense(1) ]) model.compile(optimizer='adam', loss='mse') model.fit(X,y,epochs=5)
83. LSTM برای پیش‌بینی سری زمانی
from tensorflow.keras.layers import LSTM X = np.random.rand(100,5,1) y = np.random.rand(100,1) model = Sequential([ LSTM(20, input_shape=(5,1)), Dense(1) ]) model.compile(optimizer='adam', loss='mse') model.fit(X,y,epochs=5)
84. GRU ساده
from tensorflow.keras.layers import GRU X = np.random.rand(50,4,1) y = np.random.rand(50,1) model = Sequential([GRU(10, input_shape=(4,1)), Dense(1)]) model.compile(optimizer='adam', loss='mse') model.fit(X,y,epochs=5)
85. Autoencoder ساده
from tensorflow.keras.layers import Input, Dense from tensorflow.keras.models import Model import numpy as np X = np.random.rand(100,20) input_layer = Input(shape=(20,)) encoded = Dense(10, activation='relu')(input_layer) decoded = Dense(20, activation='sigmoid')(encoded) autoencoder = Model(input_layer, decoded) autoencoder.compile(optimizer='adam', loss='mse') autoencoder.fit(X,X,epochs=10)
86. GAN ساده
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy as np # Generator generator = Sequential([Dense(16,input_dim=5,activation='relu'), Dense(1,activation='sigmoid')]) # Discriminator discriminator = Sequential([Dense(16,input_dim=1,activation='relu'), Dense(1,activation='sigmoid')])
(نمونه پایه GAN برای شروع)
87. پردازش متن با Embedding
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding, Flatten, Dense import numpy as np X = np.random.randint(0,100, (10,5)) y = np.random.randint(0,2,(10,1)) model = Sequential([Embedding(input_dim=100, output_dim=8, input_length=5), Flatten(), Dense(1,activation='sigmoid')]) model.compile(optimizer='adam', loss='binary_crossentropy') model.fit(X,y,epochs=5)
88. پردازش متن با LSTM
from tensorflow.keras.layers import LSTM model = Sequential([ Embedding(input_dim=100, output_dim=8, input_length=5), LSTM(16), Dense(1,activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy')
89. تحلیل احساسات (Sentiment Analysis)
from sklearn.model_selection import train_test_split from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences texts = ["I love AI", "I hate bugs"] labels = [1,0] tokenizer = Tokenizer(num_words=100) tokenizer.fit_on_texts(texts) X = tokenizer.texts_to_sequences(texts) X = pad_sequences(X, maxlen=5) y = np.array(labels)
90. شبکه CNN برای متن
from tensorflow.keras.layers import Conv1D, MaxPooling1D model = Sequential([ Embedding(input_dim=100, output_dim=8, input_length=5), Conv1D(16, 3, activation='relu'), MaxPooling1D(2), Flatten(), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy')
91. پیش‌بینی تصویر با CNN سفارشی
# مشابه MNIST، اما می‌توانید داده‌های دلخواه را بارگذاری کنید
92. انتقال یادگیری (Transfer Learning) با VGG16
from tensorflow.keras.applications import VGG16 from tensorflow.keras.models import Model from tensorflow.keras.layers import Dense, Flatten base_model = VGG16(weights='imagenet', include_top=False, input_shape=(64,64,3)) x = Flatten()(base_model.output) x = Dense(10, activation='softmax')(x) model = Model(base_model.input, x)
93. طبقه‌بندی تصویر با ResNet50
from tensorflow.keras.applications import ResNet50 # مشابه مثال بالا
94. شناسایی اشیاء ساده با YOLO (پایه)
# می‌توان از کتابخانه yolov5 استفاده کرد
95. تشخیص چهره با OpenCV
import cv2 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray,1.3,5) print(faces)
96. پیش‌بینی توالی با RNN
# مشابه LSTM/Gru، با داده‌های توالی
97. ترجمه متن ساده با Seq2Seq
# استفاده از LSTM encoder-decoder
98. شبیه‌سازی چت‌بات ساده
# استفاده از LSTM + Embedding
99. پیش‌بینی قیمت سهام با RNN
# مشابه LSTM سری زمانی
100. سیستم پیشنهاددهی ساده (Collaborative Filtering)
import numpy as np ratings = np.array([[5,3,0],[4,0,0],[1,1,0]]) user_mean = np.mean(ratings, axis=1).reshape(-1,1) ratings_diff = ratings - user_mean # مشابه SVD یا مدل‌های ساده پیشنهاددهنده
۱۰۰ نکته و ترفند حرفه‌ای پایتون (شماره ۱ تا ۱۰۰)



۱–۲۰: نکات و ترفندهای پایتون با کد

۱. swap دو متغیر بدون متغیر کمکی

a, b = 5, 10 a, b = b, a print(a, b) # 10 5

۲. معکوس کردن رشته با slicing

s = "Python" print(s[::-1]) # nohtyP

۳. معکوس کردن لیست با slicing

lst = [1, 2, 3] print(lst[::-1]) # [3,2,1]

۴. جمع و میانگین لیست با یک خط

lst = [1,2,3,4] print(sum(lst), sum(lst)/len(lst)) # 10 2.5

۵. پیدا کردن بیشترین و کمترین مقدار با یک خط

lst = [5,1,8,3] print(max(lst), min(lst)) # 8 1

۶. استفاده حرفه‌ای از enumerate

lst = ["a","b","c"] for idx, val in enumerate(lst, start=1): print(idx, val)

۷. ترکیب دو لیست با zip

names = ["Ali","Sara"] ages = [25,30] for n,a in zip(names, ages): print(n,a)

۸. بررسی اینکه همه یا یکی از مقادیر True است

lst = [0,1,2] print(all(lst), any(lst)) # False True

*۹. unpacking چند متغیر با rest

a, *rest, b = [1,2,3,4,5] print(a, rest, b) # 1 [2,3,4] 5

۱۰. ساخت دیکشنری از دو لیست

keys = ["a","b"] values = [1,2] d = dict(zip(keys, values)) print(d) # {'a':1,'b':2}

۱۱. merge کردن دو دیکشنری (Python 3.9+)

d1 = {"a":1} d2 = {"b":2} d3 = d1 | d2 print(d3) # {'a':1,'b':2}

۱۲. شمارش عناصر تکراری با collections.Counter

from collections import Counter lst = [1,2,2,3] print(Counter(lst)) # Counter({2:2,1:1,3:1})

۱۳. مرتب‌سازی دیکشنری بر اساس مقدار

d = {"a":3,"b":1} print(sorted(d.items(), key=lambda x: x[1])) # [('b',1),('a',3)]

۱۴. استفاده کوتاه از lambda

f = lambda x: x**2 print(f(5)) # 25

۱۵. map و filter با lambda

lst = [1,2,3,4] print(list(map(lambda x:x*2,lst))) # [2,4,6,8] print(list(filter(lambda x:x>2,lst))) # [3,4]

۱۶. reduce برای جمع یا ضرب لیست

from functools import reduce lst = [1,2,3,4] print(reduce(lambda x,y: x*y,lst)) # 24

۱۷. one-liner swap دو متغیر با tuple

a,b = 1,2; a,b = b,a; print(a,b) # 2 1

۱۸. بررسی نوع متغیر در یک خط

x = 10 print(type(x) is int) # True

۱۹. ساخت لیست از رشته با comprehension

s = "Python" lst = [c.upper() for c in s] print(lst) # ['P','Y','T','H','O','N']

۲۰. حذف فاصله‌ها از لیست رشته‌ها

lst = [" a "," b "] lst = [x.strip() for x in lst] print(lst) # ['a','b']

---

۲۱–۴۰: نکات حرفه‌ای پایتون

۲۱. تبدیل لیست به set برای حذف تکراری‌ها

lst = [1,2,2,3]
print(list(set(lst))) # [1,2,3]

۲۲. بررسی اینکه رشته با prefix یا suffix شروع/تمام می‌شود

s = "Python3"
print(s.startswith("Py"), s.endswith("3")) # True True

۲۳. استفاده از f-string برای قالب‌بندی حرفه‌ای

name = "Ali"
age = 25
print(f"My name is {name} and age is {age}")

۲۴. multi-line f-string

name = "Sara"
msg = f"""Hello {name},
Welcome to Python!"""
print(msg)

۲۵. join برای ادغام رشته‌ها

lst = ["a","b","c"]
print("-".join(lst)) # a-b-c

۲۶. split برای جدا کردن رشته

s = "a,b,c"
print(s.split(",")) # ['a','b','c']

۲۷. تبدیل عدد به رشته و بالعکس

n = 123
s = str(n)
print(s, int(s)+1) # '123' 124

۲۸. شمارش کاراکترها در رشته

s = "hello"
print(s.count("l")) # 2

۲۹. بررسی اینکه همه حروف رشته حروف الفبا هستند

s = "Hello"
print(s.isalpha()) # True

۳۰. بررسی اینکه همه کاراکترها عدد هستند

s = "123"
print(s.isdigit()) # True

۳۱. تبدیل همه حروف به بزرگ/کوچک

s = "Python"
print(s.upper(), s.lower()) # PYTHON python

۳۲. replace برای جایگزینی متن

s = "Python is fun"
print(s.replace("fun","awesome")) # Python is awesome

۳۳. استفاده از strip برای حذف فاصله‌های اضافی

s = " hello "
print(s.strip()) # hello

۳۴. حذف فاصله‌های سمت چپ و راست به طور جداگانه

s = " hello "
print(s.lstrip(), s.rstrip()) # 'hello ' ' hello'

۳۵. قالب‌بندی عدد با f-string و تعداد رقم

x = 3.14159
print(f"{x:.2f}") # 3.14

۳۶. قالب‌بندی عدد با padding

n = 5
print(f"{n:03}") # 005

۳۷. استفاده از slicing برای استخراج substring

s = "Python"
print(s[1:4]) # yth

۳۸. negative indexing

s = "Python"
print(s[-1], s[-3:-1]) # n ho

۳۹. دسترسی به آخرین عنصر لیست با -1

lst = [1,2,3]
print(lst[-1]) # 3

۴۰. حذف عنصر از لیست با pop

lst = [1,2,3]
lst.pop() # حذف آخرین
lst.pop(0) # حذف اولین
print(lst) # [2]


---

۴۱–۶۰: نکات حرفه‌ای پایتون

۴۱. حذف همه عناصر یک لیست

lst = [1,2,3] lst.clear() print(lst) # []

۴۲. گرفتن طول لیست، رشته یا دیکشنری
lst = [1,2,3] d = {"a":1,"b":2} s = "Python" print(len(lst), len(d), len(s)) # 3 2 6

۴۳. بررسی وجود عنصر در لیست یا رشته

lst = [1,2,3] s = "Python" print(2 in lst, "Py" in s) # True True

۴۴. مرتب‌سازی لیست

lst = [3,1,2] lst.sort() print(lst) # [1,2,3]

۴۵. معکوس کردن لیست

lst = [1,2,3] lst.reverse() print(lst) # [3,2,1]

۴۶. کپی کردن لیست بدون تغییر لیست اصلی

lst1 = [1,2,3] lst2 = lst1.copy() lst2.append(4) print(lst1, lst2) # [1,2,3] [1,2,3,4]

۴۷. استفاده از enumerate برای گرفتن اندیس و مقدار همزمان

lst = ["a","b","c"] for i,val in enumerate(lst): print(i,val)

۴۸. استفاده از zip برای ترکیب دو لیست

a = [1,2] b = ["x","y"] for x,y in zip(a,b): print(x,y)

۴۹. ساخت لیست با comprehension

lst = [x**2 for x in range(5)] print(lst) # [0,1,4,9,16]

۵۰. شرط در list comprehension

lst = [x for x in range(10) if x%2==0] print(lst) # [0,2,4,6,8]

۵۱. ساخت دیکشنری با comprehension

d = {x:x**2 for x in range(5)} print(d) # {0:0,1:1,2:4,3:9,4:16}

۵۲. استفاده از get در دیکشنری برای جلوگیری از خطا

d = {"a":1} print(d.get("b",0)) # 0

۵۳. حذف کلید از دیکشنری با pop

d = {"a":1,"b":2} d.pop("a") print(d) # {"b":2}

۵۴. دسترسی به کلیدها، مقادیر و جفت‌ها

d = {"a":1,"b":2} print(d.keys(), d.values(), d.items())

۵۵. استفاده از set comprehension

s = {x**2 for x in range(5)} print(s) # {0,1,4,9,16}

۵۶. بررسی زیرمجموعه بودن set

a = {1,2,3} b = {2,3} print(b.issubset(a)) # True

۵۷. union و intersection در set

a = {1,2} b = {2,3} print(a|b, a&b) # {1,2,3} {2}

۵۸. copy و deepcopy برای اشیاء پیچیده

import copy lst1 = [[1,2],[3,4]] lst2 = copy.deepcopy(lst1) lst2[0][0] = 100 print(lst1, lst2) # [[1,2],[3,4]] [[100,2],[3,4]]

۵۹. استفاده از lambda برای توابع کوتاه

f = lambda x: x**2 print(f(5)) # 25

۶۰. استفاده از map برای اعمال تابع روی همه عناصر

lst = [1,2,3] squared = list(map(lambda x:x**2,lst)) print(squared) # [1,4,9]

۶۱–۸۰: نکات حرفه‌ای پایتون

۶۱. استفاده از filter برای فیلتر کردن لیست

lst = [1,2,3,4,5]
even = list(filter(lambda x: x%2==0, lst))
print(even) # [2,4]

۶۲. استفاده از reduce برای جمع عناصر

from functools import reduce
lst = [1,2,3,4]
total = reduce(lambda x,y: x+y, lst)
print(total) # 10

۶۳. مرتب‌سازی با کلید دلخواه (key)

lst = ["apple","banana","kiwi"]
lst.sort(key=len)
print(lst) # ['kiwi','apple','banana']

۶۴. معکوس کردن رشته با slicing

s = "Python"
print(s[::-1]) # "nohtyP"

۶۵. استفاده از any و all

lst = [True, False, True]
print(any(lst), all(lst)) # True False

۶۶. شمارش تعداد عنصر در لیست با count

lst = [1,2,2,3]
print(lst.count(2)) # 2

۶۷. تبدیل لیست به رشته با join

lst = ["Python","is","fun"]
s = " ".join(lst)
print(s) # "Python is fun"

۶۸. شکستن رشته به لیست با split

s = "Python is fun"
lst = s.split()
print(lst) # ['Python','is','fun']

۶۹. حذف فاصله‌های اضافی با strip

s = " hello "
print(s.strip()) # "hello"

۷۰. تعویض مقدار با replace در رشته

s = "Python is fun"
print(s.replace("fun","awesome")) # "Python is awesome"

۷۱. استفاده از enumerate با شروع از اندیس دلخواه

lst = ["a","b"]
for i,val in enumerate(lst, start=1):
print(i,val) # 1 a \n 2 b

۷۲. گرفتن اولین n عنصر لیست

lst = [1,2,3,4]
print(lst[:2]) # [1,2]

۷۳. گرفتن آخرین n عنصر لیست

lst = [1,2,3,4]
print(lst[-2:]) # [3,4]

۷۴. استفاده از iter و next برای پیمایش

lst = [1,2,3]
it = iter(lst)
print(next(it)) # 1
print(next(it)) # 2

۷۵. استفاده از enumerate و zip همزمان

names = ["Alice","Bob"]
ages = [25,30]
for i,(name,age) in enumerate(zip(names,ages)):
print(i,name,age)

۷۶. گرفتن بزرگ‌ترین و کوچک‌ترین عنصر لیست

lst = [3,1,4,2]
print(max(lst), min(lst)) # 4 1

۷۷. ساخت tuple از چند عنصر

t = (1,2,3)
print(t[0], t[-1]) # 1 3

۷۸. تبدیل tuple به لیست و بالعکس

t = (1,2)
lst = list(t)
t2 = tuple(lst)

۷۹. unpacking لیست یا tuple

a,b,c = [1,2,3]
print(a,b,c) # 1 2 3

۸۰. استفاده از _ برای نادیده گرفتن مقدار در unpacking

a, _, c = [1,2,3]
print(a,c) # 1 3


---

۸۱–۱۰۰: نکات پیشرفته و ترکیبی پایتون

۸۱. استفاده از dict comprehension

squares = {x: x**2 for x in range(5)} print(squares) # {0:0,1:1,2:4,3:9,4:16}

۸۲. استفاده از set comprehension
unique = {x%3 for x in range(10)} print(unique) # {0,1,2}

۸۳. گرفتن عناصر منحصربه‌فرد لیست با set

lst = [1,2,2,3] unique = list(set(lst)) print(unique) # [1,2,3]

۸۴. مرتب‌سازی دیکشنری بر اساس مقدار

d = {'a':3,'b':1,'c':2} sorted_items = sorted(d.items(), key=lambda x: x[1]) print(sorted_items) # [('b',1),('c',2),('a',3)]

۸۵. ترکیب چند لیست با zip

names = ["Alice","Bob"] ages = [25,30] for name, age in zip(names, ages): print(name, age)

۸۶. استفاده از get برای دیکشنری با مقدار پیش‌فرض

d = {"a":1} print(d.get("b",0)) # 0

۸۷. حذف کلید از دیکشنری با pop

d = {"a":1,"b":2} val = d.pop("a") print(d, val) # {'b':2} 1

۸۸. بررسی وجود کلید در دیکشنری

d = {"a":1} print("a" in d, "b" in d) # True False

۸۹. استفاده از defaultdict

from collections import defaultdict d = defaultdict(list) d['a'].append(1) print(d) # defaultdict(<class 'list'>, {'a':[1]})

۹۰. استفاده از Counter برای شمارش عناصر

from collections import Counter lst = [1,2,2,3] count = Counter(lst) print(count) # Counter({2:2,1:1,3:1})

۹۱. مدیریت خطا با try-except

try: x = 1/0 except ZeroDivisionError: print("Cannot divide by zero")

۹۲. finally برای اجرای نهایی

try: x = 1 finally: print("Always executed")

۹۳. ایجاد کلاس ساده

class Person: def init(self, name): self.name = name p = Person("Alice") print(p.name)

۹۴. متد کلاس و نمونه

class Person: def greet(self): print("Hello") p = Person() p.greet() # Hello

۹۵. ارث‌بری (Inheritance)

class Animal: def sound(self): print("Some sound") class Dog(Animal): pass Dog().sound() # Some sound

۹۶. بازنویسی متد کلاس پایه

class Dog(Animal): def sound(self): print("Woof") Dog().sound() # Woof

۹۷. استفاده از super()

class Dog(Animal): def sound(self): super().sound() print("Woof") Dog().sound() # Some sound # Woof

۹۸. متد استاتیک و کلاس‌متد

class MyClass: @staticmethod def static_method(): print("Static") @classmethod def class_method(cls): print("Class") MyClass.static_method() MyClass.class_method()

۹۹. استفاده از property برای getter و setter

class Person: def init(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, value): self._name = value p = Person("Alice") print(p.name) p.name = "Bob" print(p.name)

۱۰۰. استفاده از lambda و map

lst = [1,2,3] squared = list(map(lambda x: x**2, lst)) print(squared) # [1,4,9]
فصل هوش مصنوعی، یادگیری ماشین و یادگیری عمیق با پایتون را با ۱۰۰ سوال و جواب شروع می‌کنیم.

بخش ۱: مفاهیم پایه AI و ML (سوال ۱–۲۰)

۱. تفاوت AI، ML و DL چیست؟

AI: شبیه‌سازی رفتار هوشمند انسان.

ML: الگوریتم‌هایی که از داده یاد می‌گیرند.

DL: زیرمجموعه ML با شبکه‌های عصبی عمیق.


۲. انواع یادگیری ماشین کدامند؟

Supervised: داده‌های برچسب‌دار

Unsupervised: داده‌های بدون برچسب

Reinforcement: یادگیری با پاداش و تنبیه


۳. چرا باید داده‌ها را پیش‌پردازش کنیم؟

حذف مقادیر گمشده، نرمال‌سازی، تبدیل داده‌ها به فرم قابل استفاده توسط مدل


۴. تقسیم داده به train/test چگونه انجام می‌شود؟

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

۵. معیارهای سنجش مدل چه هستند؟

Accuracy، Precision، Recall، F1-score، ROC-AUC


۶. Overfitting چیست؟

زمانی که مدل روی داده‌های آموزش خیلی خوب عمل می‌کند اما روی داده‌های جدید ضعیف است.


۷. Underfitting چیست؟

زمانی که مدل نمی‌تواند حتی داده‌های آموزش را درست پیش‌بینی کند.


۸. Linear Regression چیست و چگونه با پایتون پیاده می‌شود؟

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)

۹. Logistic Regression چیست؟

برای مسائل دسته‌بندی (Classification) استفاده می‌شود.


۱۰. تفاوت Regression و Classification چیست؟

Regression پیش‌بینی عددی می‌کند.

Classification پیش‌بینی دسته‌ای انجام می‌دهد.


۱۱. Cross-validation چیست؟

روش ارزیابی مدل با تقسیم داده‌ها به چند بخش و آموزش و تست متناوب.


۱۲. Feature Scaling چیست و چرا مهم است؟

استانداردسازی یا نرمال‌سازی ویژگی‌ها برای الگوریتم‌های حساس به مقیاس مثل SVM و KNN.


۱۳. معیار MSE چیست؟

Mean Squared Error: میانگین مربعات خطا بین پیش‌بینی و مقدار واقعی.


۱۴. معیار RMSE چیست؟

ریشه مربع MSE؛ مقیاس آن با داده‌ها هم‌خوانی دارد.


۱۵. معیار R² چیست؟

ضریب تعیین: نشان می‌دهد چه درصدی از تغییرات داده‌ها توسط مدل توضیح داده می‌شود.


۱۶. Bias و Variance چیست؟

Bias: خطای سیستماتیک مدل

Variance: حساسیت مدل به تغییرات داده


۱۷. چرا باید داده‌های Missing Value را پر کنیم؟

برای جلوگیری از خطا هنگام آموزش مدل و بهبود دقت پیش‌بینی


۱۸. چه نوع داده‌هایی نیاز به Encoding دارند؟

داده‌های متنی یا دسته‌ای (Categorical) که باید به عدد تبدیل شوند


from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y_encoded = le.fit_transform(y)

۱۹. Normalization و Standardization چه تفاوتی دارند؟

Normalization: مقیاس داده را بین ۰ تا ۱ تغییر می‌دهد

Standardization: داده را با میانگین صفر و انحراف معیار ۱ می‌کند


۲۰. چرا الگوریتم‌های ML به داده‌های تمیز حساس هستند؟

داده‌های نویزی یا غیرمرتبط باعث کاهش دقت مدل می شوند
یادگیری ماشین پیشرفته (سوال ۲۱–۵۰)
بخش ۲: یادگیری ماشین پیشرفته (سوال ۲۱–۵۰)
۲۱. Decision Tree چیست و چطور پیاده‌سازی می‌شود؟
from sklearn.tree import DecisionTreeClassifier model = DecisionTreeClassifier() model.fit(X_train, y_train) pred = model.predict(X_test)
۲۲. Random Forest چیست؟
ترکیبی از چند درخت تصمیم برای کاهش Overfitting و افزایش دقت.
۲۳. Gradient Boosting چیست؟
الگوریتمی که مدل‌ها را متوالی آموزش می‌دهد و خطاهای مدل قبلی را اصلاح می‌کند.
۲۴. Support Vector Machine (SVM) چیست؟
الگوریتم دسته‌بندی که مرز تصمیم با بیشترین فاصله بین کلاس‌ها پیدا می‌کند.
۲۵. K-Nearest Neighbors (KNN) چیست؟
دسته‌بندی یا پیش‌بینی بر اساس نزدیک‌ترین k نمونه به داده جدید.
۲۶. Hyperparameter چیست؟
پارامترهایی که قبل از آموزش مدل تنظیم می‌شوند و روی عملکرد مدل تاثیر دارند.
۲۷. Grid Search چیست؟
روش پیدا کردن بهترین مقادیر Hyperparameter
from sklearn.model_selection import GridSearchCV params = {'max_depth':[3,5,7]} grid = GridSearchCV(DecisionTreeClassifier(), param_grid=params) grid.fit(X_train, y_train) print(grid.best_params_)
۲۸. Random Search چیست؟
مشابه Grid Search اما مقادیر Hyperparameter به صورت تصادفی انتخاب می‌شوند.
۲۹. Feature Importance چیست؟
نشان می‌دهد هر ویژگی چه میزان به پیش‌بینی مدل کمک می‌کند
print(model.feature_importances_)
۳۰. Principal Component Analysis (PCA) چیست؟
کاهش ابعاد داده و حفظ بیشترین واریانس
from sklearn.decomposition import PCA pca = PCA(n_components=2) X_new = pca.fit_transform(X)
۳۱. Logistic Regression برای Classification چندکلاسه چطور است؟
با تکنیک One-vs-Rest یا Softmax پیاده‌سازی می‌شود.
۳۲. Confusion Matrix چیست؟
جدول نمایش تعداد True Positive، True Negative، False Positive، False Negative
from sklearn.metrics import confusion_matrix print(confusion_matrix(y_test, pred))
۳۳. ROC Curve چیست؟
منحنی نمایش trade-off بین True Positive Rate و False Positive Rate
۳۴. AUC چیست؟
Area Under Curve برای سنجش کیفیت مدل دسته‌بندی
۳۵. SMOTE چیست؟
تکنیک Oversampling برای داده‌های نامتوازن
from imblearn.over_sampling import SMOTE sm = SMOTE() X_res, y_res = sm.fit_resample(X, y)
۳۶. Normal Equation چیست؟
روش تحلیلی برای حل Linear Regression بدون Gradient Descent
۳۷. Gradient Descent چیست؟
روش بهینه‌سازی برای کمینه کردن خطا با بروزرسانی وزن‌ها
۳۸. Learning Rate چیست؟
نرخ تغییر وزن‌ها در هر مرحله Gradient Descent
۳۹. Regularization چیست و انواع آن؟
جلوگیری از Overfitting
L1 (Lasso) و L2 (Ridge)
۴۰. Pipeline در Scikit-learn چیست؟
ترکیب چند مرحله preprocessing و مدل
from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler pipe = Pipeline([('scaler', StandardScaler()), ('clf', LogisticRegression())]) pipe.fit(X_train, y_train)
۴۱. Bagging چیست؟
آموزش چند مدل روی نمونه‌های مختلف داده و میانگین گرفتن پیش‌بینی‌ها
۴۲. Boosting چیست؟
آموزش مدل‌ها به ترتیب برای اصلاح خطاهای مدل قبلی
۴۳. Cross-Entropy Loss چیست؟
معیار خطا برای مسائل Classification
۴۴. Mean Absolute Error (MAE) چیست؟
میانگین قدر مطلق خطاها برای مسائل Regression
۴۵. RNN چیست؟
شبکه عصبی بازگشتی برای داده‌های دنباله‌ای مثل متن یا سری زمانی
۴۶. LSTM چیست؟
نسخه پیشرفته RNN با حافظه بلندمدت برای جلوگیری از مشکل Vanishing Gradient
۴۷. Overfitting در Deep Learning چگونه کاهش می‌یابد؟
Dropout، Regularization، افزایش داده‌ها (Data Augmentation)
۴۸. Batch Normalization چیست؟
نرمال‌سازی خروجی هر لایه برای تسریع و پایدارسازی آموزش شبکه
۴۹. Optimizer چیست؟
الگوریتم بروزرسانی وزن‌ها مثل SGD، Adam، RMSProp
۵۰. Epoch چیست؟
یک دوره کامل عبور داده‌ها از شبکه عصبی در فرآیند آموزش
بخش ۳: یادگیری عمیق و شبکه‌های عصبی (سوال ۵۱–۸۰)
۵۱. Perceptron چیست؟
ساده‌ترین شبکه عصبی با یک لایه ورودی و یک خروجی برای دسته‌بندی خطی.
۵۲. Activation Function چیست؟
تابع فعال‌سازی برای اضافه کردن غیرخطی بودن به شبکه
مثال‌ها: ReLU, Sigmoid, Tanh
import torch.nn as nn nn.ReLU() nn.Sigmoid()
۵۳. Feedforward Neural Network چیست؟
شبکه عصبی که اطلاعات فقط جلو به عقب حرکت می‌کنند و حلقه‌ای ندارد.
۵۴. Backpropagation چیست؟
الگوریتم محاسبه گرادیان برای آموزش شبکه عصبی.
۵۵. Tensor چیست؟
آرایه n بعدی داده‌ها در PyTorch یا TensorFlow
import torch x = torch.tensor([[1,2],[3,4]])
۵۶. PyTorch vs TensorFlow چه تفاوتی دارند؟
PyTorch: داینامیک، راحت برای آموزش و Debug
TensorFlow: استاتیک، مناسب Production و TPU
۵۷. Loss Function در Deep Learning چیست؟
معیار خطا، مثل CrossEntropyLoss یا MSELoss
loss_fn = nn.CrossEntropyLoss()
۵۸. Optimizer چیست؟
الگوریتم بروزرسانی وزن‌ها، مثل Adam یا SGD
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
۵۹. Batch Size چیست؟
تعداد نمونه‌هایی که یک بار وارد شبکه می‌شوند.
۶۰. Dropout چیست؟
جلوگیری از Overfitting با غیرفعال کردن تصادفی برخی نورون‌ها
nn.Dropout(0.5)
۶۱. CNN چیست؟
شبکه عصبی کانولوشنی برای داده‌های تصویری
۶۲. Convolution Layer چیست؟
لایه‌ای که فیلترها را روی تصویر اعمال می‌کند
nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3)
۶۳. Pooling Layer چیست؟
کاهش ابعاد ویژگی‌ها و حفظ مهم‌ترین اطلاعات
nn.MaxPool2d(2)
۶۴. Flatten Layer چیست؟
تبدیل خروجی CNN به بردار برای اتصال به Dense Layer
x = x.view(x.size(0), -1)
۶۵. Fully Connected Layer چیست؟
لایه کاملاً متصل برای تصمیم‌گیری نهایی
۶۶. ResNet چیست؟
شبکه با Shortcut Connection برای حل مشکل Vanishing Gradient
۶۷. Transfer Learning چیست؟
استفاده از مدل پیش‌آموزش دیده و اعمال آن روی پروژه جدید
۶۸. Fine-Tuning چیست؟
آموزش مجدد بخش‌هایی از مدل پیش‌آموزش دیده
۶۹. Autoencoder چیست؟
شبکه عصبی برای فشرده‌سازی و بازسازی داده‌ها
۷۰. Variational Autoencoder (VAE) چیست؟
Autoencoder با احتمال‌سنجی برای تولید داده‌های جدید
۷۱. GAN چیست؟
شبکه مولد تقابلی با Generator و Discriminator برای تولید داده
۷۲. Generator چیست؟
بخشی از GAN که داده‌های مصنوعی تولید می‌کند
۷۳. Discriminator چیست؟
بخشی از GAN که داده واقعی و مصنوعی را تشخیص می‌دهد
۷۴. RNN چیست؟
شبکه عصبی برای داده‌های دنباله‌ای
۷۵. LSTM چیست؟
RNN با حافظه بلندمدت برای جلوگیری از مشکل Vanishing Gradient
۷۶. GRU چیست؟
نسخه ساده‌تر و سبک‌تر LSTM
۷۷. Attention چیست؟
مکانیزمی که شبکه روی بخش‌های مهم ورودی تمرکز می‌کند
۷۸. Transformer چیست؟
شبکه عصبی بدون RNN که از Attention برای ترجمه و متن استفاده می‌کند
۷۹. BERT چیست؟
مدل پیش‌آموزش دیده برای NLP با Transformer
۸۰. GPT چیست؟
مدل زبان بزرگ مبتنی بر Transformer برای تولید متن
بخش ۴: پروژه‌های عملی یادگیری ماشین و هوش مصنوعی (سوال ۸۱–۱۰۰)
۸۱. پیش‌بینی قیمت خانه با Linear Regression
داده‌های خانه را با pandas خوانده و با sklearn.linear_model.LinearRegression پیش‌بینی کنید
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) y_pred = model.predict(X_test)
۸۲. دسته‌بندی تصاویر با CNN
از torchvision برای دیتاست MNIST استفاده کنید
import torchvision from torchvision import transforms
۸۳. تشخیص احساسات متن با LSTM
دیتاست IMDB + LSTM در PyTorch
۸۴. تولید متن با GPT-2 کوچک
استفاده از transformers
from transformers import GPT2LMHeadModel, GPT2Tokenizer
۸۵. تشخیص اشیاء با YOLOv5
مدل آماده YOLOv5 روی تصاویر
۸۶. خوشه‌بندی مشتریان با KMeans
تقسیم مشتریان به گروه‌ها
from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3) kmeans.fit(data)
۸۷. کاهش ابعاد با PCA
تحلیل داده‌های پیچیده با Principal Component Analysis
۸۸. سیستم توصیه‌گر ساده
Collaborative Filtering با surprise یا ماتریس امتیاز
۸۹. تشخیص تقلب با Random Forest
داده تراکنش‌ها و مدل درخت تصمیم
۹۰. پیش‌بینی سری زمانی با LSTM
داده‌های دنباله‌ای مثل قیمت ارز یا آب و هوا
۹۱. تولید تصویر با GAN ساده
Generator و Discriminator برای دیتاست کوچک
۹۲. Autoencoder برای کاهش نویز تصویر
آموزش شبکه برای بازسازی تصویر بدون نویز
۹۳. تشخیص چهره با OpenCV و CNN
import cv2 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
۹۴. پردازش زبان طبیعی (NLP) با TF-IDF و Naive Bayes
تحلیل متن، دسته‌بندی ایمیل یا خبر
۹۵. طبقه‌بندی تصاویر با Transfer Learning (ResNet50)
استفاده از مدل پیش‌آموزش دیده برای پروژه کوچک
۹۶. شبیه‌ساز ATM با شرط‌ها و کلاس‌ها
ایجاد سیستم برداشت و واریز پول با مدیریت حساب
۹۷. بازی ساده با Reinforcement Learning
Q-learning یا Gym برای CartPole
۹۸. پیش‌بینی بیماری با Logistic Regression
داده‌های سلامت، تشخیص بله/خیر
۹۹. تحلیل احساسات شبکه‌های اجتماعی با BERT
Classifier متن برای مثبت/منفی بودن
۱۰۰. ساخت چت‌بات ساده با Transformer و PyTorch
دریافت ورودی کاربر و پاسخ‌دهی خودکار
نکات ریز پایتون با مثال

---

۱. چرا پایتون از تورفتگی (Indentation) به جای {} استفاده می‌کند؟

در C یا Java، بلوک‌ها با {} و } مشخص می‌شوند و فاصله‌ها فقط برای خوانایی هستند.

در Python، فاصله‌ها و تورفتگی بخشی از خود زبان هستند.

این باعث می‌شود همه مجبور باشند کد را خوانا بنویسند.


مثال:

# درست
if True:
print("سلام")
print("دنیا")

# نادرست - باعث خطا می‌شود
if True:
print("سلام")

📌 مزیت: همه کدها مرتب و یک‌شکل می‌شوند.
📌 عیب: اگر بی‌دقت باشی، حتی یک فاصله اشتباه خطا می‌دهد.


---

۲. یک خطه نوشتن شرط یا حلقه

در پایتون می‌توان شرط یا حلقه را در یک خط نوشت، ولی باید دقت کرد.

مثال:

if True: print("سلام") # درست
for i in range(3): print(i)

📌 این کار در پروژه‌های واقعی زیاد توصیه نمی‌شود، چون خوانایی را کم می‌کند.


---

۳. جایگزین ++ و -- در پایتون

برخلاف C یا Java، پایتون عملگر ++ یا -- ندارد. باید از += 1 و -= 1 استفاده کنی:

x = 5
x += 1 # معادل ++x
x -= 1 # معادل --x


---

۴. استفاده از pass

وقتی می‌خواهی بلوکی خالی بگذاری، باید pass بنویسی. مثال:

if True:
pass # فعلاً کاری انجام نمی‌دهد

📌 در C می‌توانی بلوک را خالی بگذاری {}، ولی در Python باید چیزی باشد (حتی pass).


---

۵. چند دستور در یک خط

در پایتون می‌توان چند دستور را در یک خط نوشت، ولی باید با ; جدا شوند.

x = 5; y = 10; print(x + y)

📌 در عمل، این روش توصیه نمی‌شود چون خوانایی را کم می‌کند.


---

۶. ادامه دادن کد به خط بعد

گاهی یک خط کد طولانی است و می‌خواهی آن را به چند خط بشکنی:

total = (1 + 2 + 3 +
4 + 5 + 6)

یا با \:

total = 1 + 2 + 3 + \
4 + 5 + 6


---

۷. رشته‌های چندخطی

با ''' یا """ می‌توان متن چند خطی نوشت:

text = """
این یک متن
چند خطی است
"""
print(text)


---

۸. استفاده از _ به عنوان متغیر موقت

وقتی مقدار را نمی‌خواهی:

for _ in range(5):
print("سلام")

📌 در اینجا _ فقط یک اسم موقت است، نه چیز جادویی.


---

۹. متغیرهای چندتایی در یک خط

a, b, c = 1, 2, 3

📌 حتی می‌توان جابه‌جا کرد:

a, b = b, a


---

۱۰. توضیح کوتاه داخل کد با کامنت

x = 5 # این متغیر سن را نگه می‌دارد

📌 در Python فقط # برای کامنت استفاده می‌شود، مثل // در C.


---
۱۱. شرط در یک خط

در C داری:

result = (x > 0) ? "positive" : "negative";

در Python معادلش اینه:

result = "positive" if x > 0 else "negative"


---

۱۲. استفاده از else با حلقه‌ها

برخلاف C، در پایتون حلقه‌ها می‌توانند else داشته باشند.

for i in range(3):
print(i)
else:
print("حلقه تمام شد")

📌 else فقط وقتی اجرا می‌شود که حلقه بدون break تمام شود.


---

۱۳. مقداردهی پیش‌فرض به آرگومان تابع

def greet(name="مهمان"):
print("سلام", name)

greet()
greet("علی")

📌 در C باید تابع را overload کنی، ولی در Python اینطور راحت است.


---

۱۴. گرفتن چند مقدار خروجی

در Python توابع می‌توانند چند مقدار برگردانند:

def calc(a, b):
return a+b, a*b

s, m = calc(3, 4)
print(s, m)

📌 در C باید struct یا pointer استفاده کنی.


---

۱۵. استفاده از *args و **kwargs

*args: آرگومان‌های نامحدود مکانی

**kwargs: آرگومان‌های نامحدود کلیدی


مثال:

def show(*args, **kwargs):
print(args)
print(kwargs)

show(1, 2, 3, name="Ali", age=20)


---

۱۶. مقداردهی سریع لیست

nums = [i for i in range(5)]

📌 این کار بهش می‌گن List Comprehension، در C باید حلقه بنویسی.


---

۱۷. استفاده از _ در اعداد بزرگ

برای خوانایی:

big = 1_000_000
print(big)

📌 _ تاثیری روی مقدار عدد ندارد.


---

۱۸. شرط داخل List Comprehension

nums = [i for i in range(10) if i % 2 == 0]

📌 معادل نوشتن حلقه و شرط جداگانه.


---

۱۹. استفاده از zip

برای ترکیب دو لیست:

names = ["Ali", "Sara"]
scores = [90, 85]

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


---

۲۰. استفاده از enumerate

برای گرفتن شماره ایندکس در حلقه:

names = ["Ali", "Sara"]
for index, name in enumerate(names):
print(index, name)


---
۲۱. استفاده از with برای بستن خودکار منابع
در C باید دستی فایل رو fclose کنی، ولی در Python می‌تونی:
with open("data.txt", "w") as f: f.write("Hello") # اینجا فایل خودش بسته میشه
۲۲. استفاده از _ برای ذخیره نتیجه آخر در IDLE
در محیط Shell (IDLE یا REPL)، متغیر _ آخرین نتیجه رو نگه می‌داره:
>>> 5 + 3 8 >>> _ * 2 16
📌 این فقط در حالت تعاملی کار می‌کنه.
۲۳. استفاده از pass برای نوشتن کد ناقص
وقتی هنوز قراره کد بنویسی ولی نمی‌خوای خطا بده:
def func(): pass
📌 معادل {} خالی در C، ولی برای پایتون لازمه چون بلاک بدون کد خطا میده.
۲۴. استفاده از dir() و help() در IDLE
dir(obj) → لیست توابع و ویژگی‌ها
help(obj) → راهنمای شیء
>>> dir(str) >>> help(str.upper)
۲۵. اجرای چند خط همزمان در IDLE
در IDLE می‌تونی چند خط رو انتخاب و با F5 همه رو اجرا کنی.
۲۶. استفاده از name == "main"
برای جد
ا کردن بخش اجرای مستقیم و بخش کتابخانه:
def func(): print("Hello") if __name__ == "__main__": func()
📌 باعث میشه کد فقط وقتی اجرا بشه که فایل مستقیماً ران بشه.
۲۷. پاک کردن صفحه در IDLE یا هر محیط دیگر
در IDLE دستور رسمی نداره ولی ترفند:
import os os.system('cls') # ویندوز os.system('clear') # لینوکس/مک
یا با شورتکات: Ctrl + L (در بعضی ترمینال‌ها).
۲۸. چند ورودی در یک خط
a, b = map(int, input("Enter two numbers: ").split())
📌 ورودی: 3 4 → a=3, b=4
۲۹. استفاده از any() و all()
any() → اگر یکی True باشه، True
all() → اگر همه True باشن، True
nums = [True, False, True] print(any(nums)) # True print(all(nums)) # False
۳۰. __doc__ برای دیدن توضیحات تابع
print(str.upper.__doc__)
📌 مستقیم توضیح فانکشن رو نشون میده.
تفاوت‌های اصلی پایتون با سایر زبان‌ها (C، C++، Java، JavaScript و…) .


---

PyPlus: 50 نکته ریز و کاربردی پایتون با مثال

۱. تورفتگی (Indentation) به جای {}

if True:
print("سلام")
print("دنیا")
# C/Java: { } لازم است

۲. پایان خط با ; لازم نیست

x = 5
y = 10
print(x + y)
# چند دستور در یک خط: x=5; y=10; print(x+y)

۳. ++ و -- نداریم

x = 5
x += 1
x -= 1

۴. حلقه‌ها می‌توانند else داشته باشند

for i in range(3):
print(i)
else:
print("حلقه بدون break تمام شد")

۵. چند خروجی از تابع

def calc(a, b):
return a+b, a*b
s, m = calc(3,4)
print(s, m)

۶. آرگومان پیش‌فرض راحت

def greet(name="مهمان"):
print("سلام", name)
greet()
greet("علی")

۷. List Comprehension

nums = [x*2 for x in range(5)]

۸. *args و **kwargs

def show(*args, **kwargs):
print(args)
print(kwargs)
show(1,2,3,name="Ali")

۹. _ برای متغیر موقت

for _ in range(3):
print("سلام")

۱۰. کامنت با

x = 5 # سن

۱۱. شرط در یک خط (ternary)

x = 5
result = "مثبت" if x > 0 else "منفی"

۱۲. چند دستور در یک خط با ;

x=1; y=2; print(x+y)

۱۳. ادامه خط با \ یا ()

total = 1 + 2 + 3 + \
4 + 5 + 6

۱۴. رشته چندخطی

text = """سلام
دنیا"""
print(text)

۱۵. جابجایی متغیرها

a, b = 5, 10
a, b = b, a

۱۶. _ در اعداد بزرگ

big = 1_000_000
print(big)

۱۷. شرط داخل List Comprehension

even = [x for x in range(10) if x%2==0]

۱۸. zip برای ترکیب لیست‌ها

names = ["Ali","Sara"]
scores = [90,85]
for n,s in zip(names,scores):
print(n,s)

۱۹. enumerate برای گرفتن ایندکس

for idx, name in enumerate(names):
print(idx, name)

۲۰. with برای باز و بسته خودکار فایل

with open("data.txt","w") as f:
f.write("سلام")

۲۱. _ در IDLE برای آخرین نتیجه

>>> 5+3
8
>>> _*2
16

۲۲. pass برای بلوک خالی

if True:
pass

۲۳. dir() و help()

print(dir(str))
help(str.upper)

۲۴. اجرای چند خط در IDLE

چند خط را انتخاب و F5 → اجرا


۲۵. name == "main"

def func():
print("سلام")
if name == "main":
func()

۲۶. پاک کردن صفحه

import os
os.system('cls') # ویندوز
os.system('clear') # لینوکس/مک

۲۷. ورودی چندتایی در یک خط

a,b = map(int,input().split())

۲۸. any() و all()

nums = [True, False]
print(any(nums)) # True
print(all(nums)) # False

۲۹. doc برای توضیح توابع

print(str.upper.doc)

۳۰. تایپ دینامیک

x = 5
x = "سلام"

۳۱. Duck Typing

def quack(obj):
obj.quack()

۳۲. private convention با _ و __

class Test:
def init(self):
self._hidden = 5
self.__name = "Ali"

۳۳. unpacking لیست و tuple

a,b,*rest = [1,2,3,4]

۳۴. گرفتن substring

text = "Python"
print(text[0:3]) # Pyt

۳۵. negative index

text = "Python"
print(text[-1]) # n

۳۶. reversed() و [::-1]

print(list(reversed([1,2,3])))
print([1,2,3][::-1])

۳۷. set comprehension

squares = {x*x for x in range(5)}

۳۸. dict comprehension

d = {x:x*2 for x in range(5)}

۳۹. حذف با del

nums = [1,2,3]
del nums[0]

۴۰. unpacking dict

d = {'a':1,'b':2}
for k,v in d.items():
print(k,v)

۴۱. lambda functions

f = lambda x: x*2
print(f(5))

۴۲. map() و filter()

nums = [1,2,3]
print(list(map(lambda x:x*2, nums)))
print(list(filter(lambda x:x>1, nums)))

۴۳. Exception handling ساده

try:
1/0
except ZeroDivisionError:
print("تقسیم بر صفر")

۴۴. assert برای تست

x = 5
assert x>0, "خطا"

۴۵. import alias

import math as m
print(m.sqrt(16))

۴۶. slots برای کاهش مصرف حافظه

class Point:
slots = ['x','y']
def init(self,x,y):
self.x=x
self.y=y

۴۷. decorator ساده

def deco(func):
def wrapper():
print("قبل")
func()
print("بعد")
return wrapper

@deco
def hi():
print("سلام")
hi()

۴۸. contextlib برای مدیریت منابع

from contextlib import suppress
with suppress(ZeroDivisionError):
print(1/0)

۴۹. type hints

def add(x:int, y:int)->int:
return x+y

۵۰. f-string برای قالب‌بندی

name="Ali"
age=20
print(f"Name: {name}, Age: {age}")
PyPlus: نکات ریز پایتون ۵۱ تا ۱۰۰
۵۱. unpack کردن لیست داخل توابع
def add(x,y,z): print(x+y+z) nums = [1,2,3] add(*nums) # unpack
۵۲. unpack کردن دیکشنری داخل توابع
def greet(name, age): print(f"{name} is {age}") info = {"name":"Ali","age":20} greet(**info)
۵۳. نامگذاری متغیرهای داخلی کلاس با self
class Person: def __init__(self, name): self.name = name
۵۴. property برای getter/setter
class Person: def __init__(self, name): self._name = name @property def name(self): return self._name p = Person("Ali") print(p.name)
۵۵. حذف آیتم از dict با pop
d = {'a':1,'b':2} x = d.pop('a') print(d)
۵۶. defaultdict از collections
from collections import defaultdict d = defaultdict(int) d['x'] += 1 print(d['x']) # 1
۵۷. Counter از collections
from collections import Counter c = Counter([1,1,2,3]) print(c)
۵۸. namedtuple
from collections import namedtuple Point = namedtuple('Point','x y') p = Point(1,2) print(p.x, p.y)
۵۹. OrderedDict
from collections import OrderedDict d = OrderedDict() d['a']=1 d['b']=2
۶۰. setdefault
d = {} d.setdefault('x', []).append(1) print(d) # {'x':[1]}
۶۱. شبیه‌ساز ATM (مثال پروژه کوچک)
balance = 1000 pin = "1234" input_pin = input("Enter PIN: ") if input_pin == pin: amount = int(input("Amount: ")) if amount <= balance: balance -= amount print("برداشت انجام شد:", amount) else: print("موجودی کافی نیست")
۶۲. بررسی نوع داده
x = 5 print(type(x))
۶۳. isinstance
print(isinstance(5,int)) # True
۶۴. getattr, setattr, delattr
class Person: pass p = Person() setattr(p,'name','Ali') print(getattr(p,'name')) delattr(p,'name')
۶۵. eval و exec (با احتیاط)
x = 1 print(eval("x+5")) # 6 exec("x=10") print(x) # 10
۶۶. import جزئی
from math import sqrt print(sqrt(16))
۶۷. import چندگانه
import os, sys
۶۸. sys.argv برای پارامترها
import sys print(sys.argv) # لیست آرگومان‌های خط فرمان
۶۹. unpack کردن چند متغیر با *
a,b,*rest = [1,2,3,4,5] print(rest) # [3,4,5]
۷۰. tuple packing/unpacking
t = (1,2,3) x,y,z = t
۷۱. swap بدون temp
a,b = 5,10 a,b = b,a
۷۲. فیلتر کردن لیست
nums = [1,2,3,4] even = list(filter(lambda x:x%2==0, nums))
۷۳. map
squared = list(map(lambda x:x**2, [1,2,3]))
۷۴. reduce
from functools import reduce product = reduce(lambda x,y:x*y, [1,2,3,4]) print(product)
۷۵. itertools برای ترکیب و permutation
import itertools for p in itertools.permutations([1,2,3]): print(p)
۷۶. generator expression
gen = (x*x for x in range(5)) for i in gen: print(i)
۷۷. yield
def gen(): for i in range(3): yield i for x in gen(): print(x)
۷۸. جمع کردن دیکشنری‌ها
d1 = {'a':1} d2 = {'b':2} d = {**d1, **d2}
۷۹. slicing پیشرفته
nums = [0,1,2,3,4] print(nums[::2]) # [0,2,4]
۸۰. negative step
print(nums[::-1]) # معکوس لیست
۸۱. string formatting قدیمی
name = "Ali" print("Name: %s" % name)
۸۲. multi-line string با \
text = "سلام " \ "دنیا"
۸۳. bytes و bytearray
b = b"hello" ba = bytearray(b)
۸۴. assert
x = 5 assert x>0, "خطا"
۸۵. ternary در list comprehension
nums = [1,2,3,4] res = ["even" if x%2==0 else "odd" for x in nums]
۸۶. else بعد از try
try: x=1/1 except ZeroDivisionError: print("error") else: print("موفق")
۸۷. finally
try: x=1/0 finally: print("همیشه اجرا می‌شود")
۸۸. chaining exceptions
try: 1/0 except ZeroDivisionError as e: raise ValueError("اشتباه") from e
۸۹. assert vs raise
x = -1 assert x>=0, "خطا" # raise ValueError("خطا") جایگزین assert برای production
۹۰. import from package
from os.path import join print(join("a","b"))
۹۱. module alias
import numpy as np
۹۲. global keyword
x = 5 def func(): global x x += 1
۹۳. nonlocal keyword
def outer(): x = 5 def inner(): nonlocal x x += 1 inner() print(x)
۹۴. closures
def outer(x): def inner(y): return x+y return inner f = outer(5) print(f(3)) # 8
۹۵. partial functions
from functools import partial def power(x,y): return x**y square = partial(power,y=2) print(square(5)) # 25
۹۶. context manager سفارشی
class MyCM: def __enter__(self): print("شروع") def __exit__(self, exc_type, exc_val, exc_tb): print("پایان") with MyCM(): print("درون بلوک")
۹۷. comprehension nested
matrix = [[i*j for j in range(3)] for i in range(3)]
۹۸. walrus operator :=
if (n:=len([1,2,3]))>2: print(n)
۹۹. type hint پیشرفته
from typing import List, Dict def func(nums: List[int]) -> Dict[str,int]: return {"sum":sum(nums)}
۱۰۰. f-string پیشرفته
name="Ali" age=20 print(f"{name.upper()} is {age*2} years old")
تفاوت و ویژگی کلیدی پایتون با مثال کوتاه و مقایسه با زبان‌های دیگه مثل C, Java, JavaScript.
.


---

۱. تفاوت‌های Syntax (شکل نوشتن کد)

1. بدون اکولاد {}، با تورفتگی



if x > 0:
print("Positive")

(در C/Java باید اکولاد بذاری)

2. پایان بلوک‌ها با تورفتگی، نه کلیدواژه یا پرانتز



for i in range(3):
print(i)

3. استفاده از elif به جای else if



if x > 0:
print("pos")
elif x == 0:
print("zero")
else:
print("neg")

4. نداشتن نوع داده موقع تعریف متغیر



a = 5 # int
a = "hi" # str

5. چند دستور در یک خط با ;



x = 5; y = 10; print(x+y)

6. استفاده از : بعد شرط، حلقه یا تابع



def hello():
print("Hi")

7. پایتون به جای {} برای بلوک‌ها از خط جدید استفاده می‌کند



if True:
print("OK")


---

۲. ویژگی‌های خاص زبان

8. همه چیز شیء است



print((5).bit_length()) # متد روی عدد

9. Dynamic typing



a = 5
a = "now string"

10. حلقه for روی iterable



for ch in "abc":
print(ch)

11. حلقه سنتی for(int i=0...) وجود ندارد


12. توابع درون توابع



def outer():
def inner():
print("inner")
inner()

13. توابع بی‌نام (lambda)



square = lambda x: x**2
print(square(5))

14. List comprehension



nums = [x**2 for x in range(5)]

15. ساختار داده‌ها بدون import



lst = [1, 2]
st = {1, 2}
tp = (1, 2)
dc = {"a": 1}

16. مقادیر پیش‌فرض در پارامترهای تابع



def say(msg="Hi"):
print(msg)

17. کلاس‌ها بدون public/private



class A:
_x = 1 # protected عرفی

18. مدیریت حافظه خودکار



# نیازی به free() نیست

19. پشتیبانی از چند وراثت



class A: pass
class B: pass
class C(A, B): pass

20. پارامترهای متغیر در تابع



def f(*args):
print(args)


---

۳. رفتار متفاوت

21. / همیشه float



print(5/2) # 2.5

22. تقسیم صحیح با //



print(5//2) # 2

23. مقایسه رشته‌ها بر اساس Unicode



print("a" < "b") # True

24. مقایسه مستقیم رشته و عدد خطا می‌دهد



# print("5" > 3) # Error

25. else در حلقه



for i in range(3):
pass
else:
print("done")

26. مدیریت خطا با try/except



try:
1/0
except ZeroDivisionError:
print("No")

27. می‌توان توابع را به متغیر داد



def hi(): print("hi")
x = hi
x()

28. None به جای null



a = None

29. True و False با حروف بزرگ



x = True

30. نوع bool زیرمجموعه int



print(True + 1) # 2


---

۴. امکانات راحت

31. چاپ چند مقدار با print



print(1, 2, 3)

32. f-string برای فرمت‌دهی



name = "Ali"
print(f"Hi {name}")

33. تعویض مقادیر بدون متغیر موقت



a, b = b, a

34. باز کردن لیست با *



lst = [1, 2, 3]
print(*lst)

35. عبارت چندخطی با \ یا پرانتز



x = (1 + 2 +
3 + 4)

36. شرط تک‌خطی



x = "yes" if a > 0 else "no"

37. حلقه روی dict



for k, v in {"a":1}.items():
print(k, v)

38. enumerate



for i, v in enumerate(["a","b"]):
print(i, v)

39. zip



for a, b in zip([1,2], [3,4]):
print(a, b)

40. any و all



print(any([0,1,0]))
print(all([1,1,1]))


---

۵. رفتارهای داخلی خاص

41. نام‌گذاری با _



_ = 5 # معمولاً برای مقدار بی‌اهمیت

42. حلقه بی‌نهایت با while True



while True:
break

43. پشتیبانی از break/continue مثل C



for i in range(5):
if i==2: continue

44. import کردن فقط بخشی از ماژول



from math import sqrt

45. اجرای فایل به عنوان اسکریپت یا ماژول



if name == "main":
print("Run directly")

46. پشتیبانی از with برای مدیریت منابع



with open("f.txt") as f:
data = f.read()

47. پشتیبانی از generator



def gen():
yield 1

48. is برای مقایسه هویت، نه مقدار



print(a is b)

49. None در مقایسه کوچکتر از هرچیز نیست (برخلاف بعضی زبان‌ها)


50. کتابخانه استاندارد بسیار گسترده
بدون نصب اضافه، از math, datetime, os و... استفاده می‌کنی.
تفاوت‌های اصلی پایتون با زبان‌های دیگه باشه و هم نکات ریز و کاربردی خود پایتون.


---

۵۰ نکته مهم و ریز در پایتون


---

۱. بدون {} یا ;
پایتون برای بلوک‌ها به جای آکولاد از تورفتگی استفاده می‌کند.

if True:
print("Hello") # تورفتگی نشان‌دهنده بلوک است


---

۲. نیاز به : در ابتدای بلوک‌ها

for i in range(3):
print(i)


---

۳. بدون تعریف نوع متغیر

x = 5 # int
x = "Hi" # str


---

۴. متغیر نوعش در طول برنامه می‌تواند عوض شود (Dynamic Typing).
در C/Java این غیرممکن است.


---

۵. print یک تابع است

print("Hello")


---

۶. چند مقدار در یک خط

x, y = 10, 20


---

۷. تعویض مقادیر بدون متغیر کمکی

a, b = 5, 10
a, b = b, a


---

۸. بدون ++ یا --

x += 1 # باید این‌طور بنویسی


---

۹. رشته‌ها با تک یا دو کوتیشن

s1 = 'Hello'
s2 = "Hello"


---

۱۰. رشته چند خطی با """

text = """Line 1
Line 2"""


---

۱۱. لیست‌ها انعطاف‌پذیرند

my_list = [1, "Hi", 3.5]


---

۱۲. حلقه for روی مجموعه‌ها می‌چرخد، نه فقط عدد

for ch in "abc":
print(ch)


---

۱۳. حلقه while همانند دیگر زبان‌هاست ولی نیاز به : دارد.


---

۱۴. توابع با def تعریف می‌شوند

def greet():
print("Hi")


---

۱۵. تابع می‌تواند چند مقدار برگرداند

def info():
return "Ali", 25
name, age = info()


---

۱۶. تابع می‌تواند بدون مقدار برگشتی باشد (برمی‌گرداند None).


---

۱۷. مقدار پیش‌فرض در پارامتر تابع

def hello(name="Guest"):
print("Hi", name)


---

۱۸. توابع لامبدا (ناشناس)

square = lambda x: x*x


---

۱۹. رشته‌ها غیرقابل تغییرند (immutable).

s = "Hi"
# s[0] = "h" → خطا


---

۲۰. لیست‌ها قابل تغییرند (mutable).

lst = [1, 2]
lst[0] = 99


---

۲۱. None معادل null است ولی نوعش NoneType است.


---

۲۲. در شرط‌ها صفر و لیست خالی False حساب می‌شوند.


---

۲۳. in برای جستجو

if "a" in "cat":
print("yes")


---

۲۴. ساخت لیست سریع با List Comprehension

nums = [x*2 for x in range(5)]


---

۲۵. range در پایتون یک شیء تولیدکننده است

for i in range(5):
print(i)


---

۲۶. از enumerate برای گرفتن شماره اندیس استفاده کن

for i, val in enumerate(["a", "b"]):
print(i, val)


---

۲۷. از zip برای پیمایش همزمان چند لیست استفاده کن

for a, b in zip([1,2], [3,4]):
print(a, b)


---

۲۸. لیست، تاپل، دیکشنری، مجموعه (set) از ساختارهای مهم داده هستند.


---

۲۹. تاپل غیرقابل تغییر است

t = (1, 2)


---

۳۰. مجموعه (set) عنصر تکراری ندارد

s = {1, 2, 2}
print(s) # {1, 2}


---

۳۱. دیکشنری کلید-مقدار دارد

d = {"name": "Ali", "age": 25}


---

۳۲. پیمایش دیکشنری

for k, v in d.items():
print(k, v)


---

۳۳. شرط سه‌تایی به سبک پایتون

x = "yes" if True else "no"


---

۳۴. چند خط کد در یک خط با ; (بهتره نکنیم)

a = 5; b = 6


---

۳۵. استفاده از _ به عنوان متغیر موقت

for _ in range(3):
print("Hi")


---

۳۶. جداکننده در print

print(1, 2, 3, sep="-")


---

۳۷. پایان‌دهنده print

print("Hi", end=" ")
print("there")


---

۳۸. import کل کتابخانه

import math


---

۳۹. import با نام مستعار

import numpy as np


---

۴۰. import بخشی از کتابخانه

from math import sqrt


---

۴۱. مدیریت خطا با try-except

try:
x = 1/0
except ZeroDivisionError:
print("خطا")


---

۴۲. finally برای اجرا در هر حالت

try:
pass
finally:
print("Done")


---

۴۳. raise برای ایجاد خطا

raise ValueError("پیغام")


---

۴۴. استفاده از with برای مدیریت منابع

with open("file.txt") as f:
data = f.read()


---

۴۵. توابع بازگشتی (Recursion)

def fact(n):
return 1 if n == 0 else n*fact(n-1)


---

۴۶. تابع می‌تواند تابع برگرداند

def outer():
def inner():
print("Hi")
return inner


---

۴۷. generator با yield

def gen():
yield 1
yield 2


---

۴۸. decorator برای تغییر رفتار تابع

def deco(func):
def wrapper():
print("start")
func()
return wrapper


---

۴۹. type hinting برای مشخص کردن نوع

def add(x: int, y: int) -> int:
return x + y


---

۵۰. پایتون یک زبان interpreted است، خط به خط اجرا می‌شود.
تمام اصطلاحات، قوانین و شرایط پایتون


---

1. Indentation: فاصله یا تورفتگی که بلوک‌ها را مشخص می‌کند.


2. Colon :: علامت شروع بلوک بعد از if, for, while, def, class.


3. pass: جایگزین بلوک خالی برای جلوگیری از خطا.


4. Comment #: توضیح کوتاه داخل کد که اجرا نمی‌شود.


5. Multi-line string """ or ''': رشته‌های چند خطی.


6. _ (IDLE): نگه داشتن آخرین نتیجه در محیط تعاملی.


7. *args: آرگومان‌های نامحدود مکانی در تابع.


8. **kwargs: آرگومان‌های نامحدود کلیدی در تابع.


9. List comprehension: ایجاد لیست با یک خط و شرط.


10. Tuple unpacking: استخراج مقادیر tuple یا list در متغیرهای جداگانه.


11. Dictionary comprehension: ساخت دیکشنری با یک خط.


12. Set comprehension: ساخت مجموعه با یک خط.


13. with statement: مدیریت خودکار منابع مثل فایل‌ها.


14. try/except/else/finally: مدیریت استثناها و اجرای کد همیشه.


15. lambda: تعریف تابع ناشناس یک خطی.


16. map(): اعمال تابع روی همه اعضای iterable.


17. filter(): فیلتر کردن اعضای iterable با شرط.


18. enumerate(): گرفتن ایندکس و مقدار در حلقه.


19. zip(): ترکیب چند iterable در یک حلقه.


20. isinstance(): بررسی نوع داده متغیر.


21. global: تغییر متغیر سراسری داخل تابع.


22. nonlocal: تغییر متغیر در تابع والد.


23. name == "main": اجرای کد فقط وقتی فایل مستقیم اجرا می‌شود.


24. type(): گرفتن نوع متغیر یا شیء.


25. dir(): نمایش تمام متدها و ویژگی‌های شیء.


26. help(): نمایش مستندات و توضیحات شیء یا تابع.


27. f-string: فرمت رشته سریع با {}.


28. any(): True اگر یکی از مقادیر True باشد.


29. all(): True اگر همه مقادیر True باشند.


30. doc: نمایش توضیحات تابع یا کلاس.


31. Dynamic typing: نوع متغیر در زمان اجرا مشخص می‌شود.


32. Immutable types: نوع داده‌ای که تغییر نمی‌کند (str, tuple).


33. Mutable types: نوع داده‌ای که تغییر می‌کند (list, dict, set).


34. del: حذف متغیر یا عضو collection.


35. break: خروج فوری از حلقه.


36. continue: رد کردن بقیه حلقه و رفتن به iteration بعدی.


37. return: خروج از تابع و برگرداندن مقدار.


38. yield: تولید مقادیر generator به جای return.


39. Generator: تابعی که مقادیر را به صورت lazy تولید می‌کند.


40. Decorator: تابعی که رفتار تابع دیگر را تغییر می‌دهد.


41. Context manager: مدیریت منابع با with.


42. Exception: خطای runtime که قابل کنترل است.


43. Module: فایل پایتون با کد قابل استفاده دوباره.


44. Package: پوشه شامل چند ماژول با init.py.


45. Import: بارگذاری ماژول یا package.


46. init.py: مشخص کردن پوشه به عنوان package.


47. * import: وارد کردن همه محتوای ماژول (توصیه نمی‌شود).


48. List slicing: دسترسی به زیرلیست با [start:end:step].


49. String slicing: دسترسی به زیررشته با [start:end:step].


50. init: تابع سازنده کلاس.
51. Class: قالبی برای ساخت اشیاء و تعریف رفتار و ویژگی‌ها.


52. Object: نمونه ساخته‌شده از کلاس.


53. Method: تابعی که داخل کلاس تعریف می‌شود.


54. Instance variable: متغیری که متعلق به هر نمونه (object) است.


55. Class variable: متغیری که مشترک بین همه نمونه‌های کلاس است.


56. Inheritance: ارث‌بری رفتار و ویژگی‌ها از کلاس والد.


57. Multiple inheritance: ارث‌بری از چند کلاس والد.


58. Polymorphism: توانایی تابع یا متد برای رفتار متفاوت با اشیاء مختلف.


59. Encapsulation: پنهان کردن جزئیات داخلی شیء و فقط ارائه رابط.


60. Private variable/method: با _ یا __ مشخص می‌شود و خارج کلاس محدود است.


61. Property: متدهایی که مانند متغیر قابل دسترسی هستند.


62. Static method: متدی که به نمونه وابسته نیست و با @staticmethod تعریف می‌شود.


63. Class method: متدی که به کلاس وابسته است و با @classmethod تعریف می‌شود.


64. Magic / Dunder methods: متدهای خاص با method برای رفتار داخلی اشیاء.


65. Operator overloading: تغییر رفتار عملگرها برای کلاس‌ها.


66. str: نمایش رشته‌ای از شیء برای print.


67. repr: نمایش رسمی و دقیق شیء.


68. len: تعیین طول شیء با len().


69. Iterator: شیئی که توانایی پیمایش با next() دارد.


70. Iterable: شیئی که می‌توان آن را حلقه زد (for).


71. Generator expression: مشابه list comprehension ولی lazy است.


72. yield from: استفاده از generator دیگری در generator.


73. Async function: تابع غیرهمزمان با async def.


74. Await: توقف موقت تابع async تا نتیجه آماده شود.


75. Event loop: چرخه‌ای که async functions را مدیریت می‌کند.


76. Coroutine: تابع async که قابلیت توقف و ادامه دارد.


77. Decorator chaining: استفاده همزمان از چند decorator روی یک تابع.


78. Memoization: ذخیره نتایج تابع برای اجرای سریع‌تر.


79. Contextlib: ماژولی برای ساخت context manager سفارشی.


80. Type hinting: مشخص کردن نوع متغیر یا آرگومان تابع.


81. Optional type: نشان‌دهنده متغیری که ممکن است None باشد.


82. Union type: نشان‌دهنده متغیری که می‌تواند چند نوع داشته باشد.


83. dataclass: ایجاد کلاس با کمترین کدنویسی برای ذخیره داده.


84. field(): تعریف ویژگی پیشرفته در dataclass.


85. post_init: تابع بعد از ساخت dataclass اجرا می‌شود.


86. Mutable default warning: استفاده از لیست یا دیکشنری به عنوان مقدار پیش‌فرض در تابع می‌تواند خطرناک باشد.


87. functools.lru_cache: کش کردن نتایج تابع برای بهینه‌سازی.


88. slots: محدود کردن ویژگی‌های کلاس برای کاهش مصرف حافظه.


89. Property setter/getter/deleter: کنترل دسترسی به ویژگی‌ها با property.


90. abc module: تعریف کلاس‌ها و متدهای انتزاعی (Abstract Base Class).


91. Metaclass: کلاس کلاس‌ها برای کنترل رفتار کلاس‌ها.


92. Monkey patching: تغییر رفتار کلاس یا ماژول در زمان اجرا.


93. Duck typing: نوع متغیر با رفتار آن شناسایی می‌شود نه با کلاس آن.


94. call: امکان فراخوانی شیء مانند تابع.


95. enter / exit: متدهای context manager برای with.


96. getitem / setitem: دسترسی و تغییر عناصر با [] برای کلاس‌ها.


97. iter: تعریف iterator برای کلاس.


98. next: تولید مقدار بعدی برای iterator.


99. Weak references: مراجع ضعیف به اشیاء برای جلوگیری از حافظه مصرفی اضافی.


100. Garbage collection: جمع‌آوری خودکار حافظه بلااستفاده توسط پایتون.
تفاوت‌ها و ویژگی‌های اصلی آن با سایر زبان‌ها را نشان می‌دهد


---

۲۰ نکته‌ی مهم پایتون با مثال

۱. پایتون مفسری (Interpreted) است
کد خط به خط اجرا می‌شود، نیازی به کامپایل کل برنامه نیست.

x = 5
print(x + 3) # خروجی: 8

۲. پایتون تعاملی (Interactive) است
می‌توان در محیط REPL یا IDLE کد را تست کرد و نتیجه فوری گرفت.

>>> 2 + 3
5
>>> _
5 # _ آخرین نتیجه

۳. پایتون شیء‌گرا است (Object-Oriented)
تقریباً همه چیز در پایتون یک شیء است.

x = "Hello"
print(x.upper()) # خروجی: HELLO

۴. تورفتگی (Indentation) به جای {}
ساختار بلوک‌ها با فاصله مشخص می‌شود، نه با {}.

if True:
print("سلام")

۵. استفاده از : برای شروع بلوک‌ها
بعد از if, for, while, def, class باید : گذاشت.

for i in range(3):
print(i)

۶. شرط یک خطه با :
می‌توان شرط‌ها و حلقه‌ها را در یک خط نوشت.

if True: print("سلام")

۷. عدم وجود ++ و --
برای افزایش یا کاهش از += و -= استفاده می‌شود.

x = 5
x += 1

۸. pass برای بلوک خالی
اگر بلوک باید خالی باشد، pass لازم است.

def func():
pass

۹. چند دستور در یک خط با ;
چند دستور را می‌توان با ; جدا کرد.

x = 5; y = 10; print(x + y)

۱۰. ادامه خط طولانی با \ یا پرانتز

total = 1 + 2 + 3 + \
4 + 5 + 6

۱۱. رشته چندخطی با ''' یا """

text = """خط اول
خط دوم"""

۱۲. متغیر موقت _
در حلقه یا محیط REPL برای مقادیر موقت یا آخرین نتیجه استفاده می‌شود.

for _ in range(3):
print("Hello")

۱۳. مقداردهی چندگانه

a, b, c = 1, 2, 3
a, b = b, a # جابجایی

۱۴. شرط در یک خط (ternary)

x = 5
result = "مثبت" if x > 0 else "منفی"

۱۵. else در حلقه‌ها
else اجرا می‌شود اگر حلقه بدون break تمام شود.

for i in range(3):
print(i)
else:
print("حلقه تمام شد")

۱۶. آرگومان پیش‌فرض تابع

def greet(name="مهمان"):
print("سلام", name)

۱۷. بازگشت چند مقدار از تابع

def calc(a, b):
return a+b, a*b
s, m = calc(3, 4)

**۱۸. *args و kwargs

def show(*args, **kwargs):
print(args)
print(kwargs)
show(1, 2, name="Ali")

۱۹. List Comprehension

nums = [i for i in range(5)]
even = [i for i in range(10) if i%2==0]

۲۰. zip و enumerate

names = ["Ali","Sara"]
scores = [90,85]
for i, (name, score) in enumerate(zip(names,scores)):
print(i, name, score)


---