{k:v*2 for k,v in d.items() if v>10}
98. چگونه Dictionary را sort بر اساس طول کلید کنیم؟
dict(sorted(d.items(), key=lambda item: len(item[0])))
99. چگونه Dictionary را sort بر اساس طول مقدار (اگر رشته است) کنیم؟
dict(sorted(d.items(), key=lambda item: len(str(item[1]))))
100. چگونه همه مقادیر Dictionary را با map به عدد تبدیل کنیم (در صورت امکان)
d = {k:int(v) for k,v in d.items()}
---
98. چگونه Dictionary را sort بر اساس طول کلید کنیم؟
dict(sorted(d.items(), key=lambda item: len(item[0])))
99. چگونه Dictionary را sort بر اساس طول مقدار (اگر رشته است) کنیم؟
dict(sorted(d.items(), key=lambda item: len(str(item[1]))))
100. چگونه همه مقادیر Dictionary را با map به عدد تبدیل کنیم (در صورت امکان)
d = {k:int(v) for k,v in d.items()}
---
فصل بعدی شرطها و تصمیمگیریها (If statements) است.
۱۰۰ سوال فصل If statements
مفاهیم پایه
شرط چیست؟
جواب: عبارتی که True یا False برمیگرداند.
if در پایتون چه کار میکند؟
جواب: اگر شرط True باشد، بلاک کد داخلش اجرا میشود.
else چیست؟
جواب: بلاک کدی که وقتی شرط if False باشد اجرا میشود.
elif چیست؟
جواب: برای بررسی شرطهای دیگر پس از if.
شرط ترکیبی چیست؟
جواب: شرطی که با and، or، not ترکیب شده است.
عملگرهای مقایسهای
== چیست؟
جواب: بررسی برابری دو مقدار.
!= چیست؟
جواب: بررسی نابرابری دو مقدار.
چیست؟
جواب: بررسی بزرگتر بودن.
< چیست؟
جواب: بررسی کوچکتر بودن.
= چیست؟
جواب: بررسی بزرگتر یا مساوی بودن.
<= چیست؟
جواب: بررسی کوچکتر یا مساوی بودن.
عملگرهای منطقی
and چیست؟
جواب: True اگر هر دو شرط True باشند.
or چیست؟
جواب: True اگر یکی از شرطها True باشد.
not چیست؟
جواب: معکوس نتیجه شرط.
ساختار if ساده
یک if ساده بنویسید.
جواب:
if x > 0: print("مثبت است")
if … else
if … else چه تفاوتی با if ساده دارد؟
جواب: else وقتی شرط False است اجرا میشود.
مثال if … else بنویسید.
جواب:
if x % 2 == 0: print("زوج") else: print("فرد")
if … elif … else
elif چه کاربردی دارد؟
جواب: برای بررسی چند شرط متوالی.
مثال if … elif … else بنویسید.
جواب:
if x > 0: print("مثبت") elif x < 0: print("منفی") else: print("صفر")
شرط در یک خط (ternary)
ternary operator چیست؟
جواب: شرط کوتاه در یک خط.
مثال ternary بنویسید.
جواب:
result = "مثبت" if x > 0 else "غیر مثبت"
تو در تویی if
if تو در تو چیست؟
جواب: قراردادن یک if داخل if دیگر.
مثال if تو در تویی.
جواب:
if x > 0: if x < 10: print("بین ۰ و ۱۰")
بررسی چند شرط با and
مثال استفاده از and.
جواب:
if x > 0 and x < 10: print("بین ۰ و ۱۰")
بررسی چند شرط با or
مثال استفاده از or.
جواب:
if x < 0 or x > 100: print("خارج از محدوده")
استفاده از not
مثال استفاده از not.
جواب:
if not x > 0: print("منفی یا صفر")
مقایسه رشتهها
بررسی رشته با if.
جواب:
if name == "Ali": print("سلام علی")
مقایسه رشته و عدد
مقایسه رشته و عدد؟
جواب: باید نوع دادهها یکسان باشند، در غیر این صورت خطا میدهد.
شرط چندگانه
مثال چند شرط با and و or.
جواب:
if x > 0 and (x < 5 or x > 10): print("شرط پیچیده")
شرط با لیست
بررسی عضو بودن در لیست.
جواب:
if item in my_list: print("وجود دارد")
شرط با not in
بررسی عضو نبودن در لیست.
جواب:
if item not in my_list: print("وجود ندارد")
تابع و if
استفاده از if داخل تابع.
جواب:
def check_num(x): if x > 0: return "مثبت" else: return "منفی یا صفر"
مقایسه boolean
اگر x True باشد، چگونه بررسی میکنیم؟
جواب:
if x: print("True است")
بررسی False
اگر x False باشد، چگونه بررسی میکنیم؟
جواب:
if not x: print("False است")
استفاده از is
is چیست؟
جواب: بررسی همهویتی دو شی (نه فقط برابری).
مثال استفاده از is.
جواب:
if a is b: print("a و b یکی هستند")
if و حلقه
استفاده از 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
شرط و مقدار پیشفرض
مثال شرط با مقدار پیشفرض.
جواب:
x = None if x is None: print("مقدار ندارد")
شرط و input
مثال استفاده از input و if.
جواب:
age = int(input("سن شما؟ ")) if age >= 18: print("بالغ")
شرط و نوع داده
بررسی نوع داده با if
جواب:
if isinstance(x, int): print("عدد صحیح است")
بررسی رشته
جواب:
if isinstance(name, str): print("رشته است")
مقایسه چند شرط با elif
مثال elif با سه حالت
جواب:
if x > 0: print("مثبت") elif x < 0: print("منفی") else: print("صفر")
elif با شرایط منطقی
جواب:
if x > 0 and x < 10: print("بین ۰ و ۱۰") elif x >= 10: print("۱۰ یا بیشتر")
شرط تو در تو
if تو در تو با else
جواب:
if x > 0: if x % 2 == 0: print("مثبت و زوج") else: print("مثبت و فرد")
تو در تو با elif
جواب:
if x >= 0: if x == 0: print("صفر") else: print("مثبت") else: print("منفی")
شرط با لیست و عضویت
بررسی وجود عنصر در لیست
جواب:
fruits = ["سیب", "پرتقال"] if "سیب" in fruits: print("وجود دارد")
بررسی نبود عنصر در لیست
جواب:
if "موز" not in fruits: print("موجود نیست")
شرط با رشته
بررسی شروع رشته
جواب:
name = "Ali" if name.startswith("A"): print("با A شروع میشود")
بررسی پایان رشته
جواب:
if name.endswith("i"): print("با i پایان مییابد")
بررسی وجود کاراکتر در رشته
جواب:
۱۰۰ سوال فصل If statements
مفاهیم پایه
شرط چیست؟
جواب: عبارتی که True یا False برمیگرداند.
if در پایتون چه کار میکند؟
جواب: اگر شرط True باشد، بلاک کد داخلش اجرا میشود.
else چیست؟
جواب: بلاک کدی که وقتی شرط if False باشد اجرا میشود.
elif چیست؟
جواب: برای بررسی شرطهای دیگر پس از if.
شرط ترکیبی چیست؟
جواب: شرطی که با and، or، not ترکیب شده است.
عملگرهای مقایسهای
== چیست؟
جواب: بررسی برابری دو مقدار.
!= چیست؟
جواب: بررسی نابرابری دو مقدار.
چیست؟
جواب: بررسی بزرگتر بودن.
< چیست؟
جواب: بررسی کوچکتر بودن.
= چیست؟
جواب: بررسی بزرگتر یا مساوی بودن.
<= چیست؟
جواب: بررسی کوچکتر یا مساوی بودن.
عملگرهای منطقی
and چیست؟
جواب: True اگر هر دو شرط True باشند.
or چیست؟
جواب: True اگر یکی از شرطها True باشد.
not چیست؟
جواب: معکوس نتیجه شرط.
ساختار if ساده
یک if ساده بنویسید.
جواب:
if x > 0: print("مثبت است")
if … else
if … else چه تفاوتی با if ساده دارد؟
جواب: else وقتی شرط False است اجرا میشود.
مثال if … else بنویسید.
جواب:
if x % 2 == 0: print("زوج") else: print("فرد")
if … elif … else
elif چه کاربردی دارد؟
جواب: برای بررسی چند شرط متوالی.
مثال if … elif … else بنویسید.
جواب:
if x > 0: print("مثبت") elif x < 0: print("منفی") else: print("صفر")
شرط در یک خط (ternary)
ternary operator چیست؟
جواب: شرط کوتاه در یک خط.
مثال ternary بنویسید.
جواب:
result = "مثبت" if x > 0 else "غیر مثبت"
تو در تویی if
if تو در تو چیست؟
جواب: قراردادن یک if داخل if دیگر.
مثال if تو در تویی.
جواب:
if x > 0: if x < 10: print("بین ۰ و ۱۰")
بررسی چند شرط با and
مثال استفاده از and.
جواب:
if x > 0 and x < 10: print("بین ۰ و ۱۰")
بررسی چند شرط با or
مثال استفاده از or.
جواب:
if x < 0 or x > 100: print("خارج از محدوده")
استفاده از not
مثال استفاده از not.
جواب:
if not x > 0: print("منفی یا صفر")
مقایسه رشتهها
بررسی رشته با if.
جواب:
if name == "Ali": print("سلام علی")
مقایسه رشته و عدد
مقایسه رشته و عدد؟
جواب: باید نوع دادهها یکسان باشند، در غیر این صورت خطا میدهد.
شرط چندگانه
مثال چند شرط با and و or.
جواب:
if x > 0 and (x < 5 or x > 10): print("شرط پیچیده")
شرط با لیست
بررسی عضو بودن در لیست.
جواب:
if item in my_list: print("وجود دارد")
شرط با not in
بررسی عضو نبودن در لیست.
جواب:
if item not in my_list: print("وجود ندارد")
تابع و if
استفاده از if داخل تابع.
جواب:
def check_num(x): if x > 0: return "مثبت" else: return "منفی یا صفر"
مقایسه boolean
اگر x True باشد، چگونه بررسی میکنیم؟
جواب:
if x: print("True است")
بررسی False
اگر x False باشد، چگونه بررسی میکنیم؟
جواب:
if not x: print("False است")
استفاده از is
is چیست؟
جواب: بررسی همهویتی دو شی (نه فقط برابری).
مثال استفاده از is.
جواب:
if a is b: print("a و b یکی هستند")
if و حلقه
استفاده از 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
شرط و مقدار پیشفرض
مثال شرط با مقدار پیشفرض.
جواب:
x = None if x is None: print("مقدار ندارد")
شرط و input
مثال استفاده از input و if.
جواب:
age = int(input("سن شما؟ ")) if age >= 18: print("بالغ")
شرط و نوع داده
بررسی نوع داده با if
جواب:
if isinstance(x, int): print("عدد صحیح است")
بررسی رشته
جواب:
if isinstance(name, str): print("رشته است")
مقایسه چند شرط با elif
مثال elif با سه حالت
جواب:
if x > 0: print("مثبت") elif x < 0: print("منفی") else: print("صفر")
elif با شرایط منطقی
جواب:
if x > 0 and x < 10: print("بین ۰ و ۱۰") elif x >= 10: print("۱۰ یا بیشتر")
شرط تو در تو
if تو در تو با else
جواب:
if x > 0: if x % 2 == 0: print("مثبت و زوج") else: print("مثبت و فرد")
تو در تو با elif
جواب:
if x >= 0: if x == 0: print("صفر") else: print("مثبت") else: print("منفی")
شرط با لیست و عضویت
بررسی وجود عنصر در لیست
جواب:
fruits = ["سیب", "پرتقال"] if "سیب" in fruits: print("وجود دارد")
بررسی نبود عنصر در لیست
جواب:
if "موز" not in fruits: print("موجود نیست")
شرط با رشته
بررسی شروع رشته
جواب:
name = "Ali" if name.startswith("A"): print("با A شروع میشود")
بررسی پایان رشته
جواب:
if name.endswith("i"): print("با i پایان مییابد")
بررسی وجود کاراکتر در رشته
جواب:
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)