آموزش پایتون از صفر تا … (قسمت ۵) – کنترل جریان در پایتون

با سلام و درود، خب به قسمت کنترل جریان رسیدیم 🙂 یکی از اولین آموزش ها در زبان های برنامه نویسی بحث کنترل جریان و شرطی ها هست که در ادامه بهشون در زبان برنامه نویسی پایتون می پردازیم.

یه ساختار کنترلی سمت و سوی اجرا شدن گزاره ها در یک برنامه رو مشخص می کند (اینجا)

تو دنیای واقعی پیرامون خودمون، همیشه باید اطرافمان ارزیابی کنیم و سپس یک انتخاب انجام بدیم. (اگر هوا دوست داشتنی باشه با رفیقم میرم بیرون دوردور 🙂 )

تو زبان پایتون دستور «if» به این جهت بالا استفاده می شود. برای انجام تصمیم گیری و ارزیابی

کنترل جریان : گزاره های شرطی

از «if»  برای ارزیابی اینکه یک گزاره درست «True» یا اشتباه «False» است استفاده می شود. اگر درست باشد، آنچه که داخل گزاره «if» باشد اجرا می شود ،

if <expr>:
    <statement>

توجه داشته باشید که «:» الزامی هست.

به مثال زیر توجه کنید :

if True:
  print("Hello Python If")

if 2 > 1:
  print("2 is greater than 1")

«۲» از «۱» بزرگتره، پس کد «print» اجرا می شود.

گزاره «else» زمانی اجرا می شود که عبارت «if» اشتباه باشد.

if 1 > 2:
  print("1 is greater than 2")
else:
  print("1 is not greater than 2")

«۱» از «۲» بزرگتر نیست پس کد داخل عبارت «else» اجرا می شود.

شما همچنین می توانید از عبارت «elif» استفاده کنید:

if 1 > 2:
  print("1 is greater than 2")
elif 2 > 1:
  print("1 is not greater than 2")
else:
  print("1 is equal to 2")

یه مثال کاملتر : 

>>> x = 0
>>> y = 5

>>> if x < y:                            # Truthy
...     print('yes')
...
yes
>>> if y < x:                            # Falsy
...     print('yes')
...

>>> if x:                                # Falsy
...     print('yes')
...
>>> if y:                                # Truthy
...     print('yes')
...
yes

>>> if x or y:                           # Truthy
...     print('yes')
...
yes
>>> if x and y:                          # Falsy
...     print('yes')
...

>>> if 'aul' in 'grault':                # Truthy
...     print('yes')
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
...     print('yes')
...

گروه بندی دستورات : فاصله گذاری (indentation) و بلاک ها

خب تا الان که خوب بوده :)) 

حالا بیاید فرض کنید میخواید یک شرطی رو ارزیابی کنید و سپس اگه درست بود، چند تا کار رو انجام بدید نه یه کار.

(اگر هوا دوست داشتنی باشه:

  • با رفیقم میرم بیرون دوردور 🙂
  • شیرموز میخورم
  • یه دوچرخه سواری نیز انجام می دم )

اکر هوا دوست داشتنی نباشه، هیچ کدوم از کارهای بالا رو انجام نمیدم 😐

تو تمام مثال هایی که در بالا داشتیم همشون تک دستوری بودند، اگر عبارت درست بود، یک دستور اجرا میشد .

تقریبا همه زبان های برنامه نویسی یه جور بلاک بندی برای گروه بندی دستورات دارند. که در پایتون تو فاصله گذاری جمعبندی میشه.

همه چیز در مورد فاصله گذاری در پایتون

پایتون از قراردادی که قانون آفساید ( off-side rule) شناخته می شود، پیروی می کند، واژه ای که توسط دانشمند انگلیسی علوم کامپیوتر-  Peter J. Landin – ساخته شد (از قانون آفساید فوتبال گرفته شده). پایتون یکی از زبان هایی هست که از مجموعه کوچکی از قانون آفساید استفاده می کند (لیست زبان هایی که از قانون آفساید پیروی میکنند رو اینحا میتونید ببینید)

در زبان پایتون دستوراتی که فاصله گذاری یکسانی داشته باشند، به عنوان قسمتی از یک بلاک در نظر گرفته می شوند.

در نتیجه دستور «if» ترکیبی به صورت زیر میشه :

if <expr>:
    <statement>
    <statement>
    ...
    <statement>
<following_statement>

اینجا تموم دستورات خط ۲ تا ۵ به عنوان یه بلاک در نظر گرفته می شوند. اگر <expr> درست باشد، کل بلاک اجرا می شه.

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

یه نکته دیگه : در پایتون به مجموعه دستوراتی که در یک سطح از فاصله گذاری باشند suitگفته می شود.

if 'foo' in ['bar', 'baz', 'qux']:
    print('Expression was true')
    print('Executing statement in suite')
    print('...')
    print('Done.')
print('After conditional')

این مثال رو اجرا کنید و نتیجه رو خودتون بررسی کنید.

بلاک های میتونند در عمق های متفاوت تودرتو شوند.

د رادامه یه مثال پیچیده تر را  می بینید:

# Does line execute?                        Yes    No
#                                           ---    --
if 'foo' in ['foo', 'bar', 'baz']:        #  x
    print('Outer condition is true')      #  x

    if 10 > 20:                           #  x
        print('Inner condition 1')        #        x

    print('Between inner conditions')     #  x

    if 10 < 20:                           #  x
        print('Inner condition 2')        #  x

    print('End of outer condition')       #  x
print('After outer condition')            #  x

خروجی به صورت زیر خواهد بود:

Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition

 

ادامه دارد …

 

آموزش ها از قرار زیر هستند (در حال تکمیل) :