همان گونه که در قسمت قبلی آموزش مقدماتی پایتون وعده داده بودیم، در این قسمت دستورات شرطی و حلقهها را به شما آموزش خواهیم داد. این دو مفهوم مهم برنامه نویسی، بیشترین کاربرد را در کدهای ما دارند. به همین دلیل سعی کرده ایم با استفاده از مثال های فراوان، این مفاهیم را به خوبی برای شما روشن کنیم. در ادامه ی این آموزش با ما همراه باشید.
دستورات شرطی
گاهی در زندگی واقعی شرایطی به وجود میآید که ما نیاز به تصمیم گیری داریم و بر اساس آن تصمیم، کارهای خود را پیش میبریم. چنین شرایطی در برنامه نویسی نیز وجود دارند که ما نیاز به تصمیم گیری داشته و کدهای بعدی بر اساس تصمیمی که میگیریم اجرا خواهند شد.
دستورات تصمیم گیری در زبانهای برنامه نویسی، جهت و روند اجرای برنامه را مشخص میکنند. در ادامه با دستورات تصمیم گیری در پایتون بیشتر آشنا خواهید شد.
دستور if
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 در صورتی که شرط برقرار باشد، دستورات داده شده اجرا میشوند و در صورت نادرستی شرط، کاری انجام نمیشود. اما اگر بخواهیم در صورت نادرست بودن شرط یا شروط، دستورات دیگری اجرا شوند، از دستور 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 دیگر، قرار دهیم، که به آن 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 - else
در پایتون، وقتی که نیاز است چندین شرط بررسی شده و تنها دستورات داخل یکی از آنها اجرا شود، از این نوع دستور تصمیم گیری (به اصطلاح نردبان) استفاده میشود. نحوه ی کار از بالا به پایین و به این صورت است که ابتدا if بررسی میشود در صورت نادرستی شرط به سراغ elif میرود و در صورت نادرستی شرط elif، دستور else اجرا میشود. توجه داشته باشید با درستی شرط اولین نردبان، دستورات مرتبط با آن اجرا شده و دیگر موارد بررسی نخواهد شد و برنامه به سرعت از نردبان خارج میشود.
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 و در یک خط به صورت خلاصه نوشت.
نحو نوشتاری:
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، برای پیمایش ترتیبی و تکرارهای مشخص استفاده میشود. تکرار مشخص، یعنی تعداد تکرارها از قبل به صراحت مشخص شده است.
همان طور که گفتیم حلقههای 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 یکی از توابع داخلی پایتون است. هنگامی که برنامه نویس، نیاز به انجام کاری برای چندین مرتبه دارد، از این تابع استفاده میکند. تابع ()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
حلقه ی for-else
در بیشتر زبانهای برنامه نویسی (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 در گروه تکرار نامعین قرار دارد، یعنی تعداد دفعات اجرای حلقه، از قبل به طور صریح مشخص نشده است.
نحو نوشتاری:
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
دستور تک خطی while
مانند حلقه ی for، اگر حلقه ی while نیز از یک دستور منفرد تشکیل شده باشد، میتوان تمامی حلقه را در یک خط واحد نوشت. اگر در بدنه ی حلقه، چندین عبارت وجود داشته باشد، میتوان آنها را با علامت نقطه-ویرگول (;) از هم جدا کرد.
# Python program to illustrate
# Single statement while block
count = 0
while (count < 5): count += 1; print("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 برای خارج کردن کنترل از آن استفاده میشود. دستور 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
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، الگوی مثلثی مانند زیر را چاپ کنید. در ضمن شما فقط اجازه ی استفاده از یک حلقه را دارید.
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 را معرفی کرده و با مثال، کاربرد هر یک را توضیح دادیم. همان طور که در قسمت قبلی گفته بودیم، این آخرین قسمت از مجموعه آموزشهای مقدماتی پایتون بود و امیدواریم توانسته باشیم شما را به برنامه نویسی پایتون علاقمند کنیم. اگر دوست دارید به صورت پیشرفته، برنامه نویسی پایتون را ادامه دهید، میتوانید با تهیه ی دورههای متخصص پایتون مجموعه سون لرن به این خواسته ی خود برسید.
اگر به یادگیری بیشتر در زمینه ی برنامه نویسی پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دوره ی اموزش پایتون توسعه وب در آینده میتونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزه ی هوش مصنوعی هم شوی.