رفتن به مطلب
انجمن تخصصی بات چی | BotChi | انجمن ربات تلگرام
seyyedmehdi

اموزش کامل پایتون به زبان فارسی جلسه پنجم

پست های پیشنهاد شده

شرط و حلقه

قبل از اینکه وارد مبحث شرط (if) بشیم یکی از جالبرترین جنبه های پایتون رو توضیح می دم . برخلاف زبانهای دیگری چون C و Pascal که از علایم و عباراتی چون {} و begin,end و … برای نمایش شروع و پایان یک قطعه کد استفده می کنند پایتون دارای علامت یا عبارت خاصی برای این منظور نمی باشد !! و عمل مشخص کردن محدوده یک عبارت که شامل قطعه کد می باشد (مثلا تابع – دستورات شرطی – حلقه – کلاس و … ) از فاصله گزاری استفاده می گردد . به این صورت که پس از خطی که بقیه دستورات زیر مجموعه آن می باشند به اندازه دلخواه فاصله یا تورفتگی داده می شود این فاصله های یکسان تا زمانی ادامه می یابد که محدوده دستور پایان یابد . که این روش باعث کاهش مقدار برنامه و خوانایی برنامه می شود .

دستور شرطی if

شکل کلی if در پایتون به صورت زیر می باشد.

:    شرط   if
دستورات

مثال : شرط اول به علت اختلاف حرف m مقدار false بوده و هیچ مقداری نمایش داده نمی شود . اما در بخش بعدی با استفاده از تابع عضو کلاس رشته و تبدیل هر دو رشته به حروف کوچک مقدار شرط درست بوده و متن دلخواه چاپ می شود .

>>> if "mehdi" == "Mehdi" :
...     print "Same !!"
...
>>> if "mehdi".lower() == "Mehdi".lower() :
...     print "Same !!"
...
Same !!

به فاصله داده شده در اول دستور print توجه نمایید . با این توضیح هرگونه فاصله اضافی که باعث ایجاد ابهام گردد تولید خطا می کند . در کد زیر فلش زیر حرف p در دستور print نشان دهنده محل اشتباه منطقی موجود می باشد .

>>>     print "Some space !!"
File "<stdin>", line 1
print "Some space !!"
^
SyntaxError: invalid syntax

علامات بکار رفته برای مقایسه دو عبارت و ترکیب عبارات شرطی مطابق علایم زبان C می باشد علایمی چون :
“>” , “<” , “==” , “=!” , “&” , “|” , “=>” , “%” و …
که البته می توانید بجای “&” از and و بجای “| ” از or استفاده کنید .

دستورات تکرار

حلقه while

اولین دستور تکرار یا حلقه while می باشد . به مثال زیر توجه کنید :

>>> omelet={“egg”:۲,“mushroom”:۵,“pepper”:۱,“cheese”:۱, “milk”:۱}
>>> ingredients = omelet.keys()
>>> ingredients
[‘cheese’, ‘pepper’, ‘egg’, ‘milk’, ‘mushroom’] >>> while len(ingredients) > 0:
...      current = ingredients.pop()
...      print “Adding %d %s to the mix” % (omelet[current],current)
...
Adding 5 mushroom to the mix
Adding 1 milk to the mix
Adding 2 egg to the mix
Adding 1 pepper to the mix
Adding 1 cheese to the mix

در این مثال ابتدا یک دیکشنری را تعریف می کنیم . (به تعرف یکجا و جدید توجه کنید ) سپس از طریق دستور ()keys کلید (اندیس) های دیکشنری را در متغییر دیگری به نام ingredients می ریزیم . و با وارد کردن نام آن محتویات متغییر را مشاهده می کنیم . (این نوع نمایش فقط در حالت محاوره ای عمل می کند ) سپس با استفاده از دستور while و تا زمانی که تعداد اعضای متغییر ingredients بزرگتر از صفر است وارد حلقه می شویم با دستور ()pop که یک عنصر را از لیست جدا کرده (حذف کرده) و بر می گرداند یکی یکی اعضا لیست ingredients که همان کلید های دیکشنری omelet هستند را در داخل متغییر current ریخته و در سطر بعدی چاپ می کنیم .

حلقه for

دستور بعدی برای حلقه … for … in می باشد . که شبیه به دستور while می باشد با این تفاوت که در این حالت نیازی به تعیین شرط پایان حلقه نبوده و در ضمن متغییری که به تک تک عناصر لیست اشاره می کند ایجاد می گردد که می توانید از آن در داخل حلقه استفاده کنید . معادل مثال بالا را با for به صورت زیر می باشد:


>>> for ingredient in omelet.keys():
...     print “adding %d %s to the mix” % (omelet[ingredient],ingredient)

همانطور که مشاهده می کنید کد نوشته شده با for بسیار بهینه تر و کوتاهتر می باشد . منطق for در پایتون کمی متفاوت می باشد . که شما متغییر ( ingredient ) و یک لیست از عناصر ( ()omelet.keys ) می باشد که با عبارت کلیدی in از هم جدا شده اند . روند حلقه به این صورت است که متغییر تعریف شده به تک تک عناصر لیست اشاره خواهد کرد .
همانند زبانهای دیگر حلقه دارای دستوراتی برای جلوگیری از اجرای حلقه بدون تست شرط و نیز جلوگیری از اجرای بخشی از دستورات و تست دوباره شرط می باشد .
با استفاده از break می توانید بدون تست شرط حلقه را ترک کنید . و دستور continue از اجرای دستورات جلوگیری کردی مقدار متغییر را تغییر داده و شرط را بررسی می کند .
استفاده از else در دستورات تکرار :
شاید بهتر بود نام این دستور done یا on_completion بود . چون در آخر حلقه های تکرار می یاد و زمانی اجرا می شه که حلقه بطور کامل و برای تمامی مقادیر اجرا شده باشه و دستوری مانند break اجرای عادی حلقه رو ناقص نکرده باشه .
دو مثال از استفاده else در حلقه for که در اولی به علت اجرای کامل حلقه اجرا نمی شود ولی در مثال دوم اجرا شده است:

>>> for food in (“pate”, “cheese”, “crackers”, “yogurt”):
...     if food == “yogurt”:
...             break
... else:
...     print “There’s no yogurt!”
...
>>> for food in (“pate”, “cheese”, “crackers”):
...     if food == “yogurt”:
...             break
... else:
...     print “There’s no yogurt!”
...
There’s no yogurt!

به تو در تو بودن if و for و رعایت فاصله دقت کنید . توجه کنید که else دقیقا زیر for نوشته شده است پس متعلق به for می باشد نه if !! در حلقه دوم چون yogurt در تیوپل موجود می باشد (تیوپل است چون از پارانتز استفاده شده !) شرط if اجرا می گردد و با دستور break از اجرای ادامه حلقه جلوگیری می شود بنابرین بخش else حلقه به اجرا در می آید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   بازگردانی قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...