
در برنامهنویسی همیشه نیاز داریم بعضی دستورات چندین بار تکرار شوند. به جای اینکه این دستورات را چند بار کپی-پیست کنیم، از ابزارهای حرفهای به نام حلقهها (Loops) استفاده میکنیم.
حلقه یعنی اجرای یک قطعه کد تا زمانی که شرط مشخصی برقرار باشد یا به تعداد دفعات تعیینشده.
پایتون دو نوع حلقه اصلی دارد:
حلقه while
زمانی استفاده میشود که نمیدانیم چند بار باید تکرار کنیم.
اجرای حلقه تا وقتی ادامه دارد که شرط برقرار باشد.
مثال: گرفتن ورودی از کاربر تا وقتی که عدد صفر وارد کند.
حلقه for
زمانی استفاده میشود که تعداد تکرار مشخص باشد.
مثال: چاپ اعداد ۱ تا ۱۰ یا پیمایش یک لیست.
whileالگوی کلی:
while شرط: دستورات موردنظر
✅ رفتار:
اگر شرط True باشد → دستورات داخل حلقه اجرا میشوند.
اگر شرط False شود → اجرای حلقه متوقف شده و برنامه به دستور بعد از حلقه میرود.
📌 مثال ساده:
answer = "yes" while answer == "yes": print("Loop is running...") answer = input("Do you want to continue? (yes/no): ")
while با شرطما میتوانیم با تغییر شرط، رفتار حلقه را کنترل کنیم.
sum_numbers = 0 data = int(input("Enter a number (-1 to exit): ")) while data != -1: sum_numbers += data data = int(input("Enter a number (-1 to exit): ")) print("The total sum is:", sum_numbers)
while True و breakگاهی نمیدانیم شرط اولیه چیست. در این حالت میتوانیم از یک حلقه بینهایت استفاده کنیم و با دستور break آن را متوقف کنیم.
total = 0 while True: num = int(input("Enter a number (-1 to stop): ")) if num == -1: break total += num print("Sum of numbers:", total)
مسئله: از کاربر اعداد زوج دریافت کنید. برنامه تا زمانی ادامه پیدا کند که کاربر عدد 0 وارد کند. در پایان، جمع کل اعداد زوج چاپ شود.
💡 راهنمایی: باید بررسی کنید که عدد زوج است (num % 2 == 0).
📌 نکته مهم برای هوش مصنوعی و دیتا:
در پروژههای AI و Data Science حلقهها زیاد استفاده میشوند، مخصوصاً برای پردازش دادهها (مثلاً خواندن دادهها خطبهخط یا اجرای یک مدل بارها با دادههای مختلف).
در برنامهنویسی واقعی، همیشه احتمال وجود خطا در ورودی یا عملکرد وجود دارد. برای مثال:
کاربر به جای عدد، متن وارد کند.
کاربر عدد فرد وارد کند در حالی که ما انتظار عدد زوج داریم.
برای همین باید برنامه طوری نوشته شود که:
خطا باعث توقف کل برنامه نشود.
کاربر فرصت اصلاح ورودی داشته باشد.
برنامه همچنان بتواند توسط کاربران بعدی ادامه پیدا کند.
ما میتوانیم از ترکیب حلقه بینهایت (while True) و مدیریت خطا (try / except) استفاده کنیم.
while True: # حلقه اصلی برای همهی کاربران while True: # حلقه داخلی برای یک کاربر try: num = int(input("Enter an even number: ")) if num % 2 == 0: # بررسی زوج بودن print("Double of your number is:", num * 2) break # خروج از حلقه داخلی (کاربر موفق شد ورودی درست بدهد) else: print("❌ Invalid entry! Please enter an EVEN number.") except: print("❌ Use digits only (e.g. 2, 4, 10).") # پرسش از اپراتور برای ادامه یا توقف stop = input("Press 's' to stop the app, otherwise the next user can continue: ") if stop.lower() == 's': break print("✅ The program has ended.")
while True اول → برای مدیریت کاربران مختلف است.
while True دوم → به یک کاربر فرصت میدهد تا ورودی صحیح وارد کند.
try / except → مانع کرش شدن برنامه در صورت ورود متن یا کاراکتر غیرعددی میشود.
break → زمانی استفاده میشود که کاربر ورودی درست بدهد یا اپراتور بخواهد برنامه متوقف شود.
کد بالا را طوری تغییر دهید که:
به جای چاپ عدد دو برابر شده، جمع کل اعداد زوج واردشدهی هر کاربر را نشان دهد.
بعد از هر کاربر، جمع جداگانهی او نمایش داده شود.
برنامهای بنویسید که از کاربران بخواهد به سه اپلیکیشن معروف (مثلاً Instagram ،Telegram ،WhatsApp) از 0 تا 5 امتیاز بدهند.
در پایان، مجموع امتیازها محاسبه شود و اپلیکیشنی که بیشترین امتیاز را دارد به عنوان محبوبترین اپلیکیشن معرفی گردد.
print("⭐️ Nazarsanji az 0 ta 5 baraye 3 app marouf ⭐️") # جمع امتیازهای هر اپلیکیشن score_instagram = 0 score_telegram = 0 score_whatsapp = 0 # تعداد کاربران n = int(input("Chand nafar mikhay emtiaz bedan? ")) for i in range(1, n+1): print(f"\nUser {i}:") emtiaz_instagram = int(input("Emtiaz be Instagram (0 ta 5): ")) emtiaz_telegram = int(input("Emtiaz be Telegram (0 ta 5): ")) emtiaz_whatsapp = int(input("Emtiaz be WhatsApp (0 ta 5): ")) # جمع کردن امتیازها score_instagram += emtiaz_instagram score_telegram += emtiaz_telegram score_whatsapp += emtiaz_whatsapp # اعلام نتایج print("\n--- Natije ---") print("Instagram:", score_instagram) print("Telegram:", score_telegram) print("WhatsApp:", score_whatsapp) # پیدا کردن محبوبترین if score_instagram > score_telegram and score_instagram > score_whatsapp: print("📌 Popular-tarin app: Instagram") elif score_telegram > score_instagram and score_telegram > score_whatsapp: print("📌 Popular-tarin app: Telegram") elif score_whatsapp > score_instagram and score_whatsapp > score_telegram: print("📌 Popular-tarin app: WhatsApp") else: print("⚖️ Mosavi shodan emtiaz ha!")
⭐️ Nazarsanji az 0 ta 5 baraye 3 app marouf ⭐️ Chand nafar mikhay emtiaz bedan? 3 User 1: Emtiaz be Instagram (0 ta 5): 5 Emtiaz be Telegram (0 ta 5): 4 Emtiaz be WhatsApp (0 ta 5): 3 User 2: Emtiaz be Instagram (0 ta 5): 4 Emtiaz be Telegram (0 ta 5): 5 Emtiaz be WhatsApp (0 ta 5): 2 User 3: Emtiaz be Instagram (0 ta 5): 3 Emtiaz be Telegram (0 ta 5): 5 Emtiaz be WhatsApp (0 ta 5): 1 --- Natije --- Instagram: 12 Telegram: 14 WhatsApp: 6 📌 Popular-tarin app: Telegram