همانگونه که در قسمت قبلی آموزش مقدماتی پایتون وعده داده بودیم، در این قسمت دستورات شرطی و حلقهها را به شما آموزش خواهیم داد. این دو مفهوم مهم برنامه نویسی، بیشترین کاربرد را در کدهای ما دارند. به همین دلیل سعی کردهایم با استفاده از مثالهای فراوان، این مفاهیم را بهخوبی برای شما روشن کنیم. در ادامهی این آموزش با ما همراه باشید.
گاهی در زندگی واقعی شرایطی به وجود میآید که ما نیاز به تصمیمگیری داریم و بر اساس آن تصمیم، کارهای خود را پیش میبریم. چنین شرایطی در برنامه نویسی نیز وجود دارند که ما نیاز به تصمیمگیری داشته و کدهای بعدی بر اساس تصمیمی که میگیریم اجرا خواهند شد.
دستورات تصمیمگیری در زبانهای برنامه نویسی، جهت و روند اجرای برنامه را مشخص میکنند. در ادامه با دستورات تصمیمگیری در پایتون بیشتر آشنا خواهید شد.
If سادهترین دستور تصمیمگیری در پایتون است. از این دستور برای اجرا شدن یک بخش از کد، در صورتی که یک شرط خاص یا مجموعهای از شروط در آن برقرار باشد، استفاده میشود.
نحو نوشتاری if به صورت زیر است:
if condition:
# Statements to execute if
# condition is true
دستور if مقادیر بولین (boolean) را میپذیرد، لذا شرط پس از ارزیابی، درست یا غلط خواهد بود. در صورت درست بودن شرط، دستور یا دستورات وابسته به آن اجرا میشوند و در غیر این صورت برنامه از آن بلوک کد خارج خواهد شد. در پایتون، شرط را میتوان هم داخل پرانتز () و هم بدون پرانتز نوشت.
همانگونه که میدانید، پایتون از تورفتگی برای شناسایی یک بلوک کد استفاده میکند. کد زیر روش مشخص کردن دستور شرط if را نشان میدهد.
نحو نوشتاری (Syntax):
if condition:
statement1
statement2
# Here if the condition is true, if block
# will consider only statement1 to be inside
# its block
به مثال زیر توجه کنید:
# python program to illustrate If statement
i = 10
if (i > 15):
print ("10 is less than 15")
print ("I am Not in if")
I am Not in if
همانطور که در مثال بالا میبینید، چون شرط if نادرست است، دستور داخل بلوک if اجرا نمیشود.
با دستور if در صورتی که شرط برقرار باشد، دستورات داده شده اجرا میشوند و در صورت نادرستی شرط، کاری انجام نمیشود. اما اگر بخواهیم در صورت نادرست بودن شرط یا شروط، دستورات دیگری اجرا شوند، از دستور else در کنار if استفاده میکنیم.
نحو نوشتاری:
if (condition):
# Executes this block if
# condition is true
else:
# Executes this block if
# condition is false
مثال:
# python program to illustrate If else statement
i = 20;
if (i < 15):
print ("i is smaller than 15")
print ("i'm in if Block")
else:
print ("i is greater than 15")
print ("i'm in else Block")
print ("i'm not in if and not in else Block")
i is greater than 15 i'm in else Block i'm not in if and not in else Block
در کد بالا، پس از نادرست بودن شرط if، دستورات پس از else اجرا میشوند. در انتها نیز دستور بیرونی if-else اجرا میشود.
در پایتون میتوانیم دستور if را در داخل دستور if دیگر، قرار دهیم، که به آن if تودرتو (nested if) میگویند.
نحو نوشتاری:
if (condition1):
# Executes when condition1 is true
if (condition2):
# Executes when condition2 is true
# if Block is end here
# if Block is end here
مثال:
# python program to illustrate nested If statement
i = 10
if (i == 10):
# First if statement
if (i < 15):
print ("i is smaller than 15")
# Nested - if statement
# Will only be executed if statement above
# it is true
if (i < 12):
print ("i is smaller than 12 too")
else:
print ("i is greater than 15")
i is smaller than 15 i is smaller than 12 too
در پایتون، وقتی که نیاز است چندین شرط بررسی شده و تنها دستورات داخل یکی از آنها اجرا شود، از این نوع دستور تصمیمگیری (به اصطلاح نردبان) استفاده میشود. نحوهی کار از بالا به پایین و به این صورت است که ابتدا if بررسی میشود در صورت نادرستی شرط به سراغ elif میرود و در صورت نادرستی شرط elif، دستور else اجرا میشود. توجه داشته باشید با درستی شرط اولین نردبان، دستورات مرتبط با آن اجرا شده و دیگر موارد بررسی نخواهد شد و برنامه به سرعت از نردبان خارج میشود.
مقاله مفید : " بهترین ide پایتون "
نحو نوشتاری:
if (condition):
statement
elif (condition):
statement
.
.
else:
statement
مثال:
# Python program to illustrate if-elif-else ladder
i = 20
if (i == 10):
print ("i is 10")
elif (i == 15):
print ("i is 15")
elif (i == 20):
print ("i is 20")
else:
print ("i is not present")
i is 20
وقتی که داخل بلوک if فقط یک دستور برای نوشتن وجود داشته باشد، میتوان آن دستور را جلوی if و در یک خط به صورت خلاصه نوشت.
نحو نوشتاری:
if condition: statement
مثال:
# Python program to illustrate short hand if
i = 10
if i < 15: print("i is less than 15")
i is less than 15
در برنامه نویسی اگر بخواهیم عملی تکراری را به درستترین روش ممکن طراحی و اجرا کنیم، از حلقههای تکرار استفاده میکنیم. در پایتون دو نوع حلقهی تکرار for و while وجود دارد که در ادامه به بررسی آنها میپردازیم.
حلقهی for، برای پیمایش ترتیبی و تکرارهای مشخص استفاده میشود. تکرار مشخص، یعنی تعداد تکرارها از قبل به صراحت مشخص شده است.
همانطور که گفتیم حلقههای for، برای پیمایشهای پیدرپی به کار میرود، مانند پیمایش یک لیست، رشته و... . حلقه در پایتون به سبک زبان برنامه نویسی C نیست بلکه در این زبان، یک حلقهی (for in) وجود دارد که کارکرد آن شبیه به حلقه در زبانهای دیگر است.
نحو نوشتاری:
for var in iterable:
# statements
در اینجا iterable مجموعهای از اشیا مانند لیست یا تاپل است. دستورات داخل حلقهی for برای هر مورد یک بار قابل اجرا است و متغیر var هر بار از طریق حلقه، یکی از آیتمهای iterable را اجرا میکند.
مثال:
# Python program to illustrate
# Iterating over a list
print("List Iteration")
l = ["7Learn", "Python", "Molaei"]
for i in l:
print(i)
# Iterating over a tuple (immutable)
print("\nTuple Iteration")
t = ("7Learn", "Python", "Molaei")
for i in t:
print(i)
# Iterating over a String
print("\nString Iteration")
s = "7Learn"
for i in s :
print(i)
# Iterating over dictionary
print("\nDictionary Iteration")
d = dict()
d['xyz'] = 123
d['abc'] = 345
for i in d :
print("% s % d" %(i, d[i]))
List Iteration 7Learn Python Molaei Tuple Iteration 7Learn Python Molaei String Iteration 7 L e a r n Dictionary Iteration xyz 123 abc 345
()range یکی از توابع داخلی پایتون است. هنگامی که برنامهنویس، نیاز به انجام کاری برای چندین مرتبه دارد، از این تابع استفاده میکند. تابع ()range در پایتون 3، نسخهی تغییرنامیافتهی تابع ()xrange در پایتون 2 است.
از تابع ()range برای تولید دنبالهای از اعداد استفاده میشود. به زبان ساده، این تابع به برنامهنویس امکان میدهد تا یک سری اعداد را در محدودهی مشخصشده تولید کند. بر اساس این که کاربر چند آرگومان به تابع میدهد، پایتون میفهمد که سری اعداد از کجا شروع میشود و در کجا پایان مییابد، همچنین مقدار اختلاف بین یک عدد با عدد بعدی را میفهمد.
start: عدد صحیحی که دنبالهی اعداد از آن شروع میشود. (مقدار پیشفرض 0 است)
stop: عدد صحیحی که دنبالهی اعداد با آن پایان مییابد. (خود این عدد در دنباله ساخته شده جا ندارد)
step: مقدار عدد صحیحی که روند افزایش بین اعداد دنباله را تعیین میکند. (مقدار پیشفرض 1 است)
# Python Program to
# show range() basics
# printing a number
for i in range(10):
print(i, end=" ")
print()
# using range for iteration
l = [10, 20, 30, 40]
for i in range(len(l)):
print(l[i], end=" ")
print()
# performing sum of first 10 numbers
sum = 0
for i in range(1, 10):
sum = sum + i
print("Sum of first 10 numbers :", sum)
0 1 2 3 4 5 6 7 8 9 10 20 30 40 Sum of first 10 numbers : 45
در بیشتر زبانهای برنامه نویسی (C, C++ , Java, …) از else فقط در دستورات شرطی if استفاده میشود. اما پایتون به ما این اجازه را میدهد تا از دستور else در حلقهها نیز استفاده کنیم.
نکته: دستورات بلوک else بعد از حلقههای for و while در صورتی اجرا میشوند که حلقه با دستور break پایان نیابد.
# Python program to demonstrate
# for-else loop
for i in range(1, 4):
print(i)
else: # Executed because no break in for
print("No Break\n")
for i in range(1, 4):
print(i)
break
else: # Not executed as there is a break
print("No Break")
1 2 3 No Break 1
در پایتون، برای اجرای مکرر یک بلوک از دستورات تا برقرار شدن شرط، از حلقهی while استفاده میشود. در حلقهی while، هنگامی که شرط نادرست شد، برنامه بلافاصله از حلقه خارج میشود. حلقهی while در گروه تکرار نامعین قرار دارد، یعنی تعداد دفعات اجرای حلقه، از قبل به طور صریح مشخص نشده است.
نحو نوشتاری:
while expression:
statement(s)
وقتی حلقهی while اجرا میشود، ابتدا expression بررسی میشود و اگر شرط درست باشد، بدنهی حلقه اجرا میشود. این روال تا زمانی که expressin نادرست شود، ادامه پیدا میکند.
مثال:
# Python program to illustrate
# while loop
count = 0
while (count < 3):
count = count + 1
print("Hello 7Learn")
print()
# checks if list still
# contains any element
a = [1, 2, 3, 4]
while a:
print(a.pop())
Hello 7Learn Hello 7Learn Hello 7Learn 4 3 2 1
مانند حلقهی for، اگر حلقهی while نیز از یک دستور منفرد تشکیل شده باشد، میتوان تمامی حلقه را در یک خط واحد نوشت. اگر در بدنهی حلقه، چندین عبارت وجود داشته باشد، میتوان آنها را با علامت نقطه-ویرگول (;) از هم جدا کرد.
# Python program to illustrate
# Single statement while block
count = 0
while (count < 5): count += 1; print("Hello 7Learn")
Hello 7Learn Hello 7Learn Hello 7Learn Hello 7Learn Hello 7Learn
همان طور که گفته شد، حلقهی while تا زمانی که یک شرط برقرار باشد ادامه پیدا میکند، اما به محض این که شرط نادرست باشد، از حلقه خارج میشود.
قسمت else در صورتی که شرط while نادرست باشد، اجرا میشود و اگر برنامه با مطرح شدن استثنایی از حلقه خارج شود، دستور else اجرا نمیشود.
نکته: دستورات بلوک else بعد از حلقههای for و while در صورتی اجرا میشود که حلقه با دستور break پایان نیابد.
# Python program to demonstrate
# while-else loop
i = 0
while i < 4:
i += 1
print(i)
else: # Executed because no break in for
print("No Break\n")
i = 0
while i < 4:
i += 1
print(i)
break
else: # Not executed as there is a break
print("No Break")
1 2 3 4 No Break 1
استفاده از حلقهها، کارها را به روش دقیقی تکرار و خودکار میکند. اما گاهی، ممکن است شرایطی پیش بیاید که بخواهید به طور کامل از حلقه خارج شوید، از یک تکرار صرفنظر کنید یا آن شرایط را نادیده بگیرید. در این موقع، میتوان از دستورات کنترل حلقه کمک گرفت. این دستورات، مسیر اجرای حلقه را از توالی عادی خود تغییر میدهند. وقتی اجرای حلقه از یک حوزه (Scope) خارج شود، تمام اشیاء خودکاری که در آن حوزه ایجاد شدهاند، از بین میروند. پایتون، از دستورات کنترلی زیر پشتیبانی میکند:
دستور continue
دستور break
دستور pass
در پایتون، وقتی که شرایط خارجی حلقه را تحریک میکند، از دستور break برای خارج کردن کنترل از آن استفاده میشود. دستور break، در داخل بدنهی حلقه و به طور کلی پس از شرط if قرار میگیرد.
# Python program to
# demonstrate break statement
s = '7learnandpython'
# Using for loop
for letter in s:
print(letter)
# break the loop as soon it sees 'e'
# or 's'
if letter == 'a' or letter == 'n':
break
print("Out of for loop")
print()
i = 0
# Using while loop
while True:
print(s[i])
# break the loop as soon it sees 'e'
# or 's'
if s[i] == 'a' or s[i] == 'n':
break
i += 1
print("Out of while loop")
7 l e a Out of for loop 7 l e a Out of while loop
در مثال بالا، هر دو حلقه در حال پیمایش رشتهی "7learnandpython"هستند. با شرط if به محض این که با دو کاراکتر ‘a’ و ‘n’ روبرو میشوند، کنترل اجرا از حلقه خارج میشود.
Continue نیز مانند break یک دستور کنترل حلقه است، که بر خلاف break به جای پایان دادن به حلقه، آن را مجبور به تکرار بعدی حلقه میکند.
دستور continue، حلقه را مجبور به ادامه یا اجرای تکرار بعدی میکند، به این صورت که هنگامی که دستور continue در حلقه اجرا شود، از کد داخل حلقه صرفنظر میشود و تکرار بعدی حلقه شروع به کار میکند.
مثال:
شرایطی را در نظر بگیرید که شما ملزم هستید برنامهای بنویسید که اعداد 1 تا 10 را چاپ کند ولی عدد 6 چاپ نشود. در ضمن شما برای انجام این کار، ملزم به استفاده از یک حلقه هستید.
راهحل:
با استفاده از دستور continue نوشتن این برنامه بسیار ساده است. آنچه که باید انجام دهیم، نوشتن یک حلقه است که اعداد 1 تا 10 را اجرا کند و در هر بار تکرار حلقه، عدد را با 6 مقایسه کنیم. اگر برابر با 6 بود با استفاده از دستور continue از آن صرفنظر کرده و تکرار بعدی را ادامه میدهیم؛ در غیر این صورت، مقدار را چاپ میکنیم.
در زیر اجرای ایدهی بالا، آورده شده است:
# Python program to
# demonstrate continue
# statement
# loop from 1 to 10
for i in range(1, 11):
# If i is equals to 6,
# continue to next iteration
# without printing
if i == 6:
continue
else:
# otherwise print the value
# of i
print(i, end = " ")
1 2 3 4 5 7 8 9 10
میتوان دستور continue را با همان روشی که در حلقهی بالا استفاده کردیم در هر حلقهی دیگر نیز به کار ببریم.
تمرین پیشرفته:
با توجه به عدد n، الگوی مثلثی مانند زیر را چاپ کنید. در ضمن شما فقط اجازهی استفاده از یک حلقه را دارید.
Input: 7 Output: * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Pass یک دستور تهی است ولی توسط مفسر نادیده گرفته نمیشود. به طور کلی از این دستور به عنوان حافظهی مکان استفاده میشود و بیشتر در زمانی که برنامهنویس نمیداند چه کدی بنویسد یا قصد نوشتن کدی در آنجا را ندارد، از pass استفاده میکند. به این طریق، پایتون بدون اینکه خطایی صادر کند به سراغ کدهای دیگر میرود. دستور pass در حلقهها، توابع، کلاسها و شرط if به کار میرود.
مثال 1: pass را میتوان در یک تابع خالی استفاده کرد.
def molFunction:
pass
مثال 2: از pass همچنین میتوان در یک کلاس خالی استفاده کرد.
class molClass:
pass
مثال 3: وقتی برنامهنویس نمیداند در حلقه چه کدی بنویسد، از یک pass استفاده میکند.
n = 10
for i in range(n):
# pass can be used as placeholder
# when code is to added later
pass
مثال 4: در دستورات شرطی نیز میتوان از pass استفاده کرد.
a = 10
b = 20
if(a<b):
pass
else:
print("b<a")
مثال 5:
li =['a', 'b', 'c', 'd']
for i in li:
if(i =='a'):
pass
else:
print(i)
b c d
ما در این آموزش، دستورات شرطی پایتون از جمله if و elif و else را معرفی کردیم و آنها را با مثالهای کاربردی آموزش دادیم. سپس با حلقههای تکرار و تفاوت بین حلقههای for و while آشنا شدید. دانستید که کاربرد حلقهی for در تکرارهای مشخص و کاربرد حلقهی while در تکرارهای نامشخص است. در ادامه نیز سه دستور کنترل حلقه در پایتون شامل break ،continue و pass را معرفی کرده و با مثال، کاربرد هر یک را توضیح دادیم. همان طور که در قسمت قبلی گفته بودیم، این آخرین قسمت از مجموعه آموزشهای مقدماتی پایتون بود و امیدواریم توانسته باشیم شما را به برنامه نویسی پایتون علاقمند کنیم. اگر دوست دارید به صورت پیشرفته، برنامه نویسی پایتون را ادامه دهید، میتوانید با تهیهی دورههای متخصص پایتون مجموعه سونلرن به این خواستهی خود برسید.
اگر به یادگیری بیشتر در زمینهی برنامه نویسی پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دورهی اموزش پایتون توسعه وب در آینده میتونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزهی هوش مصنوعی هم شوی.