if "l" in name: print("کاراکتر l وجود دارد")
شرط با عدد
بررسی عدد مثبت
جواب:
if x > 0: print("مثبت")
بررسی عدد منفی
جواب:
if x < 0: print("منفی")
بررسی صفر بودن
جواب:
if x == 0: print("صفر")
ترکیب شرط مثبت و زوج بودن
جواب:
if x > 0 and x % 2 == 0: print("مثبت و زوج")
شرط در یک خط (ternary)
مثال ساده
جواب:
status = "بالغ" if age >= 18 else "غیر بالغ"
ternary پیچیده
جواب:
category = "کوچک" if x < 10 else "متوسط" if x < 20 else "بزرگ"
شرط با Boolean
بررسی True
جواب:
flag = True if flag: print("True است")
بررسی False
جواب:
flag = False if not flag: print("False است")
استفاده از is و is not
بررسی همهویتی
جواب:
if a is b: print("یکی هستند")
بررسی عدم همهویتی
جواب:
if a is not b: print("یکی نیستند")
شرط و حلقهها
if داخل حلقه for
جواب:
for x in range(5): if x % 2 == 0: print(x)
if داخل while
جواب:
x = 0 while x < 5: if x == 3: break x += 1
continue با if
جواب:
for i in range(5): if i == 2: continue print(i)
else در حلقه با if
جواب:
for i in range(3): print(i) else: print("پایان حلقه")
شرط و تابع
شرط در تابع
جواب:
def check_num(x): if x > 0: return "مثبت" else: return "منفی یا صفر"
شرط چندگانه در تابع
جواب:
def grade(score): if score >= 90: return "عالی" elif score >= 75: return "خوب" else: return "نیاز به تلاش"
شرط و ورودی کاربر
بررسی سن
جواب:
age = int(input("سن شما؟ ")) if age >= 18: print("بالغ") else: print("غیر بالغ")
شرط و مقدار None
بررسی None
جواب:
x = None if x is None: print("مقدار ندارد")
شرط و عملگرهای ترکیبی
شرط با and و or
جواب:
if x > 0 and (x < 5 or x > 10): print("شرط پیچیده")
شرط با not
جواب:
if not x > 0: print("منفی یا صفر")
شرط با ترکیب رشته و عدد
جواب:
if len(name) > 3 and age > 18: print("بررسی موفق")
شرط با لیست و حلقه
73. بررسی وجود عدد زوج در لیست
جواب:
numbers = [1, 3, 4, 7]
for n in numbers:
if n % 2 == 0:
print(f"{n} زوج است")
74. بررسی همه عناصر مثبت
جواب:
numbers = [1, 2, 3]
if all(n > 0 for n in numbers):
print("همه مثبت هستند")
75. بررسی حداقل یک عنصر منفی
جواب:
numbers = [1, -2, 3]
if any(n < 0 for n in numbers):
print("حداقل یک عدد منفی است")
شرط و رشته
76. بررسی طول رشته
جواب:
text = "Python"
if len(text) > 5:
print("طول بیشتر از ۵")
77. بررسی حروف بزرگ در رشته
جواب:
if text.isupper():
print("تمام حروف بزرگ")
else:
print("تمام حروف بزرگ نیست")
78. بررسی تمام حروف کوچک
جواب:
if text.islower():
print("تمام حروف کوچک")
79. بررسی عدد بودن رشته
جواب:
num_str = "123"
if num_str.isdigit():
print("اعداد است")
80. بررسی الفبایی بودن رشته
جواب:
word = "Hello"
if word.isalpha():
print("فقط حروف دارد")
شرط با دیکشنری
81. بررسی وجود کلید در دیکشنری
جواب:
person = {"name": "Ali"}
if "name" in person:
print("کلید وجود دارد")
82. بررسی عدم وجود کلید
جواب:
if "age" not in person:
print("کلید موجود نیست")
83. شرط روی مقدار کلید
جواب:
if person.get("name") == "Ali":
print("نام علی است")
شرط با تاپل
84. بررسی مقدار در تاپل
جواب:
colors = ("red", "green", "blue")
if "red" in colors:
print("قرمز موجود است")
85. شرط ترکیبی با لیست و تاپل
جواب:
if "red" in colors and "red" in ["red", "yellow"]:
print("موجود در هر دو")
شرط با مجموعه
86. بررسی عضویت در مجموعه
جواب:
fruits_set = {"سیب", "موز"}
if "سیب" in fruits_set:
print("وجود دارد")
87. شرط با عملیات مجموعه
جواب:
a = {1,2,3}
b = {3,4}
if a & b:
print("اشتراک دارند")
شرط پیچیده
88. ترکیب چند شرط با and, or, not
جواب:
x = 10
y = 5
if (x > y and y > 0) or not x == 0:
print("شرط درست است")
89. استفاده از شرط داخل لیست comprehension
جواب:
numbers = [1,2,3,4]
evens = [n for n in numbers if n % 2 == 0]
print(evens)
90. شرط با break و continue در حلقه
جواب:
for i in range(5):
if i == 2:
continue
if i == 4:
break
print(i)
شرط با ورودی کاربر پیشرفته
91. بررسی سن و جنسیت
جواب:
age = int(input("سن: "))
gender = input("جنسیت: ")
if age >= 18 and gender == "زن":
print("بالغ و زن")
92. شرط با تبدیل داده ورودی
جواب:
x = input("عدد: ")
if int(x) > 0:
print("مثبت")
شرط با مقایسه چندگانه
93. مقایسه متوالی
جواب:
شرط با عدد
بررسی عدد مثبت
جواب:
if x > 0: print("مثبت")
بررسی عدد منفی
جواب:
if x < 0: print("منفی")
بررسی صفر بودن
جواب:
if x == 0: print("صفر")
ترکیب شرط مثبت و زوج بودن
جواب:
if x > 0 and x % 2 == 0: print("مثبت و زوج")
شرط در یک خط (ternary)
مثال ساده
جواب:
status = "بالغ" if age >= 18 else "غیر بالغ"
ternary پیچیده
جواب:
category = "کوچک" if x < 10 else "متوسط" if x < 20 else "بزرگ"
شرط با Boolean
بررسی True
جواب:
flag = True if flag: print("True است")
بررسی False
جواب:
flag = False if not flag: print("False است")
استفاده از is و is not
بررسی همهویتی
جواب:
if a is b: print("یکی هستند")
بررسی عدم همهویتی
جواب:
if a is not b: print("یکی نیستند")
شرط و حلقهها
if داخل حلقه for
جواب:
for x in range(5): if x % 2 == 0: print(x)
if داخل while
جواب:
x = 0 while x < 5: if x == 3: break x += 1
continue با if
جواب:
for i in range(5): if i == 2: continue print(i)
else در حلقه با if
جواب:
for i in range(3): print(i) else: print("پایان حلقه")
شرط و تابع
شرط در تابع
جواب:
def check_num(x): if x > 0: return "مثبت" else: return "منفی یا صفر"
شرط چندگانه در تابع
جواب:
def grade(score): if score >= 90: return "عالی" elif score >= 75: return "خوب" else: return "نیاز به تلاش"
شرط و ورودی کاربر
بررسی سن
جواب:
age = int(input("سن شما؟ ")) if age >= 18: print("بالغ") else: print("غیر بالغ")
شرط و مقدار None
بررسی None
جواب:
x = None if x is None: print("مقدار ندارد")
شرط و عملگرهای ترکیبی
شرط با and و or
جواب:
if x > 0 and (x < 5 or x > 10): print("شرط پیچیده")
شرط با not
جواب:
if not x > 0: print("منفی یا صفر")
شرط با ترکیب رشته و عدد
جواب:
if len(name) > 3 and age > 18: print("بررسی موفق")
شرط با لیست و حلقه
73. بررسی وجود عدد زوج در لیست
جواب:
numbers = [1, 3, 4, 7]
for n in numbers:
if n % 2 == 0:
print(f"{n} زوج است")
74. بررسی همه عناصر مثبت
جواب:
numbers = [1, 2, 3]
if all(n > 0 for n in numbers):
print("همه مثبت هستند")
75. بررسی حداقل یک عنصر منفی
جواب:
numbers = [1, -2, 3]
if any(n < 0 for n in numbers):
print("حداقل یک عدد منفی است")
شرط و رشته
76. بررسی طول رشته
جواب:
text = "Python"
if len(text) > 5:
print("طول بیشتر از ۵")
77. بررسی حروف بزرگ در رشته
جواب:
if text.isupper():
print("تمام حروف بزرگ")
else:
print("تمام حروف بزرگ نیست")
78. بررسی تمام حروف کوچک
جواب:
if text.islower():
print("تمام حروف کوچک")
79. بررسی عدد بودن رشته
جواب:
num_str = "123"
if num_str.isdigit():
print("اعداد است")
80. بررسی الفبایی بودن رشته
جواب:
word = "Hello"
if word.isalpha():
print("فقط حروف دارد")
شرط با دیکشنری
81. بررسی وجود کلید در دیکشنری
جواب:
person = {"name": "Ali"}
if "name" in person:
print("کلید وجود دارد")
82. بررسی عدم وجود کلید
جواب:
if "age" not in person:
print("کلید موجود نیست")
83. شرط روی مقدار کلید
جواب:
if person.get("name") == "Ali":
print("نام علی است")
شرط با تاپل
84. بررسی مقدار در تاپل
جواب:
colors = ("red", "green", "blue")
if "red" in colors:
print("قرمز موجود است")
85. شرط ترکیبی با لیست و تاپل
جواب:
if "red" in colors and "red" in ["red", "yellow"]:
print("موجود در هر دو")
شرط با مجموعه
86. بررسی عضویت در مجموعه
جواب:
fruits_set = {"سیب", "موز"}
if "سیب" in fruits_set:
print("وجود دارد")
87. شرط با عملیات مجموعه
جواب:
a = {1,2,3}
b = {3,4}
if a & b:
print("اشتراک دارند")
شرط پیچیده
88. ترکیب چند شرط با and, or, not
جواب:
x = 10
y = 5
if (x > y and y > 0) or not x == 0:
print("شرط درست است")
89. استفاده از شرط داخل لیست comprehension
جواب:
numbers = [1,2,3,4]
evens = [n for n in numbers if n % 2 == 0]
print(evens)
90. شرط با break و continue در حلقه
جواب:
for i in range(5):
if i == 2:
continue
if i == 4:
break
print(i)
شرط با ورودی کاربر پیشرفته
91. بررسی سن و جنسیت
جواب:
age = int(input("سن: "))
gender = input("جنسیت: ")
if age >= 18 and gender == "زن":
print("بالغ و زن")
92. شرط با تبدیل داده ورودی
جواب:
x = input("عدد: ")
if int(x) > 0:
print("مثبت")
شرط با مقایسه چندگانه
93. مقایسه متوالی
جواب:
if 0 < x < 10:
print("بین ۰ و ۱۰")
94. شرط با not در چندگانه
جواب:
if not (x < 0 or x > 10):
print("بین ۰ و ۱۰")
شرط با مقدارهای Boolean
95. ترکیب چند پرچم
جواب:
a = True
b = False
if a and not b:
print("شرط درست است")
96. شرط با مقدار محاسبه شده
جواب:
result = (x > 5)
if result:
print("بزرگتر از ۵")
شرط و شرط کوتاه (Inline)
97. استفاده در print
جواب:
print("مثبت" if x > 0 else "منفی یا صفر")
98. شرط با تابع
جواب:
def check(n): return "زوج" if n % 2 == 0 else "فرد"
print(check(7))
شرط با assert
99. استفاده از assert برای بررسی
جواب:
x = 10
assert x > 0, "عدد باید مثبت باشد"
100. ترکیب assert و شرط
جواب:
y = -5
assert y >= 0, "عدد منفی است"
---
✅ با این ۱۰۰ سوال و جواب، فصل If statements به طور کامل پوشش داده شد.
print("بین ۰ و ۱۰")
94. شرط با not در چندگانه
جواب:
if not (x < 0 or x > 10):
print("بین ۰ و ۱۰")
شرط با مقدارهای Boolean
95. ترکیب چند پرچم
جواب:
a = True
b = False
if a and not b:
print("شرط درست است")
96. شرط با مقدار محاسبه شده
جواب:
result = (x > 5)
if result:
print("بزرگتر از ۵")
شرط و شرط کوتاه (Inline)
97. استفاده در print
جواب:
print("مثبت" if x > 0 else "منفی یا صفر")
98. شرط با تابع
جواب:
def check(n): return "زوج" if n % 2 == 0 else "فرد"
print(check(7))
شرط با assert
99. استفاده از assert برای بررسی
جواب:
x = 10
assert x > 0, "عدد باید مثبت باشد"
100. ترکیب assert و شرط
جواب:
y = -5
assert y >= 0, "عدد منفی است"
---
✅ با این ۱۰۰ سوال و جواب، فصل If statements به طور کامل پوشش داده شد.
۱۰۰ سوال فصل حلقهها (Loops) با جواب و مثال کد کامل ارائه میشود.
فصل حلقهها (Loops) – 100 سوال با جواب
---
بخش ۱: حلقه for ساده (سوال 1–20)
1. چاپ اعداد از 1 تا 5
for i in range(1, 6):
print(i)
جواب: 1 2 3 4 5
2. چاپ عناصر لیست [‘a’, ‘b’, ‘c’]
letters = ['a','b','c']
for l in letters:
print(l)
جواب: a b c
3. چاپ اعداد زوج بین 1 تا 10
for i in range(2,11,2):
print(i)
جواب: 2 4 6 8 10
4. جمع اعداد 1 تا 10 با حلقه for
total = 0
for i in range(1,11):
total += i
print(total)
جواب: 55
5. چاپ عناصر رشته “Python”
for ch in "Python":
print(ch)
جواب: P y t h o n
6. چاپ اعداد 5 تا 1 به صورت معکوس
for i in range(5,0,-1):
print(i)
جواب: 5 4 3 2 1
7. استفاده از enumerate برای چاپ ایندکس و مقدار
fruits = ['apple','banana','cherry']
for idx, val in enumerate(fruits):
print(idx, val)
جواب: 0 apple, 1 banana, 2 cherry
8. چاپ مربع اعداد 1 تا 5
for i in range(1,6):
print(i*i)
جواب: 1 4 9 16 25
9. چاپ کاراکترهای بزرگ رشته
for ch in "python":
print(ch.upper())
جواب: P Y T H O N
10. چاپ عناصر یک لیست با فاصله کاما
nums = [1,2,3]
for n in nums:
print(n, end=',')
جواب: 1,2,3,
11. ایجاد لیست اعداد 0 تا 9 با for
lst = []
for i in range(10):
lst.append(i)
print(lst)
جواب: [0,1,2,3,4,5,6,7,8,9]
12. چاپ حروف هر کلمه در لیست
words = ['hi','ok']
for w in words:
for ch in w:
print(ch)
جواب: h i o k
13. استفاده از range با شروع و پایان دلخواه
for i in range(3,8):
print(i)
جواب: 3 4 5 6 7
14. چاپ عناصر لیست به همراه اندیس
nums = [10,20,30]
for i in range(len(nums)):
print(i, nums[i])
جواب: 0 10, 1 20, 2 30
15. حلقه با شرط داخل for
for i in range(1,11):
if i%2==0:
print(i)
جواب: 2 4 6 8 10
16. چاپ عناصر لیست معکوس
lst = [1,2,3]
for i in reversed(lst):
print(i)
جواب: 3 2 1
17. استفاده از pass در حلقه
for i in range(3):
pass
print("Done")
جواب: Done
18. چاپ فقط حروف غیرعدد از رشته
s = "a1b2c3"
for ch in s:
if ch.isalpha():
print(ch)
جواب: a b c
19. حلقه با شرط else
for i in range(3):
print(i)
else:
print("Loop finished")
جواب: 0 1 2 Loop finished
20. چاپ هر دوم عنصر لیست
lst = [1,2,3,4,5]
for i in lst[::2]:
print(i)
جواب: 1 3 5
---
بخش ۲: حلقه while ساده (سوال 21–40)
21. چاپ اعداد 1 تا 5 با while
i=1
while i<=5:
print(i)
i+=1
جواب: 1 2 3 4 5
22. جمع اعداد 1 تا 10 با while
i=1
total=0
while i<=10:
total += i
i+=1
print(total)
جواب: 55
23. ورودی کاربر تا عدد صحیح وارد شود
num = 0
while num<=0:
num = int(input("Enter positive: "))
جواب: کاربر تا وارد کردن عدد مثبت حلقه ادامه میدهد
24. چاپ عناصر لیست با while
lst = ['a','b','c']
i=0
while i<len(lst):
print(lst[i])
i+=1
جواب: a b c
25. چاپ اعداد زوج 2 تا 10
i=2
while i<=10:
print(i)
i+=2
جواب: 2 4 6 8 10
26. حلقه while با شرط break
i=1
while True:
print(i)
if i==5:
break
i+=1
جواب: 1 2 3 4 5
27. چاپ کاراکترهای رشته با while
s="abc"
i=0
while i<len(s):
print(s[i])
i+=1
جواب: a b c
28. شمارش تعداد حروف در رشته
s="hello"
i=0
count=0
while i<len(s):
count+=1
i+=1
print(count)
جواب: 5
29. چاپ مربع اعداد 1 تا 5
i=1
while i<=5:
print(i*i)
i+=1
جواب: 1 4 9 16 25
30. حلقه while با else
i=0
while i<3:
print(i)
i+=1
else:
print("Done")
جواب: 0 1 2 Done
31. جمع عناصر لیست با while
lst=[1,2,3]
i=0
total=0
while i<len(lst):
total+=lst[i]
i+=1
print(total)
جواب: 6
32. حلقه while برای چاپ کاراکترهای بزرگ رشته
s="abc"
i=0
while i<len(s):
print(s[i].upper())
i+=1
جواب: A B C
33. چاپ اعداد 10 تا 1 معکوس
i=10
while i>0:
print(i)
i-=1
جواب: 10 9 8 7 6 5 4 3 2 1
34. حلقه while برای حذف صفرها از لیست
lst=[0,1,0,2]
while 0 in lst:
lst.remove(0)
print(lst)
جواب: [1,2]
35. چاپ عناصر زوج لیست با while
lst=[1,2,3,4,5]
i=0
while i<len(lst):
if lst[i]%2==0:
print(lst[i])
i+=1
جواب: 2 4
36. شمارش کاراکترهای خاص با while
فصل حلقهها (Loops) – 100 سوال با جواب
---
بخش ۱: حلقه for ساده (سوال 1–20)
1. چاپ اعداد از 1 تا 5
for i in range(1, 6):
print(i)
جواب: 1 2 3 4 5
2. چاپ عناصر لیست [‘a’, ‘b’, ‘c’]
letters = ['a','b','c']
for l in letters:
print(l)
جواب: a b c
3. چاپ اعداد زوج بین 1 تا 10
for i in range(2,11,2):
print(i)
جواب: 2 4 6 8 10
4. جمع اعداد 1 تا 10 با حلقه for
total = 0
for i in range(1,11):
total += i
print(total)
جواب: 55
5. چاپ عناصر رشته “Python”
for ch in "Python":
print(ch)
جواب: P y t h o n
6. چاپ اعداد 5 تا 1 به صورت معکوس
for i in range(5,0,-1):
print(i)
جواب: 5 4 3 2 1
7. استفاده از enumerate برای چاپ ایندکس و مقدار
fruits = ['apple','banana','cherry']
for idx, val in enumerate(fruits):
print(idx, val)
جواب: 0 apple, 1 banana, 2 cherry
8. چاپ مربع اعداد 1 تا 5
for i in range(1,6):
print(i*i)
جواب: 1 4 9 16 25
9. چاپ کاراکترهای بزرگ رشته
for ch in "python":
print(ch.upper())
جواب: P Y T H O N
10. چاپ عناصر یک لیست با فاصله کاما
nums = [1,2,3]
for n in nums:
print(n, end=',')
جواب: 1,2,3,
11. ایجاد لیست اعداد 0 تا 9 با for
lst = []
for i in range(10):
lst.append(i)
print(lst)
جواب: [0,1,2,3,4,5,6,7,8,9]
12. چاپ حروف هر کلمه در لیست
words = ['hi','ok']
for w in words:
for ch in w:
print(ch)
جواب: h i o k
13. استفاده از range با شروع و پایان دلخواه
for i in range(3,8):
print(i)
جواب: 3 4 5 6 7
14. چاپ عناصر لیست به همراه اندیس
nums = [10,20,30]
for i in range(len(nums)):
print(i, nums[i])
جواب: 0 10, 1 20, 2 30
15. حلقه با شرط داخل for
for i in range(1,11):
if i%2==0:
print(i)
جواب: 2 4 6 8 10
16. چاپ عناصر لیست معکوس
lst = [1,2,3]
for i in reversed(lst):
print(i)
جواب: 3 2 1
17. استفاده از pass در حلقه
for i in range(3):
pass
print("Done")
جواب: Done
18. چاپ فقط حروف غیرعدد از رشته
s = "a1b2c3"
for ch in s:
if ch.isalpha():
print(ch)
جواب: a b c
19. حلقه با شرط else
for i in range(3):
print(i)
else:
print("Loop finished")
جواب: 0 1 2 Loop finished
20. چاپ هر دوم عنصر لیست
lst = [1,2,3,4,5]
for i in lst[::2]:
print(i)
جواب: 1 3 5
---
بخش ۲: حلقه while ساده (سوال 21–40)
21. چاپ اعداد 1 تا 5 با while
i=1
while i<=5:
print(i)
i+=1
جواب: 1 2 3 4 5
22. جمع اعداد 1 تا 10 با while
i=1
total=0
while i<=10:
total += i
i+=1
print(total)
جواب: 55
23. ورودی کاربر تا عدد صحیح وارد شود
num = 0
while num<=0:
num = int(input("Enter positive: "))
جواب: کاربر تا وارد کردن عدد مثبت حلقه ادامه میدهد
24. چاپ عناصر لیست با while
lst = ['a','b','c']
i=0
while i<len(lst):
print(lst[i])
i+=1
جواب: a b c
25. چاپ اعداد زوج 2 تا 10
i=2
while i<=10:
print(i)
i+=2
جواب: 2 4 6 8 10
26. حلقه while با شرط break
i=1
while True:
print(i)
if i==5:
break
i+=1
جواب: 1 2 3 4 5
27. چاپ کاراکترهای رشته با while
s="abc"
i=0
while i<len(s):
print(s[i])
i+=1
جواب: a b c
28. شمارش تعداد حروف در رشته
s="hello"
i=0
count=0
while i<len(s):
count+=1
i+=1
print(count)
جواب: 5
29. چاپ مربع اعداد 1 تا 5
i=1
while i<=5:
print(i*i)
i+=1
جواب: 1 4 9 16 25
30. حلقه while با else
i=0
while i<3:
print(i)
i+=1
else:
print("Done")
جواب: 0 1 2 Done
31. جمع عناصر لیست با while
lst=[1,2,3]
i=0
total=0
while i<len(lst):
total+=lst[i]
i+=1
print(total)
جواب: 6
32. حلقه while برای چاپ کاراکترهای بزرگ رشته
s="abc"
i=0
while i<len(s):
print(s[i].upper())
i+=1
جواب: A B C
33. چاپ اعداد 10 تا 1 معکوس
i=10
while i>0:
print(i)
i-=1
جواب: 10 9 8 7 6 5 4 3 2 1
34. حلقه while برای حذف صفرها از لیست
lst=[0,1,0,2]
while 0 in lst:
lst.remove(0)
print(lst)
جواب: [1,2]
35. چاپ عناصر زوج لیست با while
lst=[1,2,3,4,5]
i=0
while i<len(lst):
if lst[i]%2==0:
print(lst[i])
i+=1
جواب: 2 4
36. شمارش کاراکترهای خاص با while
s="a1b2"
i=0
count=0
while i<len(s):
if s[i].isdigit():
count+=1
i+=1
print(count)
جواب: 2
37. ورودی عدد تا برابر 5 وارد شود
n=0
while n!=5:
n=int(input("Enter 5: "))
جواب: کاربر تا وارد کردن 5 حلقه ادامه میدهد
38. چاپ اعداد مضرب 3 کمتر از 20
i=3
while i<20:
print(i)
i+=3
جواب: 3 6 9 12 15 18
39. حلقه while با continue
i=0
while i<5:
i+=1
if i==3:
continue
print(i)
جواب: 1 2 4 5
40. حلقه while با شرط ترکیبی
i=1
while i<=10 and i!=7:
print(i)
i+=1
جواب: 1 2 3 4 5 6
---
i=0
count=0
while i<len(s):
if s[i].isdigit():
count+=1
i+=1
print(count)
جواب: 2
37. ورودی عدد تا برابر 5 وارد شود
n=0
while n!=5:
n=int(input("Enter 5: "))
جواب: کاربر تا وارد کردن 5 حلقه ادامه میدهد
38. چاپ اعداد مضرب 3 کمتر از 20
i=3
while i<20:
print(i)
i+=3
جواب: 3 6 9 12 15 18
39. حلقه while با continue
i=0
while i<5:
i+=1
if i==3:
continue
print(i)
جواب: 1 2 4 5
40. حلقه while با شرط ترکیبی
i=1
while i<=10 and i!=7:
print(i)
i+=1
جواب: 1 2 3 4 5 6
---
---
بخش ۳: break و continue (سوال 41–60)
41. حلقه for با break وقتی عدد 3 رسید
for i in range(1,6):
if i==3:
break
print(i)
جواب: 1 2
42. حلقه while با break
i=1
while i<=5:
if i==4:
break
print(i)
i+=1
جواب: 1 2 3
43. حلقه for با continue برای حذف عدد 2
for i in range(1,5):
if i==2:
continue
print(i)
جواب: 1 3 4
44. حلقه while با continue
i=0
while i<5:
i+=1
if i%2==0:
continue
print(i)
جواب: 1 3 5
45. حلقه for با break و else
for i in range(1,5):
if i==3:
break
print(i)
else:
print("Loop finished")
جواب: 1 2
46. حلقه for با continue و else
for i in range(1,5):
if i==3:
continue
print(i)
else:
print("Done")
جواب: 1 2 4 Done
47. حلقه while با break و else
i=0
while i<5:
print(i)
if i==3:
break
i+=1
else:
print("Finished")
جواب: 0 1 2 3
48. حلقه while با continue و else
i=0
while i<5:
i+=1
if i==2:
continue
print(i)
else:
print("Done")
جواب: 1 3 4 5 Done
49. چاپ اولین عدد زوج از لیست با break
lst=[1,3,4,5]
for n in lst:
if n%2==0:
print(n)
break
جواب: 4
50. چاپ همه عناصر غیر صفر با continue
lst=[0,1,0,2]
for n in lst:
if n==0:
continue
print(n)
جواب: 1 2
51. حلقه تو در تو: چاپ جدول ضرب 1 تا 3
for i in range(1,4):
for j in range(1,4):
print(i*j, end=' ')
print()
جواب:
1 2 3
2 4 6
3 6 9
52. حلقه تو در تو با شرط break
for i in range(1,4):
for j in range(1,4):
if i*j==4:
break
print(i*j, end=' ')
print()
جواب:
1 2 3
2
53. حلقه تو در تو با continue
for i in range(1,4):
for j in range(1,4):
if i*j==4:
continue
print(i*j, end=' ')
print()
جواب:
1 2 3
2 6
3 6 9
54. حلقه for روی رشته با break
for ch in "python":
if ch=='h':
break
print(ch)
جواب: p y t
55. حلقه for روی رشته با continue
for ch in "python":
if ch=='h':
continue
print(ch)
جواب: p y t o n
56. حلقه while روی رشته با break
s="abcde"
i=0
while i<len(s):
if s[i]=='c':
break
print(s[i])
i+=1
جواب: a b
57. حلقه while روی رشته با continue
s="abcde"
i=0
while i<len(s):
i+=1
if s[i-1]=='c':
continue
print(s[i-1])
جواب: a b d e
58. حلقه for روی لیست دیکشنری با break
people=[{'name':'Ali','age':20},{'name':'Sara','age':25}]
for p in people:
if p['age']>20:
break
print(p['name'])
جواب: Ali
59. حلقه for روی لیست دیکشنری با continue
people=[{'name':'Ali','age':20},{'name':'Sara','age':25}]
for p in people:
if p['age']>20:
continue
print(p['name'])
جواب: Ali
60. حلقه for روی مجموعه با break
s={1,2,3}
for n in s:
if n==2:
break
print(n)
جواب: بسته به ترتیب مجموعه، اولین عدد غیر 2 چاپ میشود
---
بخش ۴: حلقه تو در تو و ترکیبها (سوال 61–80)
61. چاپ مثلث ستاره
for i in range(1,6):
for j in range(i):
print('*', end='')
print()
جواب:
*
**
---
---
---
62. چاپ مربع اعداد با nested loops
for i in range(1,4):
for j in range(1,4):
print(j*i, end=' ')
print()
جواب: مشابه سوال 51
63. حلقه تو در تو برای جمع عناصر دو لیست
a=[1,2]
b=[10,20]
for i in a:
for j in b:
print(i+j)
جواب: 11 21 12 22
64. حلقه تو در تو برای همه ترکیبهای حروف
a=['x','y']
b=['1','2']
for i in a:
for j in b:
print(i+j)
جواب: x1 x2 y1 y2
65. حلقه تو در تو با شرط continue
for i in range(1,4):
for j in range(1,4):
if i==j:
continue
print(i,j)
جواب: 1 2 1 3 2 1 2 3 3 1 3 2
66. چاپ مستطیل ستاره با nested loop
for i in range(3):
for j in range(5):
print('*', end='')
print()
جواب: سه خط *
67. حلقه تو در تو با else
for i in range(3):
for j in range(2):
print(i,j)
else:
print("Inner done")
جواب:
0 0
0 1
Inner done
1 0
1 1
Inner done
2 0
2 1
Inner done
68. nested while loop ساده
i=1
while i<=2:
j=1
while j<=3:
print(i,j)
j+=1
i+=1
بخش ۳: break و continue (سوال 41–60)
41. حلقه for با break وقتی عدد 3 رسید
for i in range(1,6):
if i==3:
break
print(i)
جواب: 1 2
42. حلقه while با break
i=1
while i<=5:
if i==4:
break
print(i)
i+=1
جواب: 1 2 3
43. حلقه for با continue برای حذف عدد 2
for i in range(1,5):
if i==2:
continue
print(i)
جواب: 1 3 4
44. حلقه while با continue
i=0
while i<5:
i+=1
if i%2==0:
continue
print(i)
جواب: 1 3 5
45. حلقه for با break و else
for i in range(1,5):
if i==3:
break
print(i)
else:
print("Loop finished")
جواب: 1 2
46. حلقه for با continue و else
for i in range(1,5):
if i==3:
continue
print(i)
else:
print("Done")
جواب: 1 2 4 Done
47. حلقه while با break و else
i=0
while i<5:
print(i)
if i==3:
break
i+=1
else:
print("Finished")
جواب: 0 1 2 3
48. حلقه while با continue و else
i=0
while i<5:
i+=1
if i==2:
continue
print(i)
else:
print("Done")
جواب: 1 3 4 5 Done
49. چاپ اولین عدد زوج از لیست با break
lst=[1,3,4,5]
for n in lst:
if n%2==0:
print(n)
break
جواب: 4
50. چاپ همه عناصر غیر صفر با continue
lst=[0,1,0,2]
for n in lst:
if n==0:
continue
print(n)
جواب: 1 2
51. حلقه تو در تو: چاپ جدول ضرب 1 تا 3
for i in range(1,4):
for j in range(1,4):
print(i*j, end=' ')
print()
جواب:
1 2 3
2 4 6
3 6 9
52. حلقه تو در تو با شرط break
for i in range(1,4):
for j in range(1,4):
if i*j==4:
break
print(i*j, end=' ')
print()
جواب:
1 2 3
2
53. حلقه تو در تو با continue
for i in range(1,4):
for j in range(1,4):
if i*j==4:
continue
print(i*j, end=' ')
print()
جواب:
1 2 3
2 6
3 6 9
54. حلقه for روی رشته با break
for ch in "python":
if ch=='h':
break
print(ch)
جواب: p y t
55. حلقه for روی رشته با continue
for ch in "python":
if ch=='h':
continue
print(ch)
جواب: p y t o n
56. حلقه while روی رشته با break
s="abcde"
i=0
while i<len(s):
if s[i]=='c':
break
print(s[i])
i+=1
جواب: a b
57. حلقه while روی رشته با continue
s="abcde"
i=0
while i<len(s):
i+=1
if s[i-1]=='c':
continue
print(s[i-1])
جواب: a b d e
58. حلقه for روی لیست دیکشنری با break
people=[{'name':'Ali','age':20},{'name':'Sara','age':25}]
for p in people:
if p['age']>20:
break
print(p['name'])
جواب: Ali
59. حلقه for روی لیست دیکشنری با continue
people=[{'name':'Ali','age':20},{'name':'Sara','age':25}]
for p in people:
if p['age']>20:
continue
print(p['name'])
جواب: Ali
60. حلقه for روی مجموعه با break
s={1,2,3}
for n in s:
if n==2:
break
print(n)
جواب: بسته به ترتیب مجموعه، اولین عدد غیر 2 چاپ میشود
---
بخش ۴: حلقه تو در تو و ترکیبها (سوال 61–80)
61. چاپ مثلث ستاره
for i in range(1,6):
for j in range(i):
print('*', end='')
print()
جواب:
*
**
---
---
---
62. چاپ مربع اعداد با nested loops
for i in range(1,4):
for j in range(1,4):
print(j*i, end=' ')
print()
جواب: مشابه سوال 51
63. حلقه تو در تو برای جمع عناصر دو لیست
a=[1,2]
b=[10,20]
for i in a:
for j in b:
print(i+j)
جواب: 11 21 12 22
64. حلقه تو در تو برای همه ترکیبهای حروف
a=['x','y']
b=['1','2']
for i in a:
for j in b:
print(i+j)
جواب: x1 x2 y1 y2
65. حلقه تو در تو با شرط continue
for i in range(1,4):
for j in range(1,4):
if i==j:
continue
print(i,j)
جواب: 1 2 1 3 2 1 2 3 3 1 3 2
66. چاپ مستطیل ستاره با nested loop
for i in range(3):
for j in range(5):
print('*', end='')
print()
جواب: سه خط *
67. حلقه تو در تو با else
for i in range(3):
for j in range(2):
print(i,j)
else:
print("Inner done")
جواب:
0 0
0 1
Inner done
1 0
1 1
Inner done
2 0
2 1
Inner done
68. nested while loop ساده
i=1
while i<=2:
j=1
while j<=3:
print(i,j)
j+=1
i+=1
جواب: 1 1 1 2 1 3 2 1 2 2 2 3
69. چاپ اعداد مربعی با nested loops و شرط
for i in range(1,4):
for j in range(1,4):
if i==j:
continue
print(i*j)
جواب: 2 3 2 6 3 6
70. حلقه for روی دیکشنری با items
d={'a':1,'b':2}
for k,v in d.items():
print(k,v)
جواب: a 1 b 2
71. حلقه for روی دیکشنری فقط کلیدها
d={'x':5,'y':10}
for k in d:
print(k)
جواب: x y
72. حلقه for روی دیکشنری فقط مقادیر
d={'x':5,'y':10}
for v in d.values():
print(v)
69. چاپ اعداد مربعی با nested loops و شرط
for i in range(1,4):
for j in range(1,4):
if i==j:
continue
print(i*j)
جواب: 2 3 2 6 3 6
70. حلقه for روی دیکشنری با items
d={'a':1,'b':2}
for k,v in d.items():
print(k,v)
جواب: a 1 b 2
71. حلقه for روی دیکشنری فقط کلیدها
d={'x':5,'y':10}
for k in d:
print(k)
جواب: x y
72. حلقه for روی دیکشنری فقط مقادیر
d={'x':5,'y':10}
for v in d.values():
print(v)
سوال ۷۳ – حلقه for با شرط و جمع مقادیر زوج لیست
nums = [1, 2, 3, 4, 5, 6]
total = 0
for n in nums:
if n % 2 == 0:
total += n
print(total)
جواب:
12
توضیح:
حلقه for روی لیست nums میچرخد.
شرط if n % 2 == 0 مقادیر زوج را انتخاب میکند.
این مقادیر به متغیر total اضافه میشوند.
جمع اعداد زوج 2 + 4 + 6 = 12 است.
74. حلقه for روی لیست اعداد
nums = [1,2,3,4]
for n in nums:
print(n*2)
جواب: 2 4 6 8
75. حلقه while روی لیست
nums=[1,2,3]
i=0
while i<len(nums):
print(nums[i]+1)
i+=1
جواب: 2 3 4
76. حلقه for روی رشته و چاپ حروف بزرگ
s = "python"
for ch in s:
print(ch.upper())
جواب: P Y T H O N
77. حلقه while روی رشته و چاپ حروف غیر تکراری
s="hello"
i=0
seen=[]
while i<len(s):
if s[i] not in seen:
print(s[i])
seen.append(s[i])
i+=1
جواب: h e l o
78. حلقه for روی دیکشنری و چاپ کلیدهای بزرگ
d = {'a':1,'b':2}
for k in d.keys():
print(k.upper())
جواب: A B
79. حلقه for روی دیکشنری و مقادیر چند برابر
d={'x':2,'y':5}
for v in d.values():
print(v*10)
جواب: 20 50
80. حلقه for روی مجموعه با شرط
s={1,2,3,4}
for n in s:
if n%2==0:
print(n)
جواب: 2 4
81. حلقه while با شمارنده و break
i=0
while i<10:
if i==6:
break
print(i)
i+=2
جواب: 0 2 4
82. حلقه while با continue
i=0
while i<5:
i+=1
if i==3:
continue
print(i)
جواب: 1 2 4 5
83. حلقه for با enumerate روی رشته
s="abc"
for idx,ch in enumerate(s):
print(idx,ch)
جواب: 0 a 1 b 2 c
84. حلقه for با enumerate روی لیست
lst=[10,20,30]
for idx,val in enumerate(lst):
print(idx,val*2)
جواب: 0 20 1 40 2 60
85. حلقه for با zip دو لیست
a=[1,2,3]
b=[4,5,6]
for x,y in zip(a,b):
print(x+y)
جواب: 5 7 9
86. حلقه for روی رشته با شرط حروف صدادار
s="python"
for ch in s:
if ch in 'aeiou':
print(ch)
جواب: o
87. حلقه while با شمارش تعداد حروف
s="hello"
i=0
count=0
while i<len(s):
count+=1
i+=1
print(count)
جواب: 5
88. حلقه for با شرط و break روی لیست
nums=[1,3,5,4,6]
for n in nums:
if n%2==0:
print(n)
break
جواب: 4
89. حلقه for با شرط و continue روی لیست
nums=[1,2,3,4]
for n in nums:
if n%2!=0:
continue
print(n)
جواب: 2 4
90. حلقه تو در تو برای جمع ماتریس 2x2
matrix=[[1,2],[3,4]]
for row in matrix:
for val in row:
print(val)
جواب: 1 2 3 4
91. حلقه for روی لیست با شرط و else
nums=[1,2,3]
for n in nums:
print(n)
else:
print("Done")
جواب: 1 2 3 Done
92. حلقه while با شمارنده و else
i=0
while i<3:
print(i)
i+=1
else:
print("Finished")
جواب: 0 1 2 Finished
93. حلقه for روی رشته و skip حروف کوچک
s="PyThoN"
for ch in s:
if ch.islower():
continue
print(ch)
جواب: P T N
94. حلقه for روی رشته و stop روی حرف N
s="Python"
for ch in s:
if ch=="N":
break
print(ch)
جواب: P y t h o
95. حلقه while برای کاهش شمارنده تا صفر
i=5
while i>0:
print(i)
i-=1
جواب: 5 4 3 2 1
96. حلقه for با range معکوس
for i in range(5,0,-1):
print(i)
جواب: 5 4 3 2 1
97. حلقه while با شرط ترکیبی
i=0
while i<10 and i!=7:
print(i)
i+=2
جواب: 0 2 4 6
98. حلقه for روی رشته با index
s="abc"
for i in range(len(s)):
print(i,s[i])
جواب: 0 a 1 b 2 c
99. حلقه for روی دیکشنری و break
d={'a':1,'b':2}
for k,v in d.items():
if v==2:
break
print(k,v)
جواب: a 1
100. حلقه while با continue و شمارنده
i=0
while i<5:
i+=1
if i==3:
continue
print(i)
جواب: 1 2 4 5
---
nums = [1, 2, 3, 4, 5, 6]
total = 0
for n in nums:
if n % 2 == 0:
total += n
print(total)
جواب:
12
توضیح:
حلقه for روی لیست nums میچرخد.
شرط if n % 2 == 0 مقادیر زوج را انتخاب میکند.
این مقادیر به متغیر total اضافه میشوند.
جمع اعداد زوج 2 + 4 + 6 = 12 است.
74. حلقه for روی لیست اعداد
nums = [1,2,3,4]
for n in nums:
print(n*2)
جواب: 2 4 6 8
75. حلقه while روی لیست
nums=[1,2,3]
i=0
while i<len(nums):
print(nums[i]+1)
i+=1
جواب: 2 3 4
76. حلقه for روی رشته و چاپ حروف بزرگ
s = "python"
for ch in s:
print(ch.upper())
جواب: P Y T H O N
77. حلقه while روی رشته و چاپ حروف غیر تکراری
s="hello"
i=0
seen=[]
while i<len(s):
if s[i] not in seen:
print(s[i])
seen.append(s[i])
i+=1
جواب: h e l o
78. حلقه for روی دیکشنری و چاپ کلیدهای بزرگ
d = {'a':1,'b':2}
for k in d.keys():
print(k.upper())
جواب: A B
79. حلقه for روی دیکشنری و مقادیر چند برابر
d={'x':2,'y':5}
for v in d.values():
print(v*10)
جواب: 20 50
80. حلقه for روی مجموعه با شرط
s={1,2,3,4}
for n in s:
if n%2==0:
print(n)
جواب: 2 4
81. حلقه while با شمارنده و break
i=0
while i<10:
if i==6:
break
print(i)
i+=2
جواب: 0 2 4
82. حلقه while با continue
i=0
while i<5:
i+=1
if i==3:
continue
print(i)
جواب: 1 2 4 5
83. حلقه for با enumerate روی رشته
s="abc"
for idx,ch in enumerate(s):
print(idx,ch)
جواب: 0 a 1 b 2 c
84. حلقه for با enumerate روی لیست
lst=[10,20,30]
for idx,val in enumerate(lst):
print(idx,val*2)
جواب: 0 20 1 40 2 60
85. حلقه for با zip دو لیست
a=[1,2,3]
b=[4,5,6]
for x,y in zip(a,b):
print(x+y)
جواب: 5 7 9
86. حلقه for روی رشته با شرط حروف صدادار
s="python"
for ch in s:
if ch in 'aeiou':
print(ch)
جواب: o
87. حلقه while با شمارش تعداد حروف
s="hello"
i=0
count=0
while i<len(s):
count+=1
i+=1
print(count)
جواب: 5
88. حلقه for با شرط و break روی لیست
nums=[1,3,5,4,6]
for n in nums:
if n%2==0:
print(n)
break
جواب: 4
89. حلقه for با شرط و continue روی لیست
nums=[1,2,3,4]
for n in nums:
if n%2!=0:
continue
print(n)
جواب: 2 4
90. حلقه تو در تو برای جمع ماتریس 2x2
matrix=[[1,2],[3,4]]
for row in matrix:
for val in row:
print(val)
جواب: 1 2 3 4
91. حلقه for روی لیست با شرط و else
nums=[1,2,3]
for n in nums:
print(n)
else:
print("Done")
جواب: 1 2 3 Done
92. حلقه while با شمارنده و else
i=0
while i<3:
print(i)
i+=1
else:
print("Finished")
جواب: 0 1 2 Finished
93. حلقه for روی رشته و skip حروف کوچک
s="PyThoN"
for ch in s:
if ch.islower():
continue
print(ch)
جواب: P T N
94. حلقه for روی رشته و stop روی حرف N
s="Python"
for ch in s:
if ch=="N":
break
print(ch)
جواب: P y t h o
95. حلقه while برای کاهش شمارنده تا صفر
i=5
while i>0:
print(i)
i-=1
جواب: 5 4 3 2 1
96. حلقه for با range معکوس
for i in range(5,0,-1):
print(i)
جواب: 5 4 3 2 1
97. حلقه while با شرط ترکیبی
i=0
while i<10 and i!=7:
print(i)
i+=2
جواب: 0 2 4 6
98. حلقه for روی رشته با index
s="abc"
for i in range(len(s)):
print(i,s[i])
جواب: 0 a 1 b 2 c
99. حلقه for روی دیکشنری و break
d={'a':1,'b':2}
for k,v in d.items():
if v==2:
break
print(k,v)
جواب: a 1
100. حلقه while با continue و شمارنده
i=0
while i<5:
i+=1
if i==3:
continue
print(i)
جواب: 1 2 4 5
---
بخش ۳: پیشرفتهتر روی توابع (سوال 41–60)
41. تابع با آرگومان mutable و اثر آن بیرون
def add_item(lst):
lst.append(10)
mylist = [1,2]
add_item(mylist)
print(mylist)
جواب: [1,2,10]
توضیح: لیست mutable است و تغییرات داخل تابع روی لیست اصلی اعمال میشود.
42. تابع با آرگومان immutable
def increment(x):
x += 1
return x
num = 5
print(increment(num))
print(num)
جواب:
6
5
توضیح: عدد immutable است، مقدار اصلی تغییر نمیکند.
43. تابع با آرگومان string و تغییر آن
def add_text(s):
s += " world"
return s
txt = "Hello"
print(add_text(txt))
print(txt)
جواب:
Hello world
Hello
44. تابع با بازگشت چند نوع داده
def get_data():
return 1, "Ali", [1,2,3]
a,b,c = get_data()
print(a,b,c)
جواب: 1 Ali [1,2,3]
45. تابع با شرط و raise خطا
def check_positive(x):
if x<0:
raise ValueError("Negative!")
return x
print(check_positive(5))
جواب: 5
46. تابع بازگشتی ساده
def factorial(n):
if n==0:
return 1
return n*factorial(n-1)
print(factorial(5))
جواب: 120
47. تابع بازگشتی با شرط پیچیده
def fibonacci(n):
if n<=1:
return n
return fibonacci(n-1)+fibonacci(n-2)
print(fibonacci(6))
جواب: 8
48. تابع lambda ساده
f = lambda x: x*3
print(f(4))
جواب: 12
49. تابع lambda با چند آرگومان
f = lambda x,y: x+y
print(f(5,7))
جواب: 12
50. تابع lambda داخل تابع دیگر
def make_multiplier(n):
return lambda x: x*n
double = make_multiplier(2)
print(double(5))
جواب: 10
51. تابع با map و lambda
nums = [1,2,3]
result = list(map(lambda x: x**2, nums))
print(result)
جواب: [1,4,9]
52. تابع با filter و lambda
nums = [1,2,3,4]
evens = list(filter(lambda x: x%2==0, nums))
print(evens)
جواب: [2,4]
53. تابع با reduce (import functools)
from functools import reduce
nums = [1,2,3,4]
total = reduce(lambda x,y: x+y, nums)
print(total)
جواب: 10
54. تابع با list comprehension داخل تابع
def square_list(lst):
return [x**2 for x in lst]
print(square_list([1,2,3]))
جواب: [1,4,9]
55. تابع با شرط داخل list comprehension
def evens(lst):
return [x for x in lst if x%2==0]
print(evens([1,2,3,4,5]))
جواب: [2,4]
56. تابع با enumerate در list comprehension
def even_index(lst):
return [v for i,v in enumerate(lst) if i%2==0]
print(even_index([10,20,30,40]))
جواب: [10,30]
57. تابع با zip
names = ["Ali","Sara"]
ages = [25,30]
for n,a in zip(names,ages):
print(n,a)
جواب:
Ali 25
Sara 30
58. تابع با unpacking آرایه در آرگومان
def add(a,b,c):
return a+b+c
nums = [1,2,3]
print(add(*nums))
جواب: 6
59. تابع با unpacking dict در آرگومان
def describe(name, age):
print(name, age)
info = {"name":"Ali","age":25}
describe(**info)
جواب: Ali 25
60. تابع با decorator ساده
def decorator(func):
def wrapper():
print("Before")
func()
print("After")
return wrapper
@decorator
def say_hello():
print("Hello")
say_hello()
جواب:
Before
Hello
After
---
41. تابع با آرگومان mutable و اثر آن بیرون
def add_item(lst):
lst.append(10)
mylist = [1,2]
add_item(mylist)
print(mylist)
جواب: [1,2,10]
توضیح: لیست mutable است و تغییرات داخل تابع روی لیست اصلی اعمال میشود.
42. تابع با آرگومان immutable
def increment(x):
x += 1
return x
num = 5
print(increment(num))
print(num)
جواب:
6
5
توضیح: عدد immutable است، مقدار اصلی تغییر نمیکند.
43. تابع با آرگومان string و تغییر آن
def add_text(s):
s += " world"
return s
txt = "Hello"
print(add_text(txt))
print(txt)
جواب:
Hello world
Hello
44. تابع با بازگشت چند نوع داده
def get_data():
return 1, "Ali", [1,2,3]
a,b,c = get_data()
print(a,b,c)
جواب: 1 Ali [1,2,3]
45. تابع با شرط و raise خطا
def check_positive(x):
if x<0:
raise ValueError("Negative!")
return x
print(check_positive(5))
جواب: 5
46. تابع بازگشتی ساده
def factorial(n):
if n==0:
return 1
return n*factorial(n-1)
print(factorial(5))
جواب: 120
47. تابع بازگشتی با شرط پیچیده
def fibonacci(n):
if n<=1:
return n
return fibonacci(n-1)+fibonacci(n-2)
print(fibonacci(6))
جواب: 8
48. تابع lambda ساده
f = lambda x: x*3
print(f(4))
جواب: 12
49. تابع lambda با چند آرگومان
f = lambda x,y: x+y
print(f(5,7))
جواب: 12
50. تابع lambda داخل تابع دیگر
def make_multiplier(n):
return lambda x: x*n
double = make_multiplier(2)
print(double(5))
جواب: 10
51. تابع با map و lambda
nums = [1,2,3]
result = list(map(lambda x: x**2, nums))
print(result)
جواب: [1,4,9]
52. تابع با filter و lambda
nums = [1,2,3,4]
evens = list(filter(lambda x: x%2==0, nums))
print(evens)
جواب: [2,4]
53. تابع با reduce (import functools)
from functools import reduce
nums = [1,2,3,4]
total = reduce(lambda x,y: x+y, nums)
print(total)
جواب: 10
54. تابع با list comprehension داخل تابع
def square_list(lst):
return [x**2 for x in lst]
print(square_list([1,2,3]))
جواب: [1,4,9]
55. تابع با شرط داخل list comprehension
def evens(lst):
return [x for x in lst if x%2==0]
print(evens([1,2,3,4,5]))
جواب: [2,4]
56. تابع با enumerate در list comprehension
def even_index(lst):
return [v for i,v in enumerate(lst) if i%2==0]
print(even_index([10,20,30,40]))
جواب: [10,30]
57. تابع با zip
names = ["Ali","Sara"]
ages = [25,30]
for n,a in zip(names,ages):
print(n,a)
جواب:
Ali 25
Sara 30
58. تابع با unpacking آرایه در آرگومان
def add(a,b,c):
return a+b+c
nums = [1,2,3]
print(add(*nums))
جواب: 6
59. تابع با unpacking dict در آرگومان
def describe(name, age):
print(name, age)
info = {"name":"Ali","age":25}
describe(**info)
جواب: Ali 25
60. تابع با decorator ساده
def decorator(func):
def wrapper():
print("Before")
func()
print("After")
return wrapper
@decorator
def say_hello():
print("Hello")
say_hello()
جواب:
Before
Hello
After
---
بخش ۴: پیشرفته – ترکیب مفاهیم و سناریوهای پیچیده (سوال 61–80)
61. تابع بازگشتی با شرط توقف غیرساده
جواب:
62. تابع بازگشتی معکوس رشته
جواب:
cba
63. تابع با default parameter
جواب:
64. پارامتر پیشفرض mutable (خطرناک!)
جواب:
توضیح: لیست پیشفرض بین فراخوانیها مشترک است.
65. جلوگیری از مشکل بالا
جواب:
*66. تابع با args
جواب: 6
**67. تابع با kwargs
جواب:
**68. ترکیب *args و kwargs
جواب:
69. تابع بازگشتی جمع لیست
جواب: 6
70. تابع بازگشتی حداکثر در لیست
جواب: 9
71. تابع بازگشتی بررسی palindrome
جواب: True
72. تابع با inner function
جواب:
Hello from inner
73. تابع که تابع برمیگرداند
جواب: 15
74. closure با شمارنده
جواب:
75. تابع generator ساده
جواب:
76. generator با شرط
جواب: [0, 2, 4]
77. استفاده از yield from
جواب: [1, 2, 3]
78. تابع با annotation نوع داده
جواب: 5
79. تابع با docstring
جواب:
این تابع سلام میکند.
80. تابع با بازگشت تابع ناشناس
جواب: 25
61. تابع بازگشتی با شرط توقف غیرساده
def countdown(n): print(n) if n > 0: countdown(n-1) countdown(3) جواب:
3 2 1 0 62. تابع بازگشتی معکوس رشته
def reverse(s): if s == "": return "" return reverse(s[1:]) + s[0] print(reverse("abc")) جواب:
cba
63. تابع با default parameter
def greet(name="Guest"): print("Hello", name) greet() greet("Ali") جواب:
Hello Guest Hello Ali 64. پارامتر پیشفرض mutable (خطرناک!)
def add_num(num, lst=[]): lst.append(num) return lst print(add_num(1)) print(add_num(2)) جواب:
[1] [1, 2] توضیح: لیست پیشفرض بین فراخوانیها مشترک است.
65. جلوگیری از مشکل بالا
def add_num(num, lst=None): if lst is None: lst = [] lst.append(num) return lst print(add_num(1)) print(add_num(2)) جواب:
[1] [2] *66. تابع با args
def total(*numbers): return sum(numbers) print(total(1,2,3)) جواب: 6
**67. تابع با kwargs
def info(**data): for k,v in data.items(): print(k, v) info(name="Ali", age=25) جواب:
name Ali age 25 **68. ترکیب *args و kwargs
def func(*args, **kwargs): print(args) print(kwargs) func(1,2, name="Ali", age=25) جواب:
(1, 2) {'name': 'Ali', 'age': 25} 69. تابع بازگشتی جمع لیست
def sum_list(lst): if not lst: return 0 return lst[0] + sum_list(lst[1:]) print(sum_list([1,2,3])) جواب: 6
70. تابع بازگشتی حداکثر در لیست
def max_list(lst): if len(lst) == 1: return lst[0] m = max_list(lst[1:]) return m if m > lst[0] else lst[0] print(max_list([1,9,3])) جواب: 9
71. تابع بازگشتی بررسی palindrome
def is_palindrome(s): if len(s) <= 1: return True return s[0] == s[-1] and is_palindrome(s[1:-1]) print(is_palindrome("madam")) جواب: True
72. تابع با inner function
def outer(): def inner(): print("Hello from inner") inner() outer() جواب:
Hello from inner
73. تابع که تابع برمیگرداند
def make_adder(n): def adder(x): return x + n return adder add5 = make_adder(5) print(add5(10)) جواب: 15
74. closure با شمارنده
def counter(): count = 0 def inc(): nonlocal count count += 1 return count return inc c = counter() print(c()) print(c()) جواب:
1 2 75. تابع generator ساده
def gen_numbers(): yield 1 yield 2 yield 3 for n in gen_numbers(): print(n) جواب:
1 2 3 76. generator با شرط
def even_gen(n): for i in range(n): if i % 2 == 0: yield i print(list(even_gen(6))) جواب: [0, 2, 4]
77. استفاده از yield from
def sub_gen(): yield 1 yield 2 def main_gen(): yield from sub_gen() yield 3 print(list(main_gen())) جواب: [1, 2, 3]
78. تابع با annotation نوع داده
def add(x: int, y: int) -> int: return x + y print(add(2,3)) جواب: 5
79. تابع با docstring
def greet(): """این تابع سلام میکند.""" print("Hello") print(greet.__doc__) جواب:
این تابع سلام میکند.
80. تابع با بازگشت تابع ناشناس
def power(n): return lambda x: x**n square = power(2) print(square(5)) جواب: 25
بخش ۵: پیشرفته – سناریوهای خاص و نکات حرفهای (سوال 81–100)
81. تابع بازگشتی برای شمارش عناصر لیست چندلایه
def count_elements(lst):
total = 0
for i in lst:
if isinstance(i, list):
total += count_elements(i)
else:
total += 1
return total
print(count_elements([1,[2,3],[4,[5]]]))
جواب: 5
---
82. تابع با تابع کمکی (helper) داخلی
def factorial(n):
def helper(x):
if x == 0:
return 1
return x * helper(x-1)
return helper(n)
print(factorial(4))
جواب: 24
---
83. تابع که از global استفاده میکند
count = 0
def inc():
global count
count += 1
inc()
inc()
print(count)
جواب: 2
---
84. تابع با keyword-only arguments
def greet(*, name):
print("Hello", name)
greet(name="Sara")
جواب: Hello Sara
---
85. تابع با positional-only arguments (Python 3.8+)
def add(a, b, /):
return a + b
print(add(3, 4))
جواب: 7
---
86. تابع که خودش را از طریق globals صدا میزند
def call_self(n):
if n > 0:
print(n)
globals()['call_self'](n-1)
call_self(3)
جواب:
3
2
1
---
87. تابع با decorator که ورودی و خروجی را چاپ میکند
def log(func):
def wrapper(*args, **kwargs):
print("Args:", args)
result = func(*args, **kwargs)
print("Result:", result)
return result
return wrapper
@log
def add(a, b):
return a + b
add(2, 5)
جواب:
Args: (2, 5)
Result: 7
---
88. تابع با multiple decorators
def deco1(func):
def wrapper():
print("deco1 start")
func()
print("deco1 end")
return wrapper
def deco2(func):
def wrapper():
print("deco2 start")
func()
print("deco2 end")
return wrapper
@deco1
@deco2
def say_hi():
print("Hi")
say_hi()
جواب:
deco1 start
deco2 start
Hi
deco2 end
deco1 end
---
89. تابع که تابع دیگر را به عنوان پارامتر میگیرد
def execute(func):
func()
execute(lambda: print("Hello"))
جواب: Hello
---
90. تابع که چندین مقدار را با return برمیگرداند و unpack میکند
def calc(a, b):
return a+b, a*b
s, m = calc(3, 4)
print(s, m)
جواب:
7 12
---
91. تابع که با recursion عدد را به باینری تبدیل میکند
def to_binary(n):
if n == 0:
return ""
return to_binary(n // 2) + str(n % 2)
print(to_binary(5))
جواب: 101
---
92. تابع generator بینهایت
def infinite_numbers():
n = 0
while True:
yield n
n += 1
gen = infinite_numbers()
print(next(gen))
print(next(gen))
جواب:
0
1
---
93. تابع که list comprehension را برمیگرداند
def squares(n):
return [x**2 for x in range(n)]
print(squares(4))
جواب: [0, 1, 4, 9]
---
94. تابع که dict comprehension را برمیگرداند
def mapping(n):
return {x: x**2 for x in range(1, n+1)}
print(mapping(3))
جواب: {1: 1, 2: 4, 3: 9}
---
95. تابع که set comprehension را برمیگرداند
def unique_squares(lst):
return {x**2 for x in lst}
print(unique_squares([1,2,2,3]))
جواب: {1, 4, 9}
---
96. تابع با استفاده از any
def has_even(lst):
return any(x % 2 == 0 for x in lst)
print(has_even([1,3,5,8]))
جواب: True
---
97. تابع با استفاده از all
def all_positive(lst):
return all(x > 0 for x in lst)
print(all_positive([1,2,3]))
جواب: True
---
98. تابع که با recursion طول لیست را پیدا میکند
def length(lst):
if not lst:
return 0
return 1 + length(lst[1:])
print(length([1,2,3]))
جواب: 3
---
99. تابع که خودش را n بار صدا میزند
def repeat(func, n):
if n <= 0:
return
func()
repeat(func, n-1)
repeat(lambda: print("Hi"), 3)
جواب:
Hi
Hi
Hi
---
100. تابع که exception را درون خودش مدیریت میکند
def divide(a, b):
try:
return a / b
except ZeroDivisionError:
return "Cannot divide by zero"
print(divide(10, 2))
print(divide(5, 0))
جواب:
5.0
Cannot divide by zero
81. تابع بازگشتی برای شمارش عناصر لیست چندلایه
def count_elements(lst):
total = 0
for i in lst:
if isinstance(i, list):
total += count_elements(i)
else:
total += 1
return total
print(count_elements([1,[2,3],[4,[5]]]))
جواب: 5
---
82. تابع با تابع کمکی (helper) داخلی
def factorial(n):
def helper(x):
if x == 0:
return 1
return x * helper(x-1)
return helper(n)
print(factorial(4))
جواب: 24
---
83. تابع که از global استفاده میکند
count = 0
def inc():
global count
count += 1
inc()
inc()
print(count)
جواب: 2
---
84. تابع با keyword-only arguments
def greet(*, name):
print("Hello", name)
greet(name="Sara")
جواب: Hello Sara
---
85. تابع با positional-only arguments (Python 3.8+)
def add(a, b, /):
return a + b
print(add(3, 4))
جواب: 7
---
86. تابع که خودش را از طریق globals صدا میزند
def call_self(n):
if n > 0:
print(n)
globals()['call_self'](n-1)
call_self(3)
جواب:
3
2
1
---
87. تابع با decorator که ورودی و خروجی را چاپ میکند
def log(func):
def wrapper(*args, **kwargs):
print("Args:", args)
result = func(*args, **kwargs)
print("Result:", result)
return result
return wrapper
@log
def add(a, b):
return a + b
add(2, 5)
جواب:
Args: (2, 5)
Result: 7
---
88. تابع با multiple decorators
def deco1(func):
def wrapper():
print("deco1 start")
func()
print("deco1 end")
return wrapper
def deco2(func):
def wrapper():
print("deco2 start")
func()
print("deco2 end")
return wrapper
@deco1
@deco2
def say_hi():
print("Hi")
say_hi()
جواب:
deco1 start
deco2 start
Hi
deco2 end
deco1 end
---
89. تابع که تابع دیگر را به عنوان پارامتر میگیرد
def execute(func):
func()
execute(lambda: print("Hello"))
جواب: Hello
---
90. تابع که چندین مقدار را با return برمیگرداند و unpack میکند
def calc(a, b):
return a+b, a*b
s, m = calc(3, 4)
print(s, m)
جواب:
7 12
---
91. تابع که با recursion عدد را به باینری تبدیل میکند
def to_binary(n):
if n == 0:
return ""
return to_binary(n // 2) + str(n % 2)
print(to_binary(5))
جواب: 101
---
92. تابع generator بینهایت
def infinite_numbers():
n = 0
while True:
yield n
n += 1
gen = infinite_numbers()
print(next(gen))
print(next(gen))
جواب:
0
1
---
93. تابع که list comprehension را برمیگرداند
def squares(n):
return [x**2 for x in range(n)]
print(squares(4))
جواب: [0, 1, 4, 9]
---
94. تابع که dict comprehension را برمیگرداند
def mapping(n):
return {x: x**2 for x in range(1, n+1)}
print(mapping(3))
جواب: {1: 1, 2: 4, 3: 9}
---
95. تابع که set comprehension را برمیگرداند
def unique_squares(lst):
return {x**2 for x in lst}
print(unique_squares([1,2,2,3]))
جواب: {1, 4, 9}
---
96. تابع با استفاده از any
def has_even(lst):
return any(x % 2 == 0 for x in lst)
print(has_even([1,3,5,8]))
جواب: True
---
97. تابع با استفاده از all
def all_positive(lst):
return all(x > 0 for x in lst)
print(all_positive([1,2,3]))
جواب: True
---
98. تابع که با recursion طول لیست را پیدا میکند
def length(lst):
if not lst:
return 0
return 1 + length(lst[1:])
print(length([1,2,3]))
جواب: 3
---
99. تابع که خودش را n بار صدا میزند
def repeat(func, n):
if n <= 0:
return
func()
repeat(func, n-1)
repeat(lambda: print("Hi"), 3)
جواب:
Hi
Hi
Hi
---
100. تابع که exception را درون خودش مدیریت میکند
def divide(a, b):
try:
return a / b
except ZeroDivisionError:
return "Cannot divide by zero"
print(divide(10, 2))
print(divide(5, 0))
جواب:
5.0
Cannot divide by zero
فصل مدیریت فایلها
---
فصل مدیریت فایلها – ۱۰۰ سؤال
---
بخش ۱: ساده (سوال 1–20)
1. باز کردن و خواندن کل فایل
f = open("test.txt", "r")
print(f.read())
f.close()
---
2. خواندن بخشی از فایل
f = open("test.txt", "r")
print(f.read(5))
f.close()
---
3. خواندن یک خط
f = open("test.txt", "r")
print(f.readline())
f.close()
---
4. خواندن همه خطوط به صورت لیست
f = open("test.txt", "r")
print(f.readlines())
f.close()
---
5. حلقه روی خطوط فایل
f = open("test.txt", "r")
for line in f:
print(line.strip())
f.close()
---
6. نوشتن در فایل (حالت w)
f = open("new.txt", "w")
f.write("Hello World")
f.close()
---
7. اضافه کردن به فایل (حالت a)
f = open("new.txt", "a")
f.write("\nNew line")
f.close()
---
8. ایجاد فایل خالی (حالت x)
f = open("empty.txt", "x")
f.close()
---
9. استفاده از with برای خواندن
with open("test.txt", "r") as f:
print(f.read())
---
10. استفاده از with برای نوشتن
with open("new.txt", "w") as f:
f.write("Hi there")
---
11. بررسی وجود فایل با try
try:
f = open("test.txt", "r")
print(f.read())
f.close()
except FileNotFoundError:
print("File not found")
---
12. خواندن فایل باینری
with open("image.png", "rb") as f:
data = f.read()
print(type(data))
---
13. نوشتن فایل باینری
data = b"hello"
with open("data.bin", "wb") as f:
f.write(data)
---
14. تعیین encoding
with open("utf.txt", "w", encoding="utf-8") as f:
f.write("سلام")
---
15. خواندن فایل با encoding
with open("utf.txt", "r", encoding="utf-8") as f:
print(f.read())
---
16. پاک کردن محتوای فایل
open("test.txt", "w").close()
---
17. شمارش تعداد خطوط
with open("test.txt", "r") as f:
print(len(f.readlines()))
---
18. خواندن بدون خط جدید
with open("test.txt", "r") as f:
print(f.read().strip())
---
19. چک کردن writable بودن
with open("test.txt", "w") as f:
print(f.writable())
---
20. چک کردن readable بودن
with open("test.txt", "r") as f:
print(f.readable())
---
---
فصل مدیریت فایلها – ۱۰۰ سؤال
---
بخش ۱: ساده (سوال 1–20)
1. باز کردن و خواندن کل فایل
f = open("test.txt", "r")
print(f.read())
f.close()
---
2. خواندن بخشی از فایل
f = open("test.txt", "r")
print(f.read(5))
f.close()
---
3. خواندن یک خط
f = open("test.txt", "r")
print(f.readline())
f.close()
---
4. خواندن همه خطوط به صورت لیست
f = open("test.txt", "r")
print(f.readlines())
f.close()
---
5. حلقه روی خطوط فایل
f = open("test.txt", "r")
for line in f:
print(line.strip())
f.close()
---
6. نوشتن در فایل (حالت w)
f = open("new.txt", "w")
f.write("Hello World")
f.close()
---
7. اضافه کردن به فایل (حالت a)
f = open("new.txt", "a")
f.write("\nNew line")
f.close()
---
8. ایجاد فایل خالی (حالت x)
f = open("empty.txt", "x")
f.close()
---
9. استفاده از with برای خواندن
with open("test.txt", "r") as f:
print(f.read())
---
10. استفاده از with برای نوشتن
with open("new.txt", "w") as f:
f.write("Hi there")
---
11. بررسی وجود فایل با try
try:
f = open("test.txt", "r")
print(f.read())
f.close()
except FileNotFoundError:
print("File not found")
---
12. خواندن فایل باینری
with open("image.png", "rb") as f:
data = f.read()
print(type(data))
---
13. نوشتن فایل باینری
data = b"hello"
with open("data.bin", "wb") as f:
f.write(data)
---
14. تعیین encoding
with open("utf.txt", "w", encoding="utf-8") as f:
f.write("سلام")
---
15. خواندن فایل با encoding
with open("utf.txt", "r", encoding="utf-8") as f:
print(f.read())
---
16. پاک کردن محتوای فایل
open("test.txt", "w").close()
---
17. شمارش تعداد خطوط
with open("test.txt", "r") as f:
print(len(f.readlines()))
---
18. خواندن بدون خط جدید
with open("test.txt", "r") as f:
print(f.read().strip())
---
19. چک کردن writable بودن
with open("test.txt", "w") as f:
print(f.writable())
---
20. چک کردن readable بودن
with open("test.txt", "r") as f:
print(f.readable())
---
21. خواندن خط به خط با enumerate
with open("test.txt", "r") as f:
for i, line in enumerate(f, start=1):
print(i, line.strip())
---
22. نوشتن چند خط با writelines
lines = ["Line1\n", "Line2\n"]
with open("multi.txt", "w") as f:
f.writelines(lines)
---
23. خواندن و strip کردن هر خط
with open("test.txt", "r") as f:
print([line.strip() for line in f])
---
24. بررسی وجود فایل با os.path
import os
print(os.path.exists("test.txt"))
---
25. گرفتن سایز فایل
import os
print(os.path.getsize("test.txt"))
---
26. گرفتن مسیر کامل فایل
import os
print(os.path.abspath("test.txt"))
---
27. حذف فایل
import os
os.remove("test.txt")
---
28. تغییر نام فایل
import os
os.rename("old.txt", "new.txt")
---
29. کپی فایل
import shutil
shutil.copy("a.txt", "b.txt")
---
30. جابجایی فایل
import shutil
shutil.move("b.txt", "folder/b.txt")
---
31. خواندن فقط ۱۰ کاراکتر اول
with open("test.txt", "r") as f:
print(f.read(10))
---
32. رفتن به موقعیت خاص در فایل
with open("test.txt", "r") as f:
f.seek(5)
print(f.read())
---
33. گرفتن موقعیت فعلی
with open("test.txt", "r") as f:
f.read(4)
print(f.tell())
---
34. باز کردن فایل فقط خواندنی
f = open("test.txt", "rt")
print(f.mode)
f.close()
---
35. باز کردن فایل فقط نوشتنی
f = open("write.txt", "wt")
print(f.mode)
f.close()
---
36. باز کردن فایل فقط append
f = open("append.txt", "at")
print(f.mode)
f.close()
---
37. بستن خودکار با with
with open("test.txt") as f:
print(f.closed)
print(f.closed)
---
38. خواندن فایل خطبهخط و حذف خط خالی
with open("test.txt", "r") as f:
for line in f:
if line.strip():
print(line.strip())
---
39. نوشتن شماره خط قبل از محتوا
with open("test.txt", "r") as f:
lines = f.readlines()
with open("out.txt", "w") as f:
for i, line in enumerate(lines, 1):
f.write(f"{i}: {line}")
---
40. الحاق محتوا از یک فایل به فایل دیگر
with open("a.txt", "r") as f1, open("b.txt", "a") as f2:
f2.write(f1.read())
---
بخش ۳: پیشرفته (سوال 41–60)
41. کار با JSON – ذخیره
import json
data = {"name": "Ali", "age": 25}
with open("data.json", "w") as f:
json.dump(data, f)
---
42. کار با JSON – خواندن
import json
with open("data.json", "r") as f:
obj = json.load(f)
print(obj)
---
43. کار با CSV – نوشتن
import csv
rows = [["Name", "Age"], ["Ali", 25]]
with open("people.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(rows)
---
44. کار با CSV – خواندن
import csv
with open("people.csv", "r") as f:
reader = csv.reader(f)
for row in reader:
print(row)
---
45. کار با Pickle – ذخیره
import pickle
data = [1, 2, 3]
with open("data.pkl", "wb") as f:
pickle.dump(data, f)
---
46. کار با Pickle – خواندن
import pickle
with open("data.pkl", "rb") as f:
obj = pickle.load(f)
print(obj)
---
47. شمارش تعداد کاراکترها در فایل
with open("test.txt", "r") as f:
print(len(f.read()))
---
48. شمارش تعداد کلمات
with open("test.txt", "r") as f:
print(len(f.read().split()))
---
49. شمارش تعداد خطوط غیرخالی
with open("test.txt", "r") as f:
print(sum(1 for line in f if line.strip()))
---
50. جستجو یک کلمه در فایل
word = "Ali"
with open("test.txt", "r") as f:
print(any(word in line for line in f))
---
51. جایگزینی متن در فایل
with open("test.txt", "r") as f:
data = f.read().replace("old", "new")
with open("test.txt", "w") as f:
f.write(data)
---
52. معکوس کردن خطوط فایل
with open("test.txt", "r") as f:
lines = f.readlines()
with open("test.txt", "w") as f:
f.writelines(lines[::-1])
---
53. نوشتن شماره خط و تعداد کاراکتر
with open("test.txt", "r") as f:
for i, line in enumerate(f, 1):
print(i, len(line.strip()))
---
54. پیدا کردن طولانیترین خط
with open("test.txt", "r") as f:
print(max(f, key=len))
---
55. حذف خطوط تکراری
with open("test.txt", "r") as f:
lines = list(dict.fromkeys(f))
with open("test.txt", "w") as f:
f.writelines(lines)
---
56. ادغام چند فایل متنی
with open("test.txt", "r") as f:
for i, line in enumerate(f, start=1):
print(i, line.strip())
---
22. نوشتن چند خط با writelines
lines = ["Line1\n", "Line2\n"]
with open("multi.txt", "w") as f:
f.writelines(lines)
---
23. خواندن و strip کردن هر خط
with open("test.txt", "r") as f:
print([line.strip() for line in f])
---
24. بررسی وجود فایل با os.path
import os
print(os.path.exists("test.txt"))
---
25. گرفتن سایز فایل
import os
print(os.path.getsize("test.txt"))
---
26. گرفتن مسیر کامل فایل
import os
print(os.path.abspath("test.txt"))
---
27. حذف فایل
import os
os.remove("test.txt")
---
28. تغییر نام فایل
import os
os.rename("old.txt", "new.txt")
---
29. کپی فایل
import shutil
shutil.copy("a.txt", "b.txt")
---
30. جابجایی فایل
import shutil
shutil.move("b.txt", "folder/b.txt")
---
31. خواندن فقط ۱۰ کاراکتر اول
with open("test.txt", "r") as f:
print(f.read(10))
---
32. رفتن به موقعیت خاص در فایل
with open("test.txt", "r") as f:
f.seek(5)
print(f.read())
---
33. گرفتن موقعیت فعلی
with open("test.txt", "r") as f:
f.read(4)
print(f.tell())
---
34. باز کردن فایل فقط خواندنی
f = open("test.txt", "rt")
print(f.mode)
f.close()
---
35. باز کردن فایل فقط نوشتنی
f = open("write.txt", "wt")
print(f.mode)
f.close()
---
36. باز کردن فایل فقط append
f = open("append.txt", "at")
print(f.mode)
f.close()
---
37. بستن خودکار با with
with open("test.txt") as f:
print(f.closed)
print(f.closed)
---
38. خواندن فایل خطبهخط و حذف خط خالی
with open("test.txt", "r") as f:
for line in f:
if line.strip():
print(line.strip())
---
39. نوشتن شماره خط قبل از محتوا
with open("test.txt", "r") as f:
lines = f.readlines()
with open("out.txt", "w") as f:
for i, line in enumerate(lines, 1):
f.write(f"{i}: {line}")
---
40. الحاق محتوا از یک فایل به فایل دیگر
with open("a.txt", "r") as f1, open("b.txt", "a") as f2:
f2.write(f1.read())
---
بخش ۳: پیشرفته (سوال 41–60)
41. کار با JSON – ذخیره
import json
data = {"name": "Ali", "age": 25}
with open("data.json", "w") as f:
json.dump(data, f)
---
42. کار با JSON – خواندن
import json
with open("data.json", "r") as f:
obj = json.load(f)
print(obj)
---
43. کار با CSV – نوشتن
import csv
rows = [["Name", "Age"], ["Ali", 25]]
with open("people.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(rows)
---
44. کار با CSV – خواندن
import csv
with open("people.csv", "r") as f:
reader = csv.reader(f)
for row in reader:
print(row)
---
45. کار با Pickle – ذخیره
import pickle
data = [1, 2, 3]
with open("data.pkl", "wb") as f:
pickle.dump(data, f)
---
46. کار با Pickle – خواندن
import pickle
with open("data.pkl", "rb") as f:
obj = pickle.load(f)
print(obj)
---
47. شمارش تعداد کاراکترها در فایل
with open("test.txt", "r") as f:
print(len(f.read()))
---
48. شمارش تعداد کلمات
with open("test.txt", "r") as f:
print(len(f.read().split()))
---
49. شمارش تعداد خطوط غیرخالی
with open("test.txt", "r") as f:
print(sum(1 for line in f if line.strip()))
---
50. جستجو یک کلمه در فایل
word = "Ali"
with open("test.txt", "r") as f:
print(any(word in line for line in f))
---
51. جایگزینی متن در فایل
with open("test.txt", "r") as f:
data = f.read().replace("old", "new")
with open("test.txt", "w") as f:
f.write(data)
---
52. معکوس کردن خطوط فایل
with open("test.txt", "r") as f:
lines = f.readlines()
with open("test.txt", "w") as f:
f.writelines(lines[::-1])
---
53. نوشتن شماره خط و تعداد کاراکتر
with open("test.txt", "r") as f:
for i, line in enumerate(f, 1):
print(i, len(line.strip()))
---
54. پیدا کردن طولانیترین خط
with open("test.txt", "r") as f:
print(max(f, key=len))
---
55. حذف خطوط تکراری
with open("test.txt", "r") as f:
lines = list(dict.fromkeys(f))
with open("test.txt", "w") as f:
f.writelines(lines)
---
56. ادغام چند فایل متنی
files = ["a.txt", "b.txt"]
with open("merged.txt", "w") as out:
for file in files:
with open(file, "r") as f:
out.write(f.read() + "\n")
---
57. کپی باینری با read/write
with open("img.png", "rb") as f1, open("copy.png", "wb") as f2:
f2.write(f1.read())
---
58. نوشتن لیست در فایل با join
lst = ["a", "b", "c"]
with open("letters.txt", "w") as f:
f.write("\n".join(lst))
---
59. خواندن و تبدیل به لیست اعداد
with open("nums.txt", "r") as f:
nums = [int(x) for x in f.read().split()]
print(nums)
---
60. ساخت فایل log
with open("log.txt", "a") as f:
f.write("Event happened\n")
with open("merged.txt", "w") as out:
for file in files:
with open(file, "r") as f:
out.write(f.read() + "\n")
---
57. کپی باینری با read/write
with open("img.png", "rb") as f1, open("copy.png", "wb") as f2:
f2.write(f1.read())
---
58. نوشتن لیست در فایل با join
lst = ["a", "b", "c"]
with open("letters.txt", "w") as f:
f.write("\n".join(lst))
---
59. خواندن و تبدیل به لیست اعداد
with open("nums.txt", "r") as f:
nums = [int(x) for x in f.read().split()]
print(nums)
---
60. ساخت فایل log
with open("log.txt", "a") as f:
f.write("Event happened\n")
61. استفاده از pathlib برای خواندن فایل
from pathlib import Path
print(Path("test.txt").read_text())
---
62. استفاده از pathlib برای نوشتن فایل
from pathlib import Path
Path("hello.txt").write_text("Hello World")
---
63. بررسی وجود فایل با pathlib
from pathlib import Path
print(Path("test.txt").exists())
---
64. گرفتن پسوند فایل
from pathlib import Path
print(Path("data.csv").suffix)
---
65. گرفتن نام فایل بدون پسوند
from pathlib import Path
print(Path("data.csv").stem)
---
66. لیستکردن همه فایلهای پوشه
from pathlib import Path
for file in Path(".").iterdir():
print(file)
---
67. پیدا کردن همه فایلهای txt در پوشه
from pathlib import Path
for file in Path(".").glob("*.txt"):
print(file)
---
68. پیدا کردن فایلهای txt در همه زیرپوشهها
from pathlib import Path
for file in Path(".").rglob("*.txt"):
print(file)
---
69. تغییر نام فایل با pathlib
from pathlib import Path
Path("old.txt").rename("new.txt")
---
70. حذف فایل با pathlib
from pathlib import Path
Path("delete.txt").unlink()
---
71. خواندن فایل خطبهخط با pathlib
from pathlib import Path
for line in Path("test.txt").read_text().splitlines():
print(line)
---
72. ترکیب مسیرها با / در pathlib
from pathlib import Path
p = Path("folder") / "file.txt"
print(p)
---
73. بررسی اینکه مسیر فایل است یا پوشه
from pathlib import Path
print(Path("test.txt").is_file())
print(Path(".").is_dir())
---
74. گرفتن اندازه فایل با pathlib
from pathlib import Path
print(Path("test.txt").stat().st_size)
---
75. گرفتن تاریخ آخرین تغییر
from pathlib import Path
import datetime
time = Path("test.txt").stat().st_mtime
print(datetime.datetime.fromtimestamp(time))
---
76. خواندن و حذف فاصلهها از هر خط
with open("test.txt") as f:
print([line.strip() for line in f])
---
77. کپی فایل با pathlib + shutil
from pathlib import Path
import shutil
shutil.copy(Path("a.txt"), Path("b.txt"))
---
78. ذخیرهسازی دیکشنری به JSON با indent
import json
data = {"a": 1, "b": 2}
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
---
79. خواندن فایل CSV به لیست دیکشنریها
import csv
with open("people.csv", "r") as f:
reader = csv.DictReader(f)
print(list(reader))
---
80. نوشتن لیست دیکشنریها در CSV
import csv
rows = [{"Name": "Ali", "Age": 25}, {"Name": "Sara", "Age": 30}]
with open("people.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["Name", "Age"])
writer.writeheader()
writer.writerows(rows)
---
بخش ۵: ترکیبی و حرفهای (سوال 81–100)
81. خواندن لاگ و فیلتر خطهای دارای ERROR
with open("log.txt") as f:
for line in f:
if "ERROR" in line:
print(line.strip())
---
82. شمارش تعداد تکرار یک کلمه در فایل
word = "Python"
with open("test.txt") as f:
print(f.read().count(word))
---
83. ادغام همه فایلهای txt در یک فایل
from pathlib import Path
with open("merged.txt", "w") as out:
for file in Path(".").glob("*.txt"):
out.write(file.read_text() + "\n")
---
84. ایجاد فایل بکاپ قبل از ویرایش
import shutil
shutil.copy("data.txt", "data_backup.txt")
---
85. خواندن بزرگترین فایل در یک پوشه
from pathlib import Path
print(max(Path(".").iterdir(), key=lambda p: p.stat().st_size))
---
86. حذف همه فایلهای خالی
from pathlib import Path
for file in Path(".").glob("*"):
if file.is_file() and file.stat().st_size == 0:
file.unlink()
---
87. ذخیره متن ورودی کاربر در فایل
text = input("Enter text: ")
with open("user.txt", "w") as f:
f.write(text)
---
88. خواندن اولین n خط فایل
n = 3
with open("test.txt") as f:
for i in range(n):
print(f.readline().strip())
---
89. خواندن آخرین n خط فایل
n = 2
with open("test.txt") as f:
lines = f.readlines()
print(lines[-n:])
---
90. چک کردن دسترسی خواندن/نوشتن فایل
import os
print(os.access("test.txt", os.R_OK))
print(os.access("test.txt", os.W_OK))
---
91. نوشتن داده باینری از ورودی کاربر
data = b"12345"
with open("bin.bin", "wb") as f:
f.write(data)
---
92. خواندن فایل JSON و چاپ مقدار خاص
from pathlib import Path
print(Path("test.txt").read_text())
---
62. استفاده از pathlib برای نوشتن فایل
from pathlib import Path
Path("hello.txt").write_text("Hello World")
---
63. بررسی وجود فایل با pathlib
from pathlib import Path
print(Path("test.txt").exists())
---
64. گرفتن پسوند فایل
from pathlib import Path
print(Path("data.csv").suffix)
---
65. گرفتن نام فایل بدون پسوند
from pathlib import Path
print(Path("data.csv").stem)
---
66. لیستکردن همه فایلهای پوشه
from pathlib import Path
for file in Path(".").iterdir():
print(file)
---
67. پیدا کردن همه فایلهای txt در پوشه
from pathlib import Path
for file in Path(".").glob("*.txt"):
print(file)
---
68. پیدا کردن فایلهای txt در همه زیرپوشهها
from pathlib import Path
for file in Path(".").rglob("*.txt"):
print(file)
---
69. تغییر نام فایل با pathlib
from pathlib import Path
Path("old.txt").rename("new.txt")
---
70. حذف فایل با pathlib
from pathlib import Path
Path("delete.txt").unlink()
---
71. خواندن فایل خطبهخط با pathlib
from pathlib import Path
for line in Path("test.txt").read_text().splitlines():
print(line)
---
72. ترکیب مسیرها با / در pathlib
from pathlib import Path
p = Path("folder") / "file.txt"
print(p)
---
73. بررسی اینکه مسیر فایل است یا پوشه
from pathlib import Path
print(Path("test.txt").is_file())
print(Path(".").is_dir())
---
74. گرفتن اندازه فایل با pathlib
from pathlib import Path
print(Path("test.txt").stat().st_size)
---
75. گرفتن تاریخ آخرین تغییر
from pathlib import Path
import datetime
time = Path("test.txt").stat().st_mtime
print(datetime.datetime.fromtimestamp(time))
---
76. خواندن و حذف فاصلهها از هر خط
with open("test.txt") as f:
print([line.strip() for line in f])
---
77. کپی فایل با pathlib + shutil
from pathlib import Path
import shutil
shutil.copy(Path("a.txt"), Path("b.txt"))
---
78. ذخیرهسازی دیکشنری به JSON با indent
import json
data = {"a": 1, "b": 2}
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
---
79. خواندن فایل CSV به لیست دیکشنریها
import csv
with open("people.csv", "r") as f:
reader = csv.DictReader(f)
print(list(reader))
---
80. نوشتن لیست دیکشنریها در CSV
import csv
rows = [{"Name": "Ali", "Age": 25}, {"Name": "Sara", "Age": 30}]
with open("people.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["Name", "Age"])
writer.writeheader()
writer.writerows(rows)
---
بخش ۵: ترکیبی و حرفهای (سوال 81–100)
81. خواندن لاگ و فیلتر خطهای دارای ERROR
with open("log.txt") as f:
for line in f:
if "ERROR" in line:
print(line.strip())
---
82. شمارش تعداد تکرار یک کلمه در فایل
word = "Python"
with open("test.txt") as f:
print(f.read().count(word))
---
83. ادغام همه فایلهای txt در یک فایل
from pathlib import Path
with open("merged.txt", "w") as out:
for file in Path(".").glob("*.txt"):
out.write(file.read_text() + "\n")
---
84. ایجاد فایل بکاپ قبل از ویرایش
import shutil
shutil.copy("data.txt", "data_backup.txt")
---
85. خواندن بزرگترین فایل در یک پوشه
from pathlib import Path
print(max(Path(".").iterdir(), key=lambda p: p.stat().st_size))
---
86. حذف همه فایلهای خالی
from pathlib import Path
for file in Path(".").glob("*"):
if file.is_file() and file.stat().st_size == 0:
file.unlink()
---
87. ذخیره متن ورودی کاربر در فایل
text = input("Enter text: ")
with open("user.txt", "w") as f:
f.write(text)
---
88. خواندن اولین n خط فایل
n = 3
with open("test.txt") as f:
for i in range(n):
print(f.readline().strip())
---
89. خواندن آخرین n خط فایل
n = 2
with open("test.txt") as f:
lines = f.readlines()
print(lines[-n:])
---
90. چک کردن دسترسی خواندن/نوشتن فایل
import os
print(os.access("test.txt", os.R_OK))
print(os.access("test.txt", os.W_OK))
---
91. نوشتن داده باینری از ورودی کاربر
data = b"12345"
with open("bin.bin", "wb") as f:
f.write(data)
---
92. خواندن فایل JSON و چاپ مقدار خاص
import json
with open("data.json") as f:
data = json.load(f)
print(data["name"])
---
93. جستجو رشته در چند فایل
from pathlib import Path
for file in Path(".").glob("*.txt"):
if "Python" in file.read_text():
print(file)
---
94. پیدا کردن طولانیترین کلمه در فایل
with open("test.txt") as f:
words = f.read().split()
print(max(words, key=len))
---
95. ذخیره داده با فرمت YAML
import yaml
data = {"name": "Ali", "age": 25}
with open("data.yaml", "w") as f:
yaml.dump(data, f)
---
96. خواندن داده از YAML
import yaml
with open("data.yaml") as f:
print(yaml.safe_load(f))
---
97. تبدیل JSON به CSV
import json, csv
with open("data.json") as f:
data = json.load(f)
with open("data.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(data.keys())
writer.writerow(data.values())
---
98. خواندن CSV و ذخیره در JSON
import csv, json
with open("people.csv") as f:
reader = csv.DictReader(f)
data = list(reader)
with open("people.json", "w") as f:
json.dump(data, f)
---
99. خواندن و مرتبسازی خطوط فایل
with open("test.txt") as f:
lines = sorted(f.readlines())
with open("sorted.txt", "w") as f:
f.writelines(lines)
---
100. مدیریت خطا هنگام باز کردن فایل
try:
with open("nofile.txt") as f:
print(f.read())
except FileNotFoundError:
print("File not found!")
with open("data.json") as f:
data = json.load(f)
print(data["name"])
---
93. جستجو رشته در چند فایل
from pathlib import Path
for file in Path(".").glob("*.txt"):
if "Python" in file.read_text():
print(file)
---
94. پیدا کردن طولانیترین کلمه در فایل
with open("test.txt") as f:
words = f.read().split()
print(max(words, key=len))
---
95. ذخیره داده با فرمت YAML
import yaml
data = {"name": "Ali", "age": 25}
with open("data.yaml", "w") as f:
yaml.dump(data, f)
---
96. خواندن داده از YAML
import yaml
with open("data.yaml") as f:
print(yaml.safe_load(f))
---
97. تبدیل JSON به CSV
import json, csv
with open("data.json") as f:
data = json.load(f)
with open("data.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(data.keys())
writer.writerow(data.values())
---
98. خواندن CSV و ذخیره در JSON
import csv, json
with open("people.csv") as f:
reader = csv.DictReader(f)
data = list(reader)
with open("people.json", "w") as f:
json.dump(data, f)
---
99. خواندن و مرتبسازی خطوط فایل
with open("test.txt") as f:
lines = sorted(f.readlines())
with open("sorted.txt", "w") as f:
f.writelines(lines)
---
100. مدیریت خطا هنگام باز کردن فایل
try:
with open("nofile.txt") as f:
print(f.read())
except FileNotFoundError:
print("File not found!")
فصل خطاها و استثناها (Exceptions)
ساختار فصل
---
بخش ۱ – ساده (سوال ۱ تا ۲۰)
1. گرفتن خطای تقسیم بر صفر
try:
x = 5 / 0
except ZeroDivisionError:
print("Cannot divide by zero")
2. گرفتن خطای مقدار نامعتبر در int
try:
x = int("abc")
except ValueError:
print("Invalid integer")
3. گرفتن خطای باز کردن فایل غیر موجود
try:
f = open("nofile.txt")
except FileNotFoundError:
print("File not found")
4. گرفتن چند نوع خطا در یک except
try:
num = int("abc")
except (ValueError, TypeError):
print("Error in conversion")
5. استفاده از متغیر خطا
try:
1 / 0
except ZeroDivisionError as e:
print("Error:", e)
6. استفاده از else در try-except
try:
x = int("10")
except ValueError:
print("Error")
else:
print("Success:", x)
7. استفاده از finally برای بستن فایل
try:
f = open("data.txt", "w")
f.write("Hello")
finally:
f.close()
print("File closed")
8. گرفتن خطای IndexError
try:
nums = [1, 2]
print(nums[5])
except IndexError:
print("Index out of range")
9. گرفتن خطای KeyError
try:
d = {"a": 1}
print(d["b"])
except KeyError:
print("Key not found")
10. گرفتن خطای TypeError
try:
print(5 + "hi")
except TypeError:
print("Type mismatch")
11. گرفتن خطای NameError
try:
print(x)
except NameError:
print("Variable not defined")
12. جلوگیری از قطع برنامه با try-except
try:
1 / 0
except ZeroDivisionError:
print("Handled error, program continues")
print("End")
13. تست چندین except جداگانه
try:
int("abc")
except ValueError:
print("Value error")
except TypeError:
print("Type error")
14. گرفتن خطای AttributeError
try:
None.append(1)
except AttributeError:
print("No such attribute")
15. گرفتن خطای ImportError
try:
import non_existing_module
except ImportError:
print("Module not found")
16. گرفتن خطای OverflowError
try:
import math
math.exp(1000)
except OverflowError:
print("Number too large")
17. گرفتن خطای MemoryError
try:
x = [1] * (10**10)
except MemoryError:
print("Out of memory")
18. گرفتن خطای IOError
try:
f = open("/root/test.txt", "r")
except IOError:
print("Cannot open file")
19. گرفتن خطای UnicodeDecodeError
try:
with open("file.txt", encoding="ascii") as f:
print(f.read())
except UnicodeDecodeError:
print("Encoding error")
20. گرفتن خطای RuntimeError
try:
raise RuntimeError("Custom runtime error")
except RuntimeError as e:
print("Caught:", e)
21. استفاده از pass برای نادیده گرفتن خطا
try:
1 / 0
except ZeroDivisionError:
pass
print("Program continues")
22. چاپ نوع خطا با type()
try:
int("abc")
except Exception as e:
print(type(e))
23. گرفتن همه خطاها با Exception
try:
x = undefined_var
except Exception:
print("Some error occurred")
24. گرفتن خطا و پیامش با str(e)
try:
int("abc")
except Exception as e:
print("Error:", str(e))
25. استفاده از چندین except و else
try:
num = int("10")
except ValueError:
print("Invalid")
else:
print("OK:", num)
26. استفاده از چندین except و finally
try:
5 / 0
except ValueError:
print("Value error")
except ZeroDivisionError:
print("Divide by zero")
finally:
print("Done")
27. گرفتن خطای توقف حلقه با KeyboardInterrupt
try:
while True:
pass
except KeyboardInterrupt:
print("Stopped by user")
28. مدیریت خطا در تابع
def divide(a, b):
try:
return a / b
except ZeroDivisionError:
return None
print(divide(5, 0))
29. بازگرداندن مقدار پیشفرض در خطا
def to_int(s):
try:
return int(s)
except ValueError:
return 0
print(to_int("abc"))
30. استفاده از assert و گرفتن AssertionError
try:
assert 2 + 2 == 5
except AssertionError:
print("Assertion failed")
31. گرفتن خطای بازگشتی بیش از حد (RecursionError)
def f():
f()
try:
f()
except RecursionError:
print("Max recursion depth reached")
32. گرفتن خطای StopIteration
it = iter([1])
try:
next(it)
next(it)
except StopIteration:
print("No more items")
33. استفاده از try در لیستکامپریهنشن
ساختار فصل
---
بخش ۱ – ساده (سوال ۱ تا ۲۰)
1. گرفتن خطای تقسیم بر صفر
try:
x = 5 / 0
except ZeroDivisionError:
print("Cannot divide by zero")
2. گرفتن خطای مقدار نامعتبر در int
try:
x = int("abc")
except ValueError:
print("Invalid integer")
3. گرفتن خطای باز کردن فایل غیر موجود
try:
f = open("nofile.txt")
except FileNotFoundError:
print("File not found")
4. گرفتن چند نوع خطا در یک except
try:
num = int("abc")
except (ValueError, TypeError):
print("Error in conversion")
5. استفاده از متغیر خطا
try:
1 / 0
except ZeroDivisionError as e:
print("Error:", e)
6. استفاده از else در try-except
try:
x = int("10")
except ValueError:
print("Error")
else:
print("Success:", x)
7. استفاده از finally برای بستن فایل
try:
f = open("data.txt", "w")
f.write("Hello")
finally:
f.close()
print("File closed")
8. گرفتن خطای IndexError
try:
nums = [1, 2]
print(nums[5])
except IndexError:
print("Index out of range")
9. گرفتن خطای KeyError
try:
d = {"a": 1}
print(d["b"])
except KeyError:
print("Key not found")
10. گرفتن خطای TypeError
try:
print(5 + "hi")
except TypeError:
print("Type mismatch")
11. گرفتن خطای NameError
try:
print(x)
except NameError:
print("Variable not defined")
12. جلوگیری از قطع برنامه با try-except
try:
1 / 0
except ZeroDivisionError:
print("Handled error, program continues")
print("End")
13. تست چندین except جداگانه
try:
int("abc")
except ValueError:
print("Value error")
except TypeError:
print("Type error")
14. گرفتن خطای AttributeError
try:
None.append(1)
except AttributeError:
print("No such attribute")
15. گرفتن خطای ImportError
try:
import non_existing_module
except ImportError:
print("Module not found")
16. گرفتن خطای OverflowError
try:
import math
math.exp(1000)
except OverflowError:
print("Number too large")
17. گرفتن خطای MemoryError
try:
x = [1] * (10**10)
except MemoryError:
print("Out of memory")
18. گرفتن خطای IOError
try:
f = open("/root/test.txt", "r")
except IOError:
print("Cannot open file")
19. گرفتن خطای UnicodeDecodeError
try:
with open("file.txt", encoding="ascii") as f:
print(f.read())
except UnicodeDecodeError:
print("Encoding error")
20. گرفتن خطای RuntimeError
try:
raise RuntimeError("Custom runtime error")
except RuntimeError as e:
print("Caught:", e)
21. استفاده از pass برای نادیده گرفتن خطا
try:
1 / 0
except ZeroDivisionError:
pass
print("Program continues")
22. چاپ نوع خطا با type()
try:
int("abc")
except Exception as e:
print(type(e))
23. گرفتن همه خطاها با Exception
try:
x = undefined_var
except Exception:
print("Some error occurred")
24. گرفتن خطا و پیامش با str(e)
try:
int("abc")
except Exception as e:
print("Error:", str(e))
25. استفاده از چندین except و else
try:
num = int("10")
except ValueError:
print("Invalid")
else:
print("OK:", num)
26. استفاده از چندین except و finally
try:
5 / 0
except ValueError:
print("Value error")
except ZeroDivisionError:
print("Divide by zero")
finally:
print("Done")
27. گرفتن خطای توقف حلقه با KeyboardInterrupt
try:
while True:
pass
except KeyboardInterrupt:
print("Stopped by user")
28. مدیریت خطا در تابع
def divide(a, b):
try:
return a / b
except ZeroDivisionError:
return None
print(divide(5, 0))
29. بازگرداندن مقدار پیشفرض در خطا
def to_int(s):
try:
return int(s)
except ValueError:
return 0
print(to_int("abc"))
30. استفاده از assert و گرفتن AssertionError
try:
assert 2 + 2 == 5
except AssertionError:
print("Assertion failed")
31. گرفتن خطای بازگشتی بیش از حد (RecursionError)
def f():
f()
try:
f()
except RecursionError:
print("Max recursion depth reached")
32. گرفتن خطای StopIteration
it = iter([1])
try:
next(it)
next(it)
except StopIteration:
print("No more items")
33. استفاده از try در لیستکامپریهنشن
data = ["1", "x", "2"]
nums = [int(x) if x.isdigit() else 0 for x in data]
print(nums)
34. گرفتن خطای ValueError هنگام تبدیل لیست
data = ["10", "abc", "20"]
for x in data:
try:
print(int(x))
except ValueError:
print("Invalid:", x)
35. گرفتن خطای AttributeError در کلاس
class Test:
pass
try:
Test().hello()
except AttributeError:
print("No such method")
36. گرفتن خطای FileExistsError
import os
try:
os.mkdir("folder")
os.mkdir("folder")
except FileExistsError:
print("Folder exists")
37. گرفتن خطای PermissionError
try:
with open("/root/test.txt", "w") as f:
f.write("Hi")
except PermissionError:
print("Permission denied")
38. گرفتن خطای ModuleNotFoundError
try:
import not_a_module
except ModuleNotFoundError:
print("Module not found")
39. گرفتن خطای LookupError (پایه برای IndexError/KeyError)
try:
{}["x"]
except LookupError:
print("Lookup error")
40. گرفتن خطای ArithmeticError (پایه برای ZeroDivisionError)
try:
1 / 0
except ArithmeticError:
print("Arithmetic error")
41. استفاده از raise برای ایجاد خطا
x = -5 if x < 0: raise ValueError("x must be positive")
42. ایجاد خطای سفارشی با کلاس جدید
class MyError(Exception): pass raise MyError("Custom error occurred")
43. ایجاد خطای سفارشی و گرفتن آن
class MyError(Exception): pass try: raise MyError("Something wrong") except MyError as e: print(e)
44. استفاده از raise در تابع
def check_age(age): if age < 18: raise ValueError("Underage") check_age(15)
45. پرتاب خطا داخل except دیگر
try: int("abc") except ValueError: raise TypeError("Wrong type")
46. استفاده از from برای زنجیره خطاها
try: int("abc") except ValueError as e: raise RuntimeError("Failed") from e
47. خطای assert و پیام سفارشی
assert 2 + 2 == 4, "Math is broken!"
48. استفاده از finally حتی با raise
try: raise ValueError finally: print("Always runs")
49. گرفتن چند خطا با یک except tuple
try: x = int("abc") except (ValueError, TypeError): print("Value or type error")
50. بازنشر خطا با raise بدون آرگومان
try: 1 / 0 except ZeroDivisionError: print("Logging...") raise
51. استفاده از warnings برای هشدار
import warnings warnings.warn("This is a warning", UserWarning)
52. تبدیل هشدار به استثنا
import warnings warnings.simplefilter("error") warnings.warn("Will become error", UserWarning)
53. گرفتن TypeError
try: "a" + 1 except TypeError: print("Type error")
54. گرفتن خطای ImportError
try: from math import unknown_func except ImportError: print("Import error")
55. استفاده از try/except تو در تو
try: try: 1 / 0 except ZeroDivisionError: print("Inner error") except Exception: print("Outer error")
56. استفاده از متغیر خطا خارج از except
try: 1 / 0 except ZeroDivisionError as e: err = e print(err)
57. استفاده از sys.exc_info()
import sys try: 1 / 0 except: print(sys.exc_info())
58. مدیریت خطا در لیستپردازی
data = ["1", "x", "2"] nums = [] for s in data: try: nums.append(int(s)) except ValueError: nums.append(0) print(nums)
59. استفاده از contextlib.suppress()
from contextlib import suppress with suppress(FileNotFoundError): open("nofile.txt")
60. بستن منابع حتی با خطا
try: f = open("test.txt") 1 / 0 finally: f.close()
بخش ۴ – ترکیبی و حرفهای (سوال ۶۱ تا ۸۰)
61. مدیریت چند عملیات حساس با یک try
try: a = int("10") b = a / 0 except (ValueError, ZeroDivisionError) as e: print("Error:", e)
62. ایجاد خطای سفارشی با پارامترهای بیشتر
class InputError(Exception): def init(self, value, message): self.value = value self.message = message super().init(message) raise InputError(10, "Invalid input")
63. استفاده از raise در شرط
x = None if x is None: raise RuntimeError("x is required")
64. مدیریت خطا در باز کردن فایل
try: with open("nofile.txt") as f: print(f.read()) except FileNotFoundError: print("File not found")
65. ایجاد خطای منطقی خودکار
def divide(a, b): if b == 0: raise ZeroDivisionError return a / b
66. استفاده از assert برای ورودیها
def factorial(n): assert n >= 0, "n must be non-negative" return 1 if n == 0 else n * factorial(n - 1)
67. زنجیره خطاهای سفارشی
nums = [int(x) if x.isdigit() else 0 for x in data]
print(nums)
34. گرفتن خطای ValueError هنگام تبدیل لیست
data = ["10", "abc", "20"]
for x in data:
try:
print(int(x))
except ValueError:
print("Invalid:", x)
35. گرفتن خطای AttributeError در کلاس
class Test:
pass
try:
Test().hello()
except AttributeError:
print("No such method")
36. گرفتن خطای FileExistsError
import os
try:
os.mkdir("folder")
os.mkdir("folder")
except FileExistsError:
print("Folder exists")
37. گرفتن خطای PermissionError
try:
with open("/root/test.txt", "w") as f:
f.write("Hi")
except PermissionError:
print("Permission denied")
38. گرفتن خطای ModuleNotFoundError
try:
import not_a_module
except ModuleNotFoundError:
print("Module not found")
39. گرفتن خطای LookupError (پایه برای IndexError/KeyError)
try:
{}["x"]
except LookupError:
print("Lookup error")
40. گرفتن خطای ArithmeticError (پایه برای ZeroDivisionError)
try:
1 / 0
except ArithmeticError:
print("Arithmetic error")
41. استفاده از raise برای ایجاد خطا
x = -5 if x < 0: raise ValueError("x must be positive")
42. ایجاد خطای سفارشی با کلاس جدید
class MyError(Exception): pass raise MyError("Custom error occurred")
43. ایجاد خطای سفارشی و گرفتن آن
class MyError(Exception): pass try: raise MyError("Something wrong") except MyError as e: print(e)
44. استفاده از raise در تابع
def check_age(age): if age < 18: raise ValueError("Underage") check_age(15)
45. پرتاب خطا داخل except دیگر
try: int("abc") except ValueError: raise TypeError("Wrong type")
46. استفاده از from برای زنجیره خطاها
try: int("abc") except ValueError as e: raise RuntimeError("Failed") from e
47. خطای assert و پیام سفارشی
assert 2 + 2 == 4, "Math is broken!"
48. استفاده از finally حتی با raise
try: raise ValueError finally: print("Always runs")
49. گرفتن چند خطا با یک except tuple
try: x = int("abc") except (ValueError, TypeError): print("Value or type error")
50. بازنشر خطا با raise بدون آرگومان
try: 1 / 0 except ZeroDivisionError: print("Logging...") raise
51. استفاده از warnings برای هشدار
import warnings warnings.warn("This is a warning", UserWarning)
52. تبدیل هشدار به استثنا
import warnings warnings.simplefilter("error") warnings.warn("Will become error", UserWarning)
53. گرفتن TypeError
try: "a" + 1 except TypeError: print("Type error")
54. گرفتن خطای ImportError
try: from math import unknown_func except ImportError: print("Import error")
55. استفاده از try/except تو در تو
try: try: 1 / 0 except ZeroDivisionError: print("Inner error") except Exception: print("Outer error")
56. استفاده از متغیر خطا خارج از except
try: 1 / 0 except ZeroDivisionError as e: err = e print(err)
57. استفاده از sys.exc_info()
import sys try: 1 / 0 except: print(sys.exc_info())
58. مدیریت خطا در لیستپردازی
data = ["1", "x", "2"] nums = [] for s in data: try: nums.append(int(s)) except ValueError: nums.append(0) print(nums)
59. استفاده از contextlib.suppress()
from contextlib import suppress with suppress(FileNotFoundError): open("nofile.txt")
60. بستن منابع حتی با خطا
try: f = open("test.txt") 1 / 0 finally: f.close()
بخش ۴ – ترکیبی و حرفهای (سوال ۶۱ تا ۸۰)
61. مدیریت چند عملیات حساس با یک try
try: a = int("10") b = a / 0 except (ValueError, ZeroDivisionError) as e: print("Error:", e)
62. ایجاد خطای سفارشی با پارامترهای بیشتر
class InputError(Exception): def init(self, value, message): self.value = value self.message = message super().init(message) raise InputError(10, "Invalid input")
63. استفاده از raise در شرط
x = None if x is None: raise RuntimeError("x is required")
64. مدیریت خطا در باز کردن فایل
try: with open("nofile.txt") as f: print(f.read()) except FileNotFoundError: print("File not found")
65. ایجاد خطای منطقی خودکار
def divide(a, b): if b == 0: raise ZeroDivisionError return a / b
66. استفاده از assert برای ورودیها
def factorial(n): assert n >= 0, "n must be non-negative" return 1 if n == 0 else n * factorial(n - 1)
67. زنجیره خطاهای سفارشی
class ErrorA(Exception): pass class ErrorB(Exception): pass try: raise ErrorA except ErrorA as e: raise ErrorB from e
68. تبدیل همه خطاها به RuntimeError
try: int("abc") except Exception as e: raise RuntimeError from e
69. خطا در comprehension با try داخلی
data = ["1", "x"] nums = [int(x) if x.isdigit() else 0 for x in data]
70. استفاده از logging برای ثبت خطا
import logging try: 1 / 0 except ZeroDivisionError: logging.exception("Error occurred")
71. جلوگیری از خطا با isinstance
x = "5" if isinstance(x, int): print(x + 1) else: print("Not int")
72. گرفتن MemoryError
try: x = "a" * (10**10) except MemoryError: print("Out of memory")
73. استفاده از atexit برای تمیزکاری
import atexit atexit.register(lambda: print("Cleaning up")) raise RuntimeError
74. گرفتن خطای OSError
import os try: os.remove("nofile.txt") except OSError as e: print("OS error:", e)
75. گرفتن خطای RuntimeError
try: raise RuntimeError("Something bad happened") except RuntimeError as e: print(e)
76. گرفتن خطای ValueError در map
data = ["1", "x", "2"] try: list(map(int, data)) except ValueError as e: print(e)
77. مدیریت خطا در yield generator
def gen(): try: yield 1 / 0 except ZeroDivisionError: yield 0 print(list(gen()))
78. بازگرداندن پیام خطا به کاربر
def safe_div(a, b): try: return a / b except ZeroDivisionError as e: return str(e) print(safe_div(1, 0))
79. استفاده از exit هنگام خطا
import sys try: raise ValueError except ValueError: sys.exit("Fatal error")
80. مدیریت خطای JSON
import json try: json.loads("{bad json}") except json.JSONDecodeError: print("Invalid JSON")
بخش ۵ – فوقپیشرفته و ترکیبی (سوال ۸۱ تا ۱۰۰)
81. گرفتن خطا در چند سطح تابع
def a(): b() def b(): c() def c(): 1 / 0 try: a() except ZeroDivisionError: print("Caught")
82. گرفتن خطای UnicodeDecodeError
try: open("file.txt", encoding="ascii").read() except UnicodeDecodeError: print("Encoding error")
83. خطای UnicodeEncodeError
try: "سلام".encode("ascii") except UnicodeEncodeError: print("Cannot encode")
84. گرفتن خطای IndexError و پیام
try: [1, 2][5] except IndexError as e: print(e)
85. گرفتن خطای KeyError با مقدار پیشفرض
d = {"a": 1} try: print(d["b"]) except KeyError: print("Default value")
86. مدیریت چند خطا در حلقه بزرگ
items = [1, 0, "x"] for i in items: try: print(10 / i) except (TypeError, ZeroDivisionError) as e: print("Error:", e)
87. خطا در بازکردن URL
import urllib.request try: urllib.request.urlopen("http://invalid.url") except Exception as e: print("URL error:", e)
88. بازنشر خطا بعد از لاگ کردن
try: 1 / 0 except ZeroDivisionError as e: print("Logging:", e) raise
89. گرفتن خطا در threading
import threading def task(): raise ValueError t = threading.Thread(target=task) t.start() t.join() print("Thread done (error not caught here)")
90. گرفتن خطا در multiprocessing
from multiprocessing import Process def task(): raise ValueError p = Process(target=task) p.start() p.join() print("Process ended")
91. استفاده از try در context manager
class MyCM: def enter(self): return self def exit(self, exc_type, exc, tb): print("Error type:", exc_type) with MyCM(): 1 / 0
92. جلوگیری از توقف برنامه با except گسترده
while True: try: 1 / int(input("Number: ")) except: print("Error")
93. ذخیره جزئیات خطا در فایل
import traceback try: 1 / 0 except: with open("error.log", "w") as f: traceback.print_exc(file=f)
94. استفاده از traceback.format_exc()
import traceback try: 1 / 0 except: print(traceback.format_exc())
95. خطای EOFError در ورودی
try: input() except EOFError: print("No input")
96. خطای OverflowError
try: import math math.exp(1000) except OverflowError: print("Too large")
97. گرفتن خطای NotImplementedError
def f(): raise NotImplementedError try: f() except NotImplementedError: print("Not implemented")
98. گرفتن خطای ZeroDivisionError در float
try: 1.0 / 0.0 except ZeroDivisionError: print("Float division by zero")
99. گرفتن خطای socket
import socket try: socket.socket().connect(("invalid", 80)) except Exception as e: print("Socket error:", e)
100. گرفتن تمام خطاها و ادامه کار
68. تبدیل همه خطاها به RuntimeError
try: int("abc") except Exception as e: raise RuntimeError from e
69. خطا در comprehension با try داخلی
data = ["1", "x"] nums = [int(x) if x.isdigit() else 0 for x in data]
70. استفاده از logging برای ثبت خطا
import logging try: 1 / 0 except ZeroDivisionError: logging.exception("Error occurred")
71. جلوگیری از خطا با isinstance
x = "5" if isinstance(x, int): print(x + 1) else: print("Not int")
72. گرفتن MemoryError
try: x = "a" * (10**10) except MemoryError: print("Out of memory")
73. استفاده از atexit برای تمیزکاری
import atexit atexit.register(lambda: print("Cleaning up")) raise RuntimeError
74. گرفتن خطای OSError
import os try: os.remove("nofile.txt") except OSError as e: print("OS error:", e)
75. گرفتن خطای RuntimeError
try: raise RuntimeError("Something bad happened") except RuntimeError as e: print(e)
76. گرفتن خطای ValueError در map
data = ["1", "x", "2"] try: list(map(int, data)) except ValueError as e: print(e)
77. مدیریت خطا در yield generator
def gen(): try: yield 1 / 0 except ZeroDivisionError: yield 0 print(list(gen()))
78. بازگرداندن پیام خطا به کاربر
def safe_div(a, b): try: return a / b except ZeroDivisionError as e: return str(e) print(safe_div(1, 0))
79. استفاده از exit هنگام خطا
import sys try: raise ValueError except ValueError: sys.exit("Fatal error")
80. مدیریت خطای JSON
import json try: json.loads("{bad json}") except json.JSONDecodeError: print("Invalid JSON")
بخش ۵ – فوقپیشرفته و ترکیبی (سوال ۸۱ تا ۱۰۰)
81. گرفتن خطا در چند سطح تابع
def a(): b() def b(): c() def c(): 1 / 0 try: a() except ZeroDivisionError: print("Caught")
82. گرفتن خطای UnicodeDecodeError
try: open("file.txt", encoding="ascii").read() except UnicodeDecodeError: print("Encoding error")
83. خطای UnicodeEncodeError
try: "سلام".encode("ascii") except UnicodeEncodeError: print("Cannot encode")
84. گرفتن خطای IndexError و پیام
try: [1, 2][5] except IndexError as e: print(e)
85. گرفتن خطای KeyError با مقدار پیشفرض
d = {"a": 1} try: print(d["b"]) except KeyError: print("Default value")
86. مدیریت چند خطا در حلقه بزرگ
items = [1, 0, "x"] for i in items: try: print(10 / i) except (TypeError, ZeroDivisionError) as e: print("Error:", e)
87. خطا در بازکردن URL
import urllib.request try: urllib.request.urlopen("http://invalid.url") except Exception as e: print("URL error:", e)
88. بازنشر خطا بعد از لاگ کردن
try: 1 / 0 except ZeroDivisionError as e: print("Logging:", e) raise
89. گرفتن خطا در threading
import threading def task(): raise ValueError t = threading.Thread(target=task) t.start() t.join() print("Thread done (error not caught here)")
90. گرفتن خطا در multiprocessing
from multiprocessing import Process def task(): raise ValueError p = Process(target=task) p.start() p.join() print("Process ended")
91. استفاده از try در context manager
class MyCM: def enter(self): return self def exit(self, exc_type, exc, tb): print("Error type:", exc_type) with MyCM(): 1 / 0
92. جلوگیری از توقف برنامه با except گسترده
while True: try: 1 / int(input("Number: ")) except: print("Error")
93. ذخیره جزئیات خطا در فایل
import traceback try: 1 / 0 except: with open("error.log", "w") as f: traceback.print_exc(file=f)
94. استفاده از traceback.format_exc()
import traceback try: 1 / 0 except: print(traceback.format_exc())
95. خطای EOFError در ورودی
try: input() except EOFError: print("No input")
96. خطای OverflowError
try: import math math.exp(1000) except OverflowError: print("Too large")
97. گرفتن خطای NotImplementedError
def f(): raise NotImplementedError try: f() except NotImplementedError: print("Not implemented")
98. گرفتن خطای ZeroDivisionError در float
try: 1.0 / 0.0 except ZeroDivisionError: print("Float division by zero")
99. گرفتن خطای socket
import socket try: socket.socket().connect(("invalid", 80)) except Exception as e: print("Socket error:", e)
100. گرفتن تمام خطاها و ادامه کار
for x in [1, 0, "x"]: try: print(10 / x) except Exception as e: print("Error:", e)
فصل کلاسها و شیءگرایی (OOP)
بخش ۱ – مفاهیم پایه کلاس (سوال ۱ تا ۲۰)
1. تعریف یک کلاس ساده
2. ایجاد شی از کلاس
3. افزودن ویژگی به شی بعد از ایجاد
4. متد سازنده init
5. ایجاد دو شی با مقادیر متفاوت
6. افزودن متد به کلاس
7. متد با استفاده از ویژگی داخلی
8. تغییر ویژگی بعد از ساخت شی
9. حذف ویژگی با del
10. متد با پارامتر ورودی
11. استفاده از self برای دسترسی به ویژگیها
12. ایجاد ویژگی پیشفرض
13. نماstrار شی با __str__
14. استفاده از __repr__ برای نreprی
15. مقایسه اinit_eq__
16. شمارش تعداد اشیای ساinit
17. ویژگی کلاس در مقابل ویژگی شی
18. پاک کردن ویژگی کلاس
19. استفاده از docstring در کلاس
20. بررسی نوع شی با isinstance
بخش ۱ – مفاهیم پایه کلاس (سوال ۱ تا ۲۰)
1. تعریف یک کلاس ساده
class Person: pass 2. ایجاد شی از کلاس
class Person: pass p = Person() 3. افزودن ویژگی به شی بعد از ایجاد
class Person: pass p = Person() p.name = "Ali" 4. متد سازنده init
class Person: def __init__(self, name): self.name = name 5. ایجاد دو شی با مقادیر متفاوت
p1 = Person("Ali") p2 = Person("Sara") 6. افزودن متد به کلاس
class Person: def say_hello(self): print("Hello!") 7. متد با استفاده از ویژگی داخلی
class Person: def __init__(self, name): self.name = name def greet(self): print(f"Hello {self.name}") 8. تغییر ویژگی بعد از ساخت شی
p = Person("Ali") p.name = "Reza" 9. حذف ویژگی با del
del p.name 10. متد با پارامتر ورودی
class Calculator: def add(self, x, y): return x + y 11. استفاده از self برای دسترسی به ویژگیها
class Counter: def __init__(self): self.count = 0 def inc(self): self.count += 1 12. ایجاد ویژگی پیشفرض
class Person: def __init__(self, name="Unknown"): self.name = name 13. نماstrار شی با __str__
class Person: def __init__(self, name): self.name = name def __str__(self): return f"Person({self.name})" 14. استفاده از __repr__ برای نreprی
class Person: def __repr__(self): return "Person object" 15. مقایسه اinit_eq__
class Person: def __init__(self, name): self.name = name def __eq__(self, other): return self.name == other.name 16. شمارش تعداد اشیای ساinit
class Person: count = 0 def __init__(self): Person.count += 1 17. ویژگی کلاس در مقابل ویژگی شی
class A: x = 10 a1 = A() a2 = A() a1.x = 20 18. پاک کردن ویژگی کلاس
del A.x 19. استفاده از docstring در کلاس
class Person: """This class represents a person.""" 20. بررسی نوع شی با isinstance
isinstance(p, Person)21. متد کلاس (@classmethod)
22. استفاده از متد کلاس برای ساخت شی
23. متد استاتیک (@staticmethod)
24. تفاوت متد استاتیک و کلاس
25. ویژگی خصوصی با دو خط زیر
26. متد خصوصی با دو خط زیر
27. دسترسی به ویژگی خصوصی با name mangling
28. ویژگی فقط خواندنی با property
29. ویژگی خواندنی/نوشتنی با setter
30. حذف ویژگی با deleter
31. شمارش اشیا با متد کلاس
32. اضافه کردن ویژگی به صورت داینامیک
33. گرفتن مقدار ویژگی به صورت داینامیک
34. بررسی وجود ویژگی
35. حذف ویژگی داینامیک
36.dirه از متد __dir__
37. ذخیرهسازی همه اشیا در یک لیست
38. شمdictویژdict __dict__
39. تغییر ویژگی کلاس در تمام اشیا
40. تعریف متدهای متعدد برای یک کلاس
بخش ۳ – وراثت و چندریختی (سوال 41 تا 60)
41. تعریف کلاس فرزند
42. وراثت سازنده والد
43. متد override در کلاس فرزند
44. استفاده از super() برای فراخوانی متد والد
45. چندریختی با متد مشترک
46. چند وراثتی
47. ترتیب جستجوی متدها (MRO)
48. متد کلاس والد در چند وراثتی
49. کلاس انتزاعی با abc
50. پیادهسازی کلاس انتزاعی
51. استفاده از متدهای انتزاعی در چندریختی
52. جلوگیری از وراثت باinit
53. ارثبرbasesای کلاس والد
54. اضافه کردن ویژگی به والد و دیدن در فرزند
55. تغییر ویژگی کلاس والد از فرزند
56. استفاده از isinstance برای بررسی نوع فرزند
57. استفاده از issubclass برای بررسی وراثت
58. چندریختی با __str__
59. سازنده خالی در کلاس فرزند
60. متد والد بدون تغییر در فرزند
بخش ۴ – ویژگیهای پیشرفته (سوال 61 add61. استفاده از متدهinitی __add__
62. متد جادویی __len__
63. متد جادویی __getitem__
64. متد جادویی __setitem__
class MyClass: count = 0 @classmethod def inc(cls): cls.count += 1 22. استفاده از متد کلاس برای ساخت شی
class Person: def __init__(self, name): self.name = name @classmethod def from_list(cls, names): return [cls(name) for name in names] 23. متد استاتیک (@staticmethod)
class Math: @staticmethod def add(a, b): return a + b 24. تفاوت متد استاتیک و کلاس
Math.add(2, 3) # بدون نیاز به self یا cls 25. ویژگی خصوصی با دو خط زیر
class Person: def __init__(self, name): self.__name = name 26. متد خصوصی با دو خط زیر
class Person: def __secret(self): print("Hidden") 27. دسترسی به ویژگی خصوصی با name mangling
p._Person__name 28. ویژگی فقط خواندنی با property
class Person: def __init__(self, age): self._age = age @property def age(self): return self._age 29. ویژگی خواندنی/نوشتنی با setter
class Person: @property def name(self): return self._name @name.setter def name(self, value): self._name = value 30. حذف ویژگی با deleter
class Person: @property def name(self): return self._name @name.deleter def name(self): del self._name 31. شمارش اشیا با متد کلاس
class Person: count = 0 def __init__(self): Person.count += 1 @classmethod def total(cls): return cls.count 32. اضافه کردن ویژگی به صورت داینامیک
p = Person() setattr(p, "age", 25) 33. گرفتن مقدار ویژگی به صورت داینامیک
getattr(p, "age") 34. بررسی وجود ویژگی
hasattr(p, "age") 35. حذف ویژگی داینامیک
delattr(p, "age") 36.dirه از متد __dir__
dir(p) 37. ذخیرهسازی همه اشیا در یک لیست
class Person: all_objects = [] def __init__(self): Person.all_objects.append(self) 38. شمdictویژdict __dict__
p.__dict__ 39. تغییر ویژگی کلاس در تمام اشیا
Person.count = 100 40. تعریف متدهای متعدد برای یک کلاس
class Person: def greet(self): pass def walk(self): pass بخش ۳ – وراثت و چندریختی (سوال 41 تا 60)
41. تعریف کلاس فرزند
class Animal: pass class Dog(Animal): pass 42. وراثت سازنده والد
class Animal: def __init__(self, name): self.name = name class Dog(Animal): def __init__(self, name, breed): super().__init__(name) self.breed = breed 43. متد override در کلاس فرزند
class Dog(Animal): def speak(self): print("Woof!") 44. استفاده از super() برای فراخوانی متد والد
class Dog(Animal): def speak(self): super().speak() print("Woof!") 45. چندریختی با متد مشترک
for animal in [Dog(), Cat()]: animal.speak() 46. چند وراثتی
class A: pass class B: pass class C(A, B): pass 47. ترتیب جستجوی متدها (MRO)
C.mro() 48. متد کلاس والد در چند وراثتی
super(A, self).method() 49. کلاس انتزاعی با abc
from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod def area(self): pass 50. پیادهسازی کلاس انتزاعی
class Circle(Shape): def area(self): return 3.14 * r * r 51. استفاده از متدهای انتزاعی در چندریختی
shapes = [Circle(), Square()] for s in shapes: print(s.area()) 52. جلوگیری از وراثت باinit
class Final(type): def __init__(cls, name, bases, attrs): for base in bases: if isinstance(base, Final): raise TypeError("Can't inherit") 53. ارثبرbasesای کلاس والد
print(Dog.__bases__) 54. اضافه کردن ویژگی به والد و دیدن در فرزند
Animal.legs = 4 55. تغییر ویژگی کلاس والد از فرزند
Dog.legs = 3 56. استفاده از isinstance برای بررسی نوع فرزند
isinstance(Dog(), Animal) 57. استفاده از issubclass برای بررسی وراثت
issubclass(Dog, Animal) 58. چندریختی با __str__
print([str(obj) for obj in [Dog(), Cat()]]) 59. سازنده خالی در کلاس فرزند
class Dog(Animal): pass 60. متد والد بدون تغییر در فرزند
Dog().parent_method() بخش ۴ – ویژگیهای پیشرفته (سوال 61 add61. استفاده از متدهinitی __add__
class Vector: def __init__(self, x): self.x = x def __add__(self, other): return Vector(self.x + other.x) 62. متد جادویی __len__
def __len__(self): return len(self.items) 63. متد جادویی __getitem__
def __getitem__(self, index): return self.data[index] 64. متد جادویی __setitem__