آموزش برنامه‌نویسی پایتون و هوش مصنوعی
140 subscribers
358 photos
190 videos
41 files
172 links
🎯 یادگیری پایتون با رویکردی متفاوت
🚀 آموزش‌های کاملاً عملی و پروژه‌محور
💻 مسیر تبدیل شدن به یک برنامه‌نویس حرفه‌ای
🌟 فرقی نداره مبتدی هستی یا پیشرفته، از هر سطحی شروع کن و پایتون رو اصولی یاد بگیر
📩 ارتباط با ادمین: @YMahmoodian
09156519984
Download Telegram
۸۱–۹۰: Tuple و توابع کاربردی

81. چگونه تابع max روی Tuple اعمال کنیم؟



max(t)

82. چگونه تابع min روی Tuple اعمال کنیم؟



min(t)

83. چگونه تابع sum روی Tuple اعمال کنیم؟



sum(t)

84. چگونه تابع len روی Tuple اعمال کنیم؟



len(t)

85. چگونه بررسی کنیم Tuple خالی است؟



not t

86. چگونه بررسی کنیم Tuple شامل عدد مشخص است؟



5 in t

87. چگونه ایندکس اولین تکرار عنصر را پیدا کنیم؟



t.index(3)

88. چگونه تعداد تکرار یک عنصر را بدست آوریم؟



t.count(2)

89. چگونه Tuple تو در تو را بررسی کنیم که شامل Tuple دیگر است یا نه؟



any(isinstance(x, tuple) for x in t)

90. چگونه بررسی کنیم همه عناصر Tuple عددی هستند؟



all(isinstance(x,int) for x in t)


---

۹۱–۱۰۰: تمرین‌های پیشرفته و کاربردی

91. چگونه Tuple را بر اساس ایندکس عناصر sort کنیم؟



sorted(t) # فقط برای مقادیر عددی

92. چگونه Tuple را به لیست sort شده تبدیل کنیم؟



sorted(list(t))

93. چگونه بزرگ‌ترین دو عنصر Tuple را پیدا کنیم؟



sorted(t)[-2:]

94. چگونه کوچک‌ترین دو عنصر Tuple را پیدا کنیم؟



sorted(t)[:2]

95. چگونه Tuple تو در تو را flatten کنیم؟



t = (1,(2,3)); flat = (t[0], *t[1])

96. چگونه Tuple را به reverse List تبدیل کنیم؟



list(t)[::-1]

97. چگونه همه عناصر Tuple را در یک خط چاپ کنیم؟



print(*t)

98. چگونه Tuple شامل رشته‌ها را به یک رشته واحد تبدیل کنیم؟



t = ('h','e','l','l','o'); "".join(t)

99. چگونه همه عناصر Tuple عددی را ضرب کنیم؟



import math; math.prod(t)

100. چگونه Tuple را با استفاده از unpacking به چند متغیر اختصاص دهیم؟



a,b,c = (1,2,3)
فصل بعدی Dictionary (دایره‌المعارف یا فرهنگ‌نامه پایتون) است.
---

فصل Dictionary – ۱۰۰ سوال با جواب و توضیح


---

۱–۱۰: معرفی Dictionary

1. Dictionary چیست؟
مجموعه‌ای از زوج‌های کلید-مقدار که با {} تعریف می‌شود و ترتیب ندارد.


2. چگونه یک Dictionary بسازیم؟



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

3. چگونه یک Dictionary خالی بسازیم؟



d = {}

4. چگونه یک کلید جدید اضافه کنیم؟



d["city"] = "Tehran"

5. چگونه مقدار یک کلید را تغییر دهیم؟



d["age"] = 26

6. چگونه مقدار یک کلید را بخوانیم؟



d["name"]

7. چگونه مقدار یک کلید را با get بخوانیم؟



d.get("name")

8. چگونه بررسی کنیم یک کلید در Dictionary هست؟



"name" in d

9. چگونه بررسی کنیم یک کلید در Dictionary نیست؟



"salary" not in d

10. چگونه طول Dictionary را بدست آوریم؟



len(d)


---

۱۱–۲۰: دسترسی و حذف عناصر

11. چگونه همه کلیدهای Dictionary را بدست آوریم؟



d.keys()

12. چگونه همه مقادیر Dictionary را بدست آوریم؟



d.values()

13. چگونه همه کلید-مقدارها را بدست آوریم؟



d.items()

14. چگونه یک کلید را حذف کنیم؟



del d["age"]

15. چگونه یک کلید را با pop حذف و مقدار آن را دریافت کنیم؟



d.pop("name")

16. چگونه آخرین کلید-مقدار را حذف کنیم؟



d.popitem()

17. چگونه Dictionary را خالی کنیم؟



d.clear()

18. چگونه همه کلیدها را در یک لیست بریزیم؟



list(d.keys())

19. چگونه همه مقادیر را در یک لیست بریزیم؟



list(d.values())

20. چگونه همه کلید-مقدارها را در یک لیست از tuple بریزیم؟



list(d.items())


---

۲۱–۳۰: عملیات پایه‌ای با Dictionary

21. چگونه Dictionary را با update بروزرسانی کنیم؟



d.update({"age":30, "city":"Mashhad"})

22. چگونه دو Dictionary را ترکیب کنیم؟



d1 = {"a":1}; d2 = {"b":2}; d1.update(d2)

23. چگونه Dictionary را کپی کنیم؟



d_copy = d.copy()

24. چگونه بررسی کنیم Dictionary خالی است؟



not d

25. چگونه بررسی کنیم یک مقدار در Dictionary وجود دارد؟



25 in d.values()

26. چگونه همه کلیدها را با حلقه for پیمایش کنیم؟



for key in d:
print(key)

27. چگونه همه مقادیر را با حلقه for پیمایش کنیم؟



for value in d.values():
print(value)

28. چگونه همه کلید-مقدارها را با حلقه for پیمایش کنیم؟



for key, value in d.items():
print(key, value)

29. چگونه یک Dictionary تو در تو بسازیم؟



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

30. چگونه به مقدار داخل Dictionary تو در تو دسترسی پیدا کنیم؟



d["person"]["name"]


---

۳۱–۴۰: Dictionary و متدهای کاربردی

31. چگونه مقدار کلید را با setdefault دریافت یا اضافه کنیم؟



d.setdefault("country","Iran")

32. چگونه کلیدهای مشابه در Dictionary را بروزرسانی کنیم؟



d.update({"age":30})

33. چگونه Dictionary را با comprehension بسازیم؟



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

34. چگونه Dictionary را معکوس کنیم (کلید-مقدار جایگزین شود)؟



{v:k for k,v in d.items()}

35. چگونه بررسی کنیم همه مقادیر عددی هستند؟



all(isinstance(v,int) for v in d.values())

36. چگونه بررسی کنیم حداقل یک مقدار عددی است؟



any(isinstance(v,int) for v in d.values())

37. چگونه همه مقادیر را به رشته تبدیل کنیم؟



{k:str(v) for k,v in d.items()}

38. چگونه همه کلیدها را به حروف بزرگ تبدیل کنیم؟



{k.upper():v for k,v in d.items()}

39. چگونه یک Dictionary را sort کنیم؟



dict(sorted(d.items()))

40. چگونه Dictionary را بر اساس مقدار sort کنیم؟



dict(sorted(d.items(), key=lambda item: item[1]))


---

۴۱–۵۰: حلقه‌ها و شرط‌ها با Dictionary

41. چگونه کلیدهای با مقدار خاص را پیدا کنیم؟



[k for k,v in d.items() if v==25]

42. چگونه مقادیر بزرگ‌تر از عدد خاص را پیدا کنیم؟



[v for v in d.values() if v>10]

43. چگونه کلیدهایی که شامل حرف خاص هستند پیدا کنیم؟



[k for k in d.keys() if "a" in k]

44. چگونه همه مقادیر عددی را جمع کنیم؟



sum(v for v in d.values() if isinstance(v,int))

45. چگونه همه کلیدها را چاپ کنیم؟



for k in d:
print(k)

46. چگونه همه مقادیر را چاپ کنیم؟



for v in d.values():
print(v)

47. چگونه همه کلید-مقدارها را چاپ کنیم؟



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

48. چگونه بررسی کنیم Dictionary خالی است؟



if not d:
print("Empty")

49. چگونه بررسی کنیم یک کلید خاص وجود دارد؟



if "name" in d:
print("Exists")

50. چگونه بررسی کنیم یک مقدار خاص وجود دارد؟



if 25 in d.values():
print("Exists")


---
۵۱–۶۰: تغییر و حذف پیشرفته

51. چگونه یک کلید را فقط در صورت وجود حذف کنیم؟



d.pop("age", None)

52. چگونه یک کلید و مقدار را از Dictionary حذف کنیم و مقدار آن را دریافت کنیم؟



value = d.pop("name")

53. چگونه آخرین آیتم Dictionary را حذف کنیم؟



d.popitem()

54. چگونه همه آیتم‌ها را حذف کنیم؟



d.clear()

55. چگونه یک کلید جدید فقط در صورت عدم وجود اضافه کنیم؟



d.setdefault("city", "Tehran")

56. چگونه Dictionary را با متغیر دیگر ترکیب کنیم؟



d.update({"country":"Iran"})

57. چگونه Dictionary تو در تو بسازیم؟



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

58. چگونه به مقدار Dictionary تو در تو دسترسی پیدا کنیم؟



d["person"]["name"]

59. چگونه کلیدهای Dictionary را به لیست تبدیل کنیم؟



list(d.keys())

60. چگونه مقادیر Dictionary را به لیست تبدیل کنیم؟



list(d.values())


---

۶۱–۷۰: عملیات پیشرفته و محاسبات

61. چگونه Dictionary را معکوس کنیم (کلید و مقدار جا به جا شود)؟



{k:v for v,k in d.items()} # اشتباه، باید دقت شود: {v:k for k,v in d.items()}

62. چگونه بزرگترین مقدار Dictionary را پیدا کنیم؟



max(d.values())

63. چگونه کوچکترین مقدار Dictionary را پیدا کنیم؟



min(d.values())

64. چگونه تعداد آیتم‌های Dictionary را بدست آوریم؟



len(d)

65. چگونه بررسی کنیم همه مقادیر عددی هستند؟



all(isinstance(v,int) for v in d.values())

66. چگونه حداقل یک مقدار عددی بررسی کنیم؟



any(isinstance(v,int) for v in d.values())

67. چگونه مقادیر عددی Dictionary را جمع کنیم؟



sum(v for v in d.values() if isinstance(v,int))

68. چگونه مقادیر عددی Dictionary را ضرب کنیم؟



import math; math.prod(v for v in d.values() if isinstance(v,int))

69. چگونه Dictionary را بر اساس کلیدها مرتب کنیم؟



dict(sorted(d.items()))

70. چگونه Dictionary را بر اساس مقادیر مرتب کنیم؟



dict(sorted(d.items(), key=lambda item: item[1]))


---

۷۱–۸۰: پیمایش و comprehension

71. چگونه کلیدها را با حلقه for چاپ کنیم؟



for k in d:
print(k)

72. چگونه مقادیر را با حلقه for چاپ کنیم؟



for v in d.values():
print(v)

73. چگونه کلید-مقدارها را با حلقه for چاپ کنیم؟



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

74. چگونه کلیدهای با مقدار خاص را پیدا کنیم؟



[k for k,v in d.items() if v==25]

75. چگونه مقادیر بزرگتر از عدد خاص را پیدا کنیم؟



[v for v in d.values() if v>10]

76. چگونه کلیدهایی که شامل حرف خاص هستند پیدا کنیم؟



[k for k in d.keys() if "a" in k]

77. چگونه همه مقادیر عددی را جمع کنیم؟



sum(v for v in d.values() if isinstance(v,int))

78. چگونه همه کلیدها را چاپ کنیم؟



for k in d:
print(k)

79. چگونه همه مقادیر را چاپ کنیم؟



for v in d.values():
print(v)

80. چگونه همه کلید-مقدارها را چاپ کنیم؟



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


---

۸۱–۹۰: روش‌های کاربردی و ترکیبی

81. چگونه Dictionary را با comprehension بسازیم؟



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

82. چگونه Dictionary را فیلتر کنیم (مقادیر بزرگتر از 10)



{k:v for k,v in d.items() if v>10}

83. چگونه همه مقادیر را به رشته تبدیل کنیم؟



{k:str(v) for k,v in d.items()}

84. چگونه همه کلیدها را به حروف بزرگ تبدیل کنیم؟



{k.upper():v for k,v in d.items()}

85. چگونه بررسی کنیم Dictionary خالی است؟



not d

86. چگونه بررسی کنیم یک کلید وجود دارد؟



"name" in d

87. چگونه بررسی کنیم یک مقدار وجود دارد؟



25 in d.values()

88. چگونه یک Dictionary تو در تو بسازیم؟



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

89. چگونه به مقدار Dictionary تو در تو دسترسی پیدا کنیم؟



d["person"]["name"]

90. چگونه Dictionary را با update بروزرسانی کنیم؟



d.update({"age":30})


---

۹۱–۱۰۰: تمرین‌های نهایی و پیشرفته

91. چگونه دو Dictionary را با هم ادغام کنیم؟



d1 = {"a":1}; d2 = {"b":2}; d3 = {d1, d2}

92. چگونه کلیدهای Dictionary را در یک رشته جداگانه چاپ کنیم؟



print(", ".join(d.keys()))

93. چگونه مقادیر Dictionary را به لیست جداگانه تبدیل کنیم؟



list(d.values())

94. چگونه Dictionary را معکوس کنیم و کلید-مقدار را جا به جا کنیم؟



{k:v for v,k in d.items()} # باید درست: {v:k for k,v in d.items()}

95. چگونه بررسی کنیم همه مقادیر عددی هستند؟



all(isinstance(v,int) for v in d.values())

96. چگونه حداقل یک مقدار عددی وجود دارد؟



any(isinstance(v,int) for v in d.values())

97. چگونه Dictionary را با comprehension مقداردهی شرطی کنیم؟
{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()}


---
فصل بعدی شرط‌ها و تصمیم‌گیری‌ها (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 "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 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 به طور کامل پوشش داده شد.
۱۰۰ سوال فصل حلقه‌ها (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
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


---
---

بخش ۳: 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)
سوال ۷۳ – حلقه 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


---
بخش ۳: پیشرفته‌تر روی توابع (سوال 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


---
بخش ۴: پیشرفته – ترکیب مفاهیم و سناریوهای پیچیده (سوال 61–80)
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
فصل مدیریت فایل‌ها


---

فصل مدیریت فایل‌ها – ۱۰۰ سؤال


---

بخش ۱: ساده (سوال 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. ادغام چند فایل متنی
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")
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 و چاپ مقدار خاص
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!")