🔴 نکات حرفهای برای کار با فهرستها
🔸 بهینهسازی حافظه: برای فهرستهای خیلی بزرگ، از ژنراتورها یا numpy به جای فهرست استفاده کن.
🔹 خوانایی: اسمهای معنیدار برای فهرستها انتخاب کن (مثل scores به جای x).
🔸 تکرارها: اگه یه عنصر چندین بار تو فهرست هست و فقط یکی رو میخوای، از set استفاده کن:
unique_fruits = list(set(["sib", "moz", "sib"])) # ["sib", "moz"]
🔹 بررسی نوع دادهها: تو فهرستهای مخلوط، نوع داده رو با isinstance چک کن:
mixed = [1, "sib", 3.14]
for item in mixed:
if isinstance(item, str):
print(f"String: {item}")
💯 @PythonForYou 🧑💻👩💻
📢 مقایسه کامل متدهای حذف در فهرستها (remove, pop, clear, del) 🐍
تو این پست قراره چهار ابزار قدرتمند برای حذف عناصر از فهرستها در پایتون رو زیر ذرهبین ببریم:
remove(), pop(), clear()، و del. 😎
میخوایم کاربردهاشون، تفاوتهاشون، و نکات ریز حرفهای رو با مثالهای کاربردی بررسی کنیم. آمادهاید؟ بریم شروع کنیم! 🚀
⬟〰️⬟〰️⬟〰️⬟〰️⬟
1️⃣ متد ()remove: حذف اولین نمونه از یه مقدار
♦️ کاربرد: وقتی میخوای یه مقدار خاص (نه ایندکس) رو از فهرست حذف کنی، ()remove اولین نمونه از اون مقدار رو پیدا و حذف میکنه.
📝 سینتکس:
my_list.remove(value) # Hazf avalin namone az value
✨ مثال:
fruits = ["sib", "moz", "sib", "portoghal"]
fruits.remove("sib") # Hazf avalin "sib"
print(fruits) # Khoroji: ["moz", "sib", "portoghal"]
💡 نکات ریز:
- اگه مقدار تو فهرست نباشه، ارور ValueError میگیره. برای جلوگیری:
if "anar" in fruits:
fruits.remove("anar")
else:
print("Anar nist! 🚫")
- فقط اولین نمونه رو حذف میکنه. اگه بخوای همه نمونهها رو حذف کنی، باید حلقه بزنی:
while "sib" in fruits:
fruits.remove("sib")
- برای فهرستهای بزرگ، ()remove ممکنه کند باشه چون باید کل فهرست رو اسکن کنه.
- فقط با مقدار کار میکنه، نه ایندکس.
⬟〰️⬟〰️⬟〰️⬟〰️⬟
2️⃣ متد ()pop: حذف و برگردوندن عنصر با ایندکس
♦️ کاربرد: یه عنصر رو با ایندکسش حذف میکنه و مقدار حذفشده رو برمیگردونه. اگه ایندکس ندی، آخرین عنصر رو حذف میکنه.
📝 سینتکس:
my_list.pop(index) # Hazf onsor ba index (pishfarz: akharin onsor)
✨ مثال:
fruits = ["sib", "moz", "portoghal"]
last_fruit = fruits.pop() # Hazf akharin onsor
print(last_fruit) # Khoroji: portoghal
print(fruits) # Khoroji: ["sib", "moz"]
# Ya ba index
second_fruit = fruits.pop(1) # Hazf "moz"
print(second_fruit) # Khoroji: moz
print(fruits) # Khoroji: ["sib"]
💡 نکات ریز:
- اگه ایندکس اشتباه بدی (مثلاً pop(10) تو فهرست 3 تایی)، ارور IndexError میگیره.
- چون مقدار حذفشده رو برمیگردونه، برای کارهایی مثل پشته (stack) عالیه:
stack = [1, 2, 3]
top = stack.pop() # 3 ro migire va hazf mikone
- اگه فهرست خالی باشه و pop() بزنی، IndexError میگیره.
- سریعتر از remove() برای حذف با ایندکس، چون مستقیم به ایندکس دسترسی داره.
⬟〰️⬟〰️⬟〰️⬟〰️⬟
3️⃣ متد ()clear: خالی کردن کل فهرست
♦️ کاربرد: همه عناصر فهرست رو حذف میکنه، ولی خود متغیر فهرست میمونه (خالی).
📝 سینتکس:
my_list.clear() # Hazf hame onsorha
✨ مثال:
fruits = ["sib", "moz", "portoghal"]
fruits.clear()
print(fruits) # Khoroji: []
💡 نکات ریز:
- برعکس del my_list، متغیر فهرست همچنان وجود داره، فقط خالیه.
- برای وقتی مناسبه که میخوای فهرست رو نگه داری و بعداً دوباره پر کنی.
- خیلی سریع و بهینهست، چون نیازی به بررسی ایندکس یا مقدار نداره.
- هیچ مقداری برنمیگردونه.
⬟〰️⬟〰️⬟〰️⬟〰️⬟
4️⃣ دستور del: حذف انعطافپذیر
♦️ کاربرد: یه دستور کلی پایتونه که میتونه یه عنصر، یه بازه (slice)، یا کل فهرست رو حذف کنه.
📝 سینتکس:
del my_list[index] # Hazf yek onsor
del my_list[start:end] # Hazf yek baze
del my_list # Hazf tamame list
✨ مثال:
fruits = ["sib", "moz", "portoghal", "anar"]
del fruits[1] # Hazf "moz"
print(fruits) # Khoroji: ["sib", "portoghal", "anar"]
del fruits[0:2] # Hazf az index 0 ta 1
print(fruits) # Khoroji: ["anar"]
del fruits # Hazf kole list
# print(fruits) # Error: 'fruits' is not defined
💡 نکات ریز:
- اگه ایندکس یا برش اشتباه بدی، ارور IndexError میگیره.
- برعکس ()pop، مقدار حذفشده رو برنمیگردونه.
- میتونه روی اشیاء دیگه (مثل دیکشنری یا متغیر) هم کار کنه:
my_dict = {"name": "ali"}
del my_dict["name"]
- برای حذف کل فهرست، حافظه رو کامل آزاد میکنه (برعکس ()clear که فقط خالی میکنه).
- تو حلقهها با احتیاط استفاده کن، چون حذف با del ممکنه ایندکسها رو بههم بریزه:
numbers = [1, 2, 3, 4]
for i in range(len(numbers)):
del numbers[i] # Bad idea! IndexError
💯 @PythonForYou 🧑💻👩💻
👇 ادامه در پست بعد 👇
📌 مثال ترکیبی:
fruits = ["sib", "moz", "sib", "portoghal"]
fruits.remove("sib") # Hazf avalin "sib" -> ["moz", "sib", "portoghal"]
last = fruits.pop() # Hazf va bargardandane "portoghal" -> ["moz", "sib"]
del fruits[0] # Hazf "moz" -> ["sib"]
fruits.clear() # Khali kardane list -> []
print(fruits) # Khoroji: []
⬟〰️⬟〰️⬟〰️⬟〰️⬟
🟠 نکات حرفهای و ریز برای کار با این متدها
1️⃣ انتخاب ابزار مناسب:
- اگه مقدار خاصی داری (مثل "sib")، از ()remove استفاده کن.
- اگه به ایندکس دسترسی داری یا میخوای مقدار حذفشده رو داشته باشی، از ()pop استفاده کن.
- اگه فقط میخوای فهرست رو خالی کنی، ()clear بهترینه.
- اگه میخوای انعطافپذیر باشی (حذف یه عنصر، برش، یا کل فهرست)، del عالیه.
—-—-—-—-—-—-—-—-—-—-—
2️⃣ مدیریت ارورها با try-except:
برای remove() و del همیشه احتمال ارور رو در نظر بگیر:
fruits = ["sib", "moz"]
try:
fruits.remove("anar")
except ValueError:
print("Anar nist! 🚫")
try:
del fruits[10]
except IndexError:
print("Indeks na-mojood! 🚫")
—-—-—-—-—-—-—-—-—-—-—
3️⃣ حذف چندگانه با شرط:
- اگه میخوای چندتا عنصر رو بر اساس شرط حذف کنی، به جای حلقه با remove() یا del، از List Comprehension استفاده کن که ایمنتره:
numbers = [1, 2, 3, 4, 5]
numbers = [x for x in numbers if x % 2 != 0] # Hazf zojha
print(numbers) # Khoroji: [1, 3, 5]
—-—-—-—-—-—-—-—-—-—-—
4️⃣ عملکرد در فهرستهای بزرگ:
🔸 remove(): برای فهرستهای بزرگ کندتره، چون باید کل فهرست رو اسکن کنه.
🔸 pop(): برای حذف از آخر فهرست خیلی سریعه (O(1))، ولی برای ایندکسهای وسط کندتره (O(n)).
🔸 clear(): سریعترین برای خالی کردن فهرست.
🔸 del: برای حذف برشها یا کل فهرست بهینهست، ولی برای حذف تکی ممکنه از pop() کندتر باشه.
—-—-—-—-—-—-—-—-—-—-—
5️⃣ حذف در فهرستهای تودرتو:
برای فهرستهای تودرتو، del و pop() بهترن چون میتونی مستقیم به ایندکس دسترسی داشته باشی:
matrix = [[1, 2, 3], [4, 5, 6]]
del matrix[0][1] # Hazf 2
print(matrix) # Khoroji: [[1, 3], [4, 5, 6]]
—-—-—-—-—-—-—-—-—-—-—
6️⃣ تفاوت حافظه:
🔸clear() فهرست رو خالی میکنه ولی متغیر میمونه.
🔸 del my_list کل متغیر رو از حافظه پاک میکنه، که برای آزادسازی حافظه تو برنامههای سنگین بهتره.
big_list = [0] * 1000000
del big_list # Hافظه ro kamel azad mikone
—-—-—-—-—-—-—-—-—-—-—
7️⃣ حذف ایمن در حلقه:
حذف با remove() یا del تو حلقه روی فهرست ممکنه ایندکسها رو بههم بریزه:
fruits = ["sib", "moz", "sib"]
for f in fruits: # Bad idea!
fruits.remove(f) # IndexError ya natije ghalat
✅ راه درست: از حلقه معکوس یا List Comprehension استفاده کن:
fruits = ["sib", "moz", "sib"]
fruits = [f for f in fruits if f != "sib"]
print(fruits) # Khoroji: ["moz"]
💯 @PythonForYou 🧑💻👩💻
👇 ادامه در پست بعد 👇
✅ مثالهای کاربردی ترکیبی
💠 مدیریت سبد خرید:
cart = ["sib", "moz", "sib", "portoghal"]
cart.remove("sib") # Hazf avalin sib
item = cart.pop(0) # Hazf va gereftane moz
print(f"Item hazf shode: {item}")
del cart[0:1] # Hazf yek onsor dige
print(cart) # Khoroji: ["portoghal"]
cart.clear() # Khali kardane sabad
print(cart) # Khoroji: []
—-—-—-—-—-—-—-—-—-—-—
💠 فیلتر کردن دادههای نامعتبر:
data = ["ali", "", "zahra", "", "babak"]
try:
while "" in data:
data.remove("") # Hazf khaliha
except ValueError:
pass
print(data) # Khoroji: ["ali", "zahra", "babak"]
—-—-—-—-—-—-—-—-—-—-—
💠 مدیریت موجودی انبار:
stock = ["sib", "moz", "portoghal", "anar"]
if stock:
item = stock.pop() # Hazf akharin item
print(f"Item bargiri shod: {item}")
del stock[0:2] # Hazf do item aval
print(stock) # Khoroji: ["anar"]
💯 @PythonForYou 🧑💻👩💻
📢 تسلط بر فهرستها (بدون متدهای حذف و اضافه) 🐍
تو این پست قراره عمیقتر به فهرستها (Lists) در پایتون نگاه کنیم و روی تکنیکها و متدهایی تمرکز کنیم که فراتر از اضافه و حذف عنصرن. 😎
از چرخش فهرست و حلقهها گرفته تا برشها، آمار ساده، و نکات تورفتگی، همهچیز اینجاست! 🚀
بریم شروع کنیم!
💯 @PythonForYou 🧑💻👩💻
✨ اینجا روی متدهایی تمرکز میکنیم که برای مدیریت، مرتبسازی، و تحلیل فهرستها استفاده میشن.
🔰 index(value): ایندکس اولین نمونه از یه مقدار رو برمیگردونه.
fruits = ["sib", "moz", "portoghal", "sib"]
print(fruits.index("sib")) # Khoroji: 0
—-—-—-—-—-—-—-—-—-—-—
🔰 count(value): تعداد دفعات یه مقدار تو فهرست رو برمیگردونه.
print(fruits.count("sib")) # Khoroji: 2
—-—-—-—-—-—-—-—-—-—-—
🔰 sort(key=None, reverse=False): فهرست رو بهصورت درجا مرتب میکنه.
numbers = [3, 1, 4, 2]
numbers.sort()
print(numbers) # Khoroji: [1, 2, 3, 4]
numbers.sort(reverse=True)
print(numbers) # Khoroji: [4, 3, 2, 1]
—-—-—-—-—-—-—-—-—-—-—
🔰 reverse(): ترتیب فهرست رو معکوس میکنه (درجا).
numbers = [1, 2, 3, 4]
numbers.reverse()
print(numbers) # Khoroji: [4, 3, 2, 1]
—-—-—-—-—-—-—-—-—-—-—
🔰 copy(): یه کپی سطحی از فهرست میسازه.
fruits = ["sib", "moz"]
fruits_copy = fruits.copy()
fruits_copy[0] = "portoghal"
print(fruits) # Khoroji: ["sib", "moz"]
print(fruits_copy) # Khoroji: ["portoghal", "moz"]
💯 @PythonForYou 🧑💻👩💻
⭐️ تکنیکهای پیشرفته و نکات ریز
1️⃣ چرخش درون کل یک فهرست
🔸 چرخش درجا یعنی جابهجایی عناصر بدون ساخت فهرست جدید.
✨ مثال چرخش کامل:
numbers = [1, 2, 3, 4]
numbers.reverse()
print(numbers) # Khoroji: [4, 3, 2, 1]
✨ مثال چرخش به تعداد خاص (2 خانه به چپ):
numbers = [1, 2, 3, 4]
k = 2
numbers[:] = numbers[k:] + numbers[:k]
print(numbers) # Khoroji: [3, 4, 1, 2]
—-—-—-—-—-—-—-—-—-—-—
2️⃣ نگاهی دقیقتر به حلقهی for
حلقههای for برای پیمایش فهرستها عالیان.
🔹 پیمایش مستقیم:
fruits = ["sib", "moz", "portoghal"]
for fruit in fruits:
print(f"Mive: {fruit}")
# Khoroji:
# Mive: sib
# Mive: moz
# Mive: portoghal
🔹 با ایندکس و enumerate:
for i, fruit in enumerate(fruits):
print(f"Index {i}: {fruit}")
—-—-—-—-—-—-—-—-—-—-—
3️⃣ انجام کارهای بیشتر بر روی فهرستها
با حلقهها میتونی کارهای پیچیدهتری مثل فیلتر کردن یا تبدیل انجام بدی.
✨ مثال فیلتر کردن:
numbers = [1, 2, 3, 4]
evens = [num for num in numbers if num % 2 == 0]
print(evens) # Khoroji: [2, 4]
—-—-—-—-—-—-—-—-—-—-—
4️⃣ انجام کارهایی پس از حلقهی for
بعد از حلقه، میتونی نتایج رو جمعبندی کنی.
✨ مثال جمع و میانگین:
numbers = [1, 2, 3, 4]
total = sum(numbers)
print(f"Jame: {total}, Miyangin: {total / len(numbers)}")
# Khoroji: Jame: 10, Miyangin: 2.5
—-—-—-—-—-—-—-—-—-—-—
5️⃣ پیشگیری از خطاهای تورفتگی
🔸 تورفتگی فراموششده:
numbers = [1, 2, 3]
for num in numbers:
print(num) # IndentationError
✨ درست:
for num in numbers:
print(num)
🔸 فراموشی تورفتگی خطوط اضافی:
for num in numbers:
print(num)
print("Payan") # Bayad kharej az halghe bashe
🔸 تورفتگی غیرضروری:
numbers = [1, 2, 3]
print(numbers) # IndentationError
🔸 تورفتگی غیرضروری پس از حلقه:
for num in numbers:
print(num)
print("Ghalat!") # In to halghe-st
🔸 فراموشی دو نقطه (:):
for num in numbers # SyntaxError
print(num)
—-—-—-—-—-—-—-—-—-—-—
6️⃣ ساخت فهرستهای عددی
🔹 استفاده از range():
numbers = list(range(1, 6)) # [1, 2, 3, 4, 5]
print(numbers)
🔹 ساخت فهرست با ()range:
even_numbers = list(range(2, 11, 2)) # [2, 4, 6, 8, 10]
print(even_numbers)
🔹 آمار ساده با فهرست اعداد:
numbers = [3, 1, 4, 2]
print(f"Koochik: {min(numbers)}") # Khoroji: Koochik: 1
print(f"Bozorg: {max(numbers)}") # Khoroji: Bozorg: 4
print(f"Jame: {sum(numbers)}") # Khoroji: Jame: 10
print(f"Miyangin: {sum(numbers) / len(numbers)}") # Khoroji: Miyangin: 2.5
🔹 خلاصه فهرست:
cubes = [x**3 for x in range(1, 5)] # [1, 8, 27, 64]
print(cubes)
—-—-—-—-—-—-—-—-—-—-—
7️⃣ کار با بخشی از فهرست (برشها)
🔸 برش زدن:
numbers = [1, 2, 3, 4, 5]
print(numbers[1:4]) # Khoroji: [2, 3, 4]
print(numbers[::2]) # Khoroji: [1, 3, 5]
print(numbers[::-1]) # Khoroji: [5, 4, 3, 2, 1]
🔸 حرکت درون برش:
slice = numbers[1:4]
for num in slice:
print(num) # 2, 3, 4
numbers[1:4] = [20, 30, 40]
print(numbers) # Khoroji: [1, 20, 30, 40, 5]
🔸 نسخهبرداری:
fruits = ["sib", "moz"]
fruits_copy = fruits[:]
fruits_copy[0] = "portoghal"
print(fruits) # Khoroji: ["sib", "moz"]
print(fruits_copy) # Khoroji: ["portoghal", "moz"]
💯 @PythonForYou 🧑💻👩💻
📢 تسلط بر StopIteration 🐍
در اینجا قراره خطای StopIteration تو پایتون رو حسابی باز کنیم! 😎
این خطا وقتی با ایتراتورها یا ژنراتورها کار میکنی پیش میاد و فهمش برای مدیریت حلقهها و دادههای بزرگ خیلی کلیدیه. از پایه تا ترفندهای حرفهای، همهچیز اینجاست! 🚀
بریم شروع کنیم!
این StopIteration چیه؟ 🤔
در واقع StopIteration یه خطای داخلی (exception) تو پایتونه که وقتی یه ایتراتور یا ژنراتور به انتهای مقادیرش میرسه، پرتاب (raise) میشه. این خطا به پایتون میگه دیگه مقداری برای پیمایش وجود نداره. معمولاً تو کار با ژنراتورها یا متد ()next باهاش روبهرو میشی.
📌 چرا اتفاق میافته؟
وقتی سعی کنی از یه ایتراتور یا ژنراتور مقداری بگیری و چیزی باقی نمونده باشه، StopIteration پرتاب میشه.
💯 @PythonForYou 🧑💻👩💻
💠 ژنراتورها و مدیریت StopIteration
ژنراتورها ابزارهایی قدرتمند در پایتون برای تولید مقادیر بهصورت تنبل (lazy) هستند. وقتی مقادیرشان تمام شود، خطای StopIteration پرتاب میکنند. در ادامه کاربردها و ترفندهای کار با ژنراتورها را بررسی میکنیم.
1️⃣ ژنراتورها (Generator Expressions)
ژنراتورها با عبارات مولد (مانند (x for x in range(3))) ساخته میشوند و با تابع next() مقادیر را یکییکی تولید میکنند.
✨مثال:
gen = (x for x in range(3))
print(next(gen)) # Khoroji: 0
print(next(gen)) # Khoroji: 1
print(next(gen)) # Khoroji: 2
print(next(gen)) # Khata: StopIteration
2️⃣ توابع ژنراتور با yield
توابعی که از yield استفاده میکنند، ژنراتور هستند و هنگام اتمام مقادیر، StopIteration پرتاب میکنند.
✨ مثال:
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
print(next(gen)) # Khoroji: 1
print(next(gen)) # Khoroji: 2
print(next(gen)) # Khoroji: 3
print(next(gen)) # Khata: StopIteration
3️⃣ حلقههای for
حلقههای for بهطور خودکار StopIteration را مدیریت میکنند، بنابراین خطایی نمیبینید.
✨ مثال:
for num in range(3):
print(num) # Khoroji: 0, 1, 2
💯 @PythonForYou 🧑💻👩💻
🎯 نکات و ترفندها
🔸 مدیریت خطا با try-except: برای جلوگیری از کرش برنامه، از try-except استفاده کنید:
gen = (x for x in range(2))
try:
print(next(gen)) # Khoroji: 0
print(next(gen)) # Khoroji: 1
print(next(gen)) # Khata: StopIteration
except StopIteration:
print("Generator Tamam Shod! 🚫")
🔸 مقدار پیشفرض در ()next: با تعیین مقدار پیشفرض، از خطای StopIteration جلوگیری کنید:
gen = (x for x in range(2))
print(next(gen, "Tamam Shod")) # Khoroji: 0
print(next(gen, "Tamam Shod")) # Khoroji: 1
print(next(gen, "Tamam Shod")) # Khoroji: Tamam Shod
🔸 یکبارمصرف بودن ژنراتورها: ژنراتورها فقط یکبار قابل پیمایشاند:
gen = (x for x in range(3))
print(list(gen)) # Khoroji: [0, 1, 2]
print(list(gen)) # Khoroji: []
🔸 ترکیب با itertools: ماژول itertools ابزارهای مفیدی برای مدیریت ژنراتورها ارائه میدهد:
from itertools import islice
gen = (x**2 for x in range(10))
print(list(islice(gen, 5))) # Khoroji: [0, 1, 4, 9, 16]
🔸 تشخیص پایان ژنراتور: برای بررسی پایان ژنراتور بدون خطا:
gen = (x for x in range(2))
while True:
value = next(gen, None)
if value is None:
print("Tamam Shod!")
break
print(value) # Khoroji: 0, 1, Tamam Shod!
💯 @PythonForYou 🧑💻👩💻
🛠 مثالهای کاربردی
🔸 فیلتر کردن اعداد زوج:
def evens():
for num in range(10):
if num % 2 == 0:
yield num
gen = evens()
try:
while True:
print(next(gen))
except StopIteration:
print("اعداد زوج تمام شدند!") # خروجی: 0, 2, 4, 6, 8, اعداد زوج تمام شدند!
🔸 خواندن فایل خطبهخط:
def read_lines(filename):
with open(filename, "r") as file:
for line in file:
yield line.strip()
gen = read_lines("sample.txt")
try:
while True:
print(next(gen))
except StopIteration:
print("فایل تمام شد!")
🔸 جستجوی اولین عدد زوج:
def find_first_even(numbers):
for num in numbers:
if num % 2 == 0:
yield num
break
gen = find_first_even([1, 3, 4, 5, 6])
print(next(gen, "هیچ زوج نبود!")) # خروجی: 4
💡 نکات حرفهای
- همیشه StopIteration را مدیریت کنید، مگر اینکه از حلقه for استفاده کنید.
- برای کارهای پیچیده، از ماژول itertools (مانند cycle یا islice) استفاده کنید.
- هنگام دیباگ، مطمئن شوید دادههای ورودی ژنراتور درست هستند.
💯 @PythonForYou 🧑💻👩💻
۷ کاربرد خفن حلقهی while تو پایتون 🐍
حلقهی while تو پایتون مثل یه رفیق باحاله که تا وقتی بهش نگی "تموم کن"، کارشو ادامه میده! 😍
آمادهاید؟ بزن بریم! 🚗
—-—-—-—-—-—-—-—-—-—-—
۱. شمردن اعداد مثل حرفهایها! 🔢
با حلقهی while میتونی یه سری عدد رو بشمری و نشون بدی. مثلاً از ۱ تا ۵:
current_number = 1
while current_number <= 5:
print(current_number)
current_number += 1
✨ چطور کار میکنه؟
- از عدد ۱ شروع میکنیم.
- تا وقتی current_number از ۵ بزرگتر نشده، عدد رو چاپ میکنه و یه واحد بهش اضافه میکنه.
- خروجی: 1 2 3 4 5
مثل یه ماشین حساب باحال که خودش میشمره! 😎
—-—-—-—-—-—-—-—-—-—-—
۲. بذار کاربر بگه کی تموم شه! 🛑
میتونی برنامهای بنویسی که تا وقتی کاربر نخواد، ادامه بده. مثلاً یه برنامه که هر چی کاربر مینویسه، تکرار میکنه تا وقتی بگه "quit":
prompt = "\nYe chizi bego, manam tekrar mikonam!"
prompt += "\nAge khasti tamum she, benevis 'quit': "
message = ""
while message != 'quit':
message = input(prompt)
if message != 'quit':
print(message)
✨ چطور کار میکنه؟
- برنامه از کاربر میپرسه چی بنویسه.
- تا وقتی کاربر quit ننویسه، هر چی بگه رو تکرار میکنه.
- خروجی: مثلاً اگه بنویسی "سلام"، میگه "سلام". اگه بنویسی "quit"، تموم!
- این برای چتبات یا بازیهای تعاملی عالیه! 🎮
—-—-—-—-—-—-—-—-—-—-—
۳. استفاده از پرچم (flag) برای کنترل برنامه 🚩
برای برنامههای پیچیده که چند تا شرط میتونن تمومش کنن، از یه flag استفاده میکنیم. مثلاً:
prompt = "\nYe chizi bego, manam tekrar mikonam!"
prompt += "\nAge khasti tamum she, benevis 'quit': "
active = True
while active:
message = input(prompt)
if message == 'quit':
active = False
else:
print(message)
✨ چطور کار میکنه؟
- یه متغیر active تعریف میکنیم که True هست.
- تا وقتی active برابر True باشه، برنامه ادامه میده.
- اگه کاربر quit بنویسه، active میشه False و برنامه تموم.
- این روش برای بازیهایی که چند تا اتفاق میتونن بازیشو تموم کنن خیلی خوبه! 🎯
—-—-—-—-—-—-—-—-—-—-—
۴. با break یهو از حلقه بپر بیرون! 🚪
اگه بخوای فوری از حلقه خارج شی، از break استفاده کن. مثلاً برنامهای که از کاربر اسم شهرایی که رفته رو میپرسه:
prompt = "\nEsm ye shahr ke didi ro bego:"
prompt += "\n(Vaghti tamum kardi, benevis 'quit'): "
while True:
city = input(prompt)
if city == 'quit':
break
else:
print(f"Are! Manam doost daram be {city.title()} beram!") # Jomle khoshgel ba esm shahr
✨ چطور کار میکنه؟
- حلقه با while True تا همیشه میره، مگر اینکه break بزنه!
- اگه کاربر quit بنویسه، برنامه تموم میشه.
- وگرنه اسم شهر رو با یه جملهی باحال چاپ میکنه.
- خروجی: مثلاً tehran -> "Are! Manam doost daram be Tehran beram!"
—-—-—-—-—-—-—-—-—-—-—
۵. با continue برگرد اول حلقه! 🔄
با continue میتونی بگی کدوم کدها اجرا نشن و برگردی اول حلقه. مثلاً فقط اعداد فرد رو چاپ کن:
current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number) # Faghat adad haye fard ro chap mikone
✨ چطور کار میکنه؟
از ۰ شروع میکنه.
هر بار یه واحد به عدد اضافه میکنه.
اگه عدد زوج باشه (بخشپذیر به ۲)، با continue برمیگرده اول حلقه.
فقط اعداد فرد چاپ میشن: 1 3 5 7 9
—-—-—-—-—-—-—-—-—-—-—
۶. مراقب حلقههای بینهایت باش! ⚠️
حلقههای while اگه درست تنظیم نشن، ممکنه تا ابد ادامه بدن! 😱 مثلاً:
x = 1
while x <= 5:
print(x)
# x += 1 # Age ino faramoosh koni, halghe ta abad edame dare!
✨ چطور کار میکنه؟
- اگه یادت بره x رو زیاد کنی، x همیشه ۱ میمونه و حلقه تا ابد 1 چاپ میکنه!
- برای جلوگیری، همیشه مطمئن شو که حلقه یه راه خروج داره (مثل break یا تغییر متغیر).
📌 نکته: اگه برنامهت تو حلقه گیر کرد، Ctrl+C بزن تا بندازی! 😉
—-—-—-—-—-—-—-—-—-—-—
۷. حلقههاتو تست کن! 🧪
همیشه حلقههاتو چک کن که درست تموم شن:
- اگه برنامه باید با وارد کردن یه مقدار خاص (مثل quit) تموم شه، تستش کن.
- مطمئن شو که شرط حلقه میتونه False بشه یا break درست کار کنه.
- این کار باعث میشه برنامهت مثل ساعت کار کنه! ⏰
💯 @PythonForYou 🧑💻👩💻