فهم عمیق “حلقه های for” در زبان برنامه نویسی پایتون

به جهانی از اتوماسیون و سادگی خوش آمدید! در این پست، ما در مورد یکی از ابزارهای قدرتمند پایتون، حلقه های for، توضیح می دهیم.
تعریف حلقه For
حلقه For در پایتون، ابزاری است که امکان تکرار کدها را به صورت اتوماتیک و براساس شرایط خاص فراهم می کند. با استفاده از حلقه for، می توانید یک کد را برای هر عنصر یک توالی یا دیگر ساختارهای داده ای تکرار کنید.
مثال ساده:
for i in range(5): print(i)
در این مثال، حلقه for برای تکرار دستور print(i) بر اساس توالی که توسط تابع range(5) تولید شده است، استفاده می شود. نتیجه، چاپ اعداد 0 تا 4 خواهد بود.
کاربرد حلقه For در پایتون
حلقه for در پایتون می تواند در سناریوهای متنوعی مورد استفاده قرار گیرد. مثلا برای پیمایش لیست ها، توپل ها، دیکشنری ها، مجموعه ها و رشته ها می توان از حلقه for استفاده کرد.
مثال:
fruits = ['apple', 'banana', 'cherry'] for fruit in fruits: print(fruit)
در این مثال، حلقه for روی لیست میوه ها پیمایش می کند و نام هر میوه را چاپ می کند.
استفاده از دستور break در حلقههای پایتون
توانایی کنترل جریان کد یکی از ویژگیهای مهم هر زبان برنامهنویسی است. در پایتون، برخی از ابزارهای کنترل جریان کد شامل دستورات break و continue هستند.
تعریف دستور break
دستور break در پایتون، ابزاری است که به شما امکان خروج فوری از حلقه (چه حلقه for باشد یا حلقه while) را میدهد، حتی اگر شرط حلقه هنوز برقرار باشد.
مثال ساده:
for i in range(5): if i == 3: break print(i)
در این مثال، دستور break زمانی اجرا میشود که i برابر با 3 باشد. در نتیجه، حلقه در این نقطه متوقف میشود و بقیه اعداد چاپ نمیشوند. نتیجه نهایی چاپ اعداد 0 تا 2 خواهد بود.
کاربرد دستور break در پایتون
دستور break میتواند در سناریوهای متنوعی مورد استفاده قرار گیرد. مثلا برای جلوگیری از اجرای بیانتهای حلقهها یا خروج از حلقه در صورت برقراری یک شرط خاص.
مثال:
n = 10 while True: print(n) n = n - 1 if n < 0: break
در این مثال، حلقه while بدون پایان اجرا میشود تا زمانی که دستور break اجرا شود. شرط دستور break این است که n کمتر از صفر شود. در نتیجه، اعداد 10 تا 0 چاپ میشوند.
استفاده از دستور continue در حلقههای پایتون
دستور continue در پایتون، ابزاری است که به شما امکان میدهد برای ادامه دادن به دور بعدی حلقه، حتی اگر تمامی کد حلقه برای دور فعلی اجرا نشده باشد.
مثال ساده:
for i in range(5): if i == 2: continue print(i)
در این مثال، دستور continue زمانی اجرا میشود که i برابر با 2 باشد. در این صورت، دستور print(i) برای i=2 اجرا نمیشود و بلافاصله به دور بعدی حلقه (i=3) میرویم. نتیجه نهایی چاپ اعداد 0، 1، 3 و 4 خواهد بود.
کاربرد دستور continue در پایتون
دستور continue در سناریوهای مختلفی میتواند مورد استفاده قرار گیرد. مثلا برای صرفنظر کردن از بخشی از کد حلقه در صورت برقراری شرط خاص.
مثال:
for num in range(10): if num % 2 == 0: continue print(num)
در این مثال، دستور continue اجرا میشود هرگاه num یک عدد زوج باشد. در این صورت، دستور print(num) برای اعداد زوج اجرا نمیشود و بلافاصله به عدد بعدی در حلقه میرویم. نتیجه نهایی چاپ اعداد فرد 1 تا 9 خواهد بود.
دستور continue در پایتون ابزاری قدرتمند برای کنترل جریان حلقهها است. با استفاده از این دستور، میتوانیم بخشی از کد حلقه را در صورت برقراری شرط خاص صرفنظر کنیم و بلافاصله به دور بعدی حلقه برویم.
استفاده از بخش else در حلقههای for در پایتون
پایتون ارائه دهنده تعدادی از امکانات و ویژگیهای منحصر به فرد برای کار با حلقهها است. یکی از این ویژگیها، استفاده از بخش else در حلقه for است که میتواند در بسیاری از سناریوها مفید باشد.
تعریف بخش else در حلقه For
در پایتون، بخش else در حلقه for، بخشی است که اجرا میشود هرگاه حلقه for به طور کامل اجرا شده باشد، یعنی برای همه اعضا در توالی، بدنه حلقه اجرا شده باشد.
مثال ساده:
for i in range(5): print(i) else: print("Loop has finished execution")
در این مثال، حلقه for برای هر عدد در range(5) اجرا میشود و عدد را چاپ میکند. بعد از اجرای کامل حلقه، بخش else اجرا میشود و “Loop has finished execution” را چاپ میکند.
کاربرد بخش else در حلقه For در پایتون
بخش else در حلقه for میتواند در سناریوهای متنوعی مورد استفاده قرار گیرد. مثلا برای اجرای بخشی از کد فقط در صورتی که حلقه به طور کامل اجرا شده باشد.
مثال:
for num in range(10, 20): for i in range(2, num): if num % i == 0: print(num, "equals", i, "*", num // i) break else: print(num, "is a prime number")
در این مثال، برای هر عدد در range(10, 20)، یک حلقه for دیگر اجرا میشود که بررسی میکند آیا عدد داده شده یک عدد اول است یا خیر. اگر عدد تقسیم پذیر بر یکی از اعداد باشد، حلقه break میشود و عدد بعدی بررسی میشود. اگر حلقه بدون اینکه break شود اجرا شود، بخش else اجرا میشود و میگوییم که عدد یک عدد اول است.
کار با حلقههای تو در تو و دستور pass در پایتون
در ادامه ما بر روی دو مفهوم مهم، یعنی حلقههای تو در تو (Nested Loops) و دستور pass در پایتون، تمرکز خواهیم کرد.
حلقههای تو در تو (Nested Loops)
حلقه تو در تو، حلقهای است که درون یک حلقه دیگر قرار دارد. در این حالت، برای هر دور اجرای حلقه بیرونی، حلقه درونی کاملاً اجرا میشود.
مثال ساده:
for i in range(3): for j in range(3): print(i, j)
در این مثال، برای هر i در حلقه بیرونی، حلقه درونی برای همه مقادیر j اجرا میشود. بنابراین، تمامی زوجهای ممکن از (i, j) چاپ میشوند.
دستور pass در پایتون
دستور pass در پایتون، دستوری است که هیچ عملی انجام نمیدهد. این دستور در صورتی که نیاز به یک بلوک کد داشته باشید، اما نمیخواهید کد خاصی در آن اجرا شود، مفید است.
مثال:
for num in range(10): if num % 2 == 0: pass else: print(num)
در این مثال، اگر عدد زوج باشد، دستور pass اجرا میشود و هیچ کاری انجام نمیشود. اگر عدد فرد باشد، عدد چاپ میشود.
پروژه ساخت Password Generator با پایتون
برای بهتر یادگرفتن دستور for در پایتون ، یک پروژه جالب Password Generator را با هم بررسی میکنیم:
import random # Lists of characters for generating passwords letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+'] print("Welcome to the PyPassword Generator!") # Gather user preferences for password composition nr_letters = int(input("How many letters would you like in your password?\n")) nr_symbols = int(input("How many symbols would you like?\n")) nr_numbers = int(input("How many numbers would you like?\n")) password_list = [] # Generate letters for the password for char in range(1, nr_letters + 1): password_list.append(random.choice(letters)) # Generate symbols for the password for char in range(1, nr_symbols + 1): password_list += random.choice(symbols) # Generate numbers for the password for char in range(1, nr_numbers + 1): password_list += random.choice(numbers) print(password_list) # Shuffle the characters in the password list random.shuffle(password_list) print(password_list) # Construct the final password from the shuffled list of characters password = "".join(password_list) print(f"Your password is: {password}")
این برنامه از لیستهای مختلفی از حروف، اعداد و نمادها برای تولید گذرواژه استفاده میکند. دستورات مختلف در این کد به شما امکان میدهند تا تعداد مورد نظر از هر نوع حرف (حروف کوچک و بزرگ)، نماد و عدد را به صورت تصادفی انتخاب کنید و سپس گذرواژه را تشکیل دهید.

در اینجا به طور خلاصه توضیحات مرحله به مرحله برنامه آورده شده است:
- تعریف لیستهای حروف، اعداد و نمادها: لیستهای `letters`، `numbers` و `symbols` حاوی حروف (کوچک و بزرگ)، اعداد و نمادهای مجاز برای تولید گذرواژه هستند.
- نمایش پیام خوشامدگویی: یک پیام خوشامدگویی به کاربر نمایش داده میشود.
- دریافت تعداد حروف، نمادها و اعداد: تعداد مورد نظر از حروف، نمادها و اعداد را از کاربر دریافت میکند.
- ایجاد لیست `password_list`: این لیست به عنوان محلی برای ذخیره حروف، نمادها و اعداد انتخاب شده به منظور ایجاد گذرواژه است.
- اضافه کردن حروف به `password_list`: از یک حلقه `for` برای افزودن تعداد مورد نظر از حروف به `password_list` استفاده میشود. هر حرف به صورت تصادفی از لیست حروف انتخاب شده و به لیست اضافه میشود.
- اضافه کردن نمادها به `password_list`: با استفاده از یک حلقه `for` دیگر، تعداد مورد نظر از نمادها به `password_list` اضافه میشود.
- اضافه کردن اعداد به `password_list`: مشابه مرحله قبل، تعداد مورد نظر از اعداد به `password_list` اضافه میشود.
- نمایش `password_list`: لیست نهایی `password_list` نمایش داده میشود. این لیست در این مرحله به ترتیب افزوده شده است.
- ترتیب تصادفی `password_list`: حروف، نمادها و اعداد در `password_list` به صورت تصادفی مخلوط میشوند تا تنوع بیشتری در گذرواژه به دست آید.
- تشکیل گذرواژه: با استفاده از حلقه `for`، تمام عناصر `password_list` به یکدیگر اضافه میشوند تا گذرواژه نهایی تشکیل شود.
- نمایش گذرواژه: گذرواژه نهایی به کاربر نمایش داده میشود.
این برنامه یک نمونه ساده از Password Generator تصادفی است، اما توجه داشته باشید که این کد برای مواردی که نیاز به امنیت بالاتری دارند، کافی نیست. بهتر است از کتابخانههای مخصوص گذرواژههای تصادفی در پایتون مانند secrets
استفاده کنید.