دستورات شرطی و حلقه های تکرار در پایتون - قسمت آخر آموزش مقدماتی پایتون

‏  15 دقیقه
۱۷ آذر ۱۳۹۹

همان‌گونه که در قسمت قبلی آموزش مقدماتی پایتون وعده داده بودیم، در این قسمت دستورات شرطی و حلقه‌ها را به شما آموزش خواهیم داد. این دو مفهوم مهم برنامه نویسی، بیش‌ترین کاربرد را در کدهای ما دارند. به همین دلیل سعی کرده‌ایم با استفاده از مثال‌‎های فراوان، این مفاهیم را به‌خوبی برای شما روشن کنیم. در ادامه‌ی این آموزش با ما همراه باشید.

فهرست محتوای این مقاله

دستورات شرطی

گاهی در زندگی واقعی شرایطی به وجود می‌آید که ما نیاز به تصمیم‌گیری داریم و بر اساس آن تصمیم، کارهای خود را پیش می‌بریم. چنین شرایطی در برنامه نویسی نیز وجود دارند که ما نیاز به تصمیم‌گیری داشته و کدهای بعدی بر اساس تصمیمی که می‌گیریم اجرا خواهند شد.

دستورات تصمیم‌گیری در زبان‌های برنامه نویسی، جهت و روند اجرای برنامه را مشخص می‌کنند. در ادامه با دستورات تصمیم‌گیری در پایتون بیشتر آشنا خواهید شد.

دستور 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")

خروجی:

Hello 7Learn

Hello 7Learn

Hello 7Learn

Hello 7Learn

Hello 7Learn

حلقه‌ی while-else

همان طور که گفته شد، حلقه‌ی 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، الگوی مثلثی مانند زیر را چاپ کنید. در ضمن شما فقط اجازه‌ی استفاده از یک حلقه را دارید.

Input: 7

Output: * * * * * * * * * * * * * * * * * * * * * * * * * * * *

دستور pass

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 را معرفی کرده و با مثال، کاربرد هر یک را توضیح دادیم. همان طور که در قسمت قبلی گفته بودیم، این آخرین قسمت از مجموعه آموزش‌های مقدماتی پایتون بود و امیدواریم توانسته باشیم شما را به برنامه نویسی پایتون علاقمند کنیم. اگر دوست دارید به صورت پیشرفته، برنامه نویسی پایتون را ادامه دهید، می‌توانید با تهیه‌ی دوره‌های متخصص پایتون مجموعه سون‌لرن به این خواسته‌ی خود برسید.

اگر به یادگیری بیشتر در زمینه‌ی برنامه نویسی  پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دوره‌ی متخصص پایتون توسعه وب در آینده می‌تونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزه‌ی هوش مصنوعی هم شوی.

چه امتیازی به این مقاله می دید؟
نویسنده عبدالرضا مولایی
هیچوقت برای یادگیری دیر نیست؛ همیشه چیزهای جدید برای آموختن وجود دارد.. این دو جمله، همیشه آویزه‌ی گوش منه، چون باعث میشه از یادگیری چیزهای تازه هراسی نداشته باشم.
ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :

 

نظرات کاربران

اولین دیدگاه این پست رو تو بنویس !