آموزش برنامه نویسی پایتون بخش بیست و سوم


جدول تناوبی تحلیل های مکانی در GIS

معرفی هفت منبع داده اقلیمی رایگان جهانی

چرخش قطبی در مقابل چرخش خورشید آهنگ

آنالیز تصویر شئی گرا (OBIA)

تعامل انرژی در سنجش از دور : انعکاس، جذب و گسیل انرژی

معرفی 6 منبع رایگان داده های لیداری

آشنایی با SAR با استفاده از مثال

برنامه لندست : 50 سال آرشیو از تصاویر سطح زمین

دانلود رایگان نرم افزار ArcGIS Pro 2.8

ابر نقطه ای چیست ؟

انواع نقشه ها در سیستم اطلاعات جغرافیایی: 25 روش مختلف و جذاب برای نمایش داده های مکانی در GIS

تصحیحات اتمسفری در سنجش از دور چیست ؟

سیستم های تصویر نقشه چیست ؟ و چرا بعضا برای ما گمراه کننده هستند ؟

ژئودزی: ریاضیات مکان

گیرنده های GPS چگونه کار می کنند ؟ سه گانه سازی در مقابل مثلث بندی

مأموریت توپوگرافی رادار شاتل (SRTM)

چرا پنجره اتمسفری در علوم زمین دارای اهمیت است ؟

تصاویر ماهواره ای DigitalGlobe: وردویو(Worldview)، ژئوآی(GeoEye) و آیکونوس (IKONOS)

راهنمای طبقه بندی نزدیکترین همسایه در e-Cognition

نقشه های کروپلت – مقدمه ای بر طبقه بندی داده

تصاویر چند طیفی (Multi-spectral) در مقایسه با تصاویر ابر طیفی (Hyper-spectral)

فتوگرافی هوایی (Aerial Photography) در مقابل ارتوفوتوگرافی (Orthophotography)

راهنمای جامع لیدار (Light Detection and Ranging – LiDAR)

سنجش از دور چیست ؟

منابع داده GIS رایگان در سطح جهانی : داده های رستری و برداری

مقدمه ای بر سرویس های نقشه کشی تحت وب (WMS)

علم داده مکانی چیست ؟

تحلیل عوارض سه بعدی

ژئوانالیتیکس: آنالیز داده های مکانی حجیم

فرمت های داده در سیستم اطلاعات جغرافیایی بخش سوم

فرمت های داده در سیستم اطلاعات جغرافیایی بخش دوم

فرمت های GIS و پسوندهای داده مکانی بخش اول

آموزش برنامه نویسی پایتون بخش سی ام

انتشار نخستین تصاویر لندست 9 توسط سازمان هوا و فضای آمریکا (NASA)

آموزش برنامه نویسی پایتون بخش بیست و نهم

آموزش برنامه نویسی پایتون بخش بیست و هشتم

آموزش برنامه نویسی پایتون بخش بیست و هفتم

آموزش برنامه نویسی پایتون بخش بیست و ششم

آموزش برنامه نویسی پایتون بخش بیست و پنجم

معرفی سامانه WEB GIS


آموزش برنامه نویسی پایتون بخش بیست و سوم
کنترل حلقه ها با استفاده از تأیید و اجازه کاربر
مثالی که در ادامه آورده شده است، یک حلقه را 5 بار تکرار می کند. در صورتی که بخواهید، کاربر تصمیم بگیرد که آیا سوال دیگری دریافت کند یا خیر، می توانید از تأیید و اجازه کاربر استفاده کنید. نمونه ای از این ساختار را می توانید در کد زیر ملاحظه کنید:
continueLoop = ‘Y’
while continueLoop == ‘Y’ :
# Execute the loop body once…
# Prompt the user for confirmation
continueLoop = input(“Enter Y to continue and N to quit: “)
کنترل حلقه while با استفاده از یک متغیر
تکنیک رایج دیگر، برای کنترل حلقه تکرار، تعیین یک متغیر ورودی ویژه می باشد که به آن مقدار کنترلی گفته می شود و برای تعیین انتهای حلقه و پایان دادن به آن، مورد استفاده قرار می گیرد. برنامه ای که در زیر مشاهده می کنید، مجموع اعداد صحیح که تعداد آن از پیش مشخص نمی باشد، را خوانده و محاسبه می کند. مقدار ورودی 0 تعیین کننده ورود داده ها است. برای هر ورودی نیاز به استفاده از یک متغیر جدید ندارید. در عوض از یک متغیر به نام data در خط اول استفاده شده تا داده های ورودی را ذخیره سازی نموده و از یک متغیر دیگر به نام sum برای ذخیره سازی مجموع کل داده های ورودی استفاده شده است. هر موقع که یک مقدار خوانده می شود، این مقدار به متغیر data انتساب داده شده و به متغیر sum اضافه می گردد که البته این اتفاق در صورتی که مقدار data صفر نباشد، اتفاق خواهد افتاد.
data = eval(input(“Enter an integer (the input ends ” + “if it is 0): “))
# Keep reading data until the input is 0
sum = 0
while data != 0:
sum += data
data = eval(input(“Enter an integer (the input ends ” + “if it is 0): “))
print(“The sum is”, sum)
احتیاط
از اعداد اعشاری برای کنترل شمارش حلقه های تکرار استفاده نکنید. زیرا این مقادیر تقریبی هستند و می توانند منجر به شمارش غیر دقیق تکرار در حلقه ها شوند.
item = 1
sum = 0
while item != 0: # No guarantee item will be 0
sum += item
item -= 0.1
print(sum)
متغیر item با مقدار 1 شروع می شود و در هر بار تکرار 0.1 از آن کسر می شود. هنگامی که متغیر item به 0 برسد حلقه تکرار باید شکسته شده و پایان بپذیرد. در هر صورت تضمینی وجود ندارد که متغیر Item دقیقاً برابر با 0 شود، زیرا محاسبات اعداد اعشاری تقریبی می باشد. این حلقه در ظاهر به نظر درست می رسد اما در اصل یک حلقه تکرار نامحدود می باشد.
حلقه for
حلقه for در زبان برنامه نویسی پایتون می تواند بر روی هر مقداری که در یک توالی یا رشته قرار دارد تکرار کند. عمدتاً شما می دانید که دقیقاً چند بار، بدنه حلقه باید اجرا گردد، در نتیجه یک متغیر کنترلی می تواند مورد استفاده قرار گرفته تا تعداد اجراهای حلقه را شمارش کند. حلقه ای از این دست را به نام حلقه های با کنترل شمارش می نامند. به طور کلی، این نوع حلقه را می توان به صورت زیر نوشت:
i = initialValue # Initialize loop-control variable
endValue = # a numeric value
while i < endValue:
# Loop body…
i += 1 # Adjust loop-control variable
یک حلقه for را می توان برای ساده سازی حلقه فوق، به جای یک حلقه while مورد استفاده قرار داد. برای ساده سازی حلقه فوق می توان از حلقه for مطابق با فرم زیر استفاده نمود:
for i in range(initialValue, endValue):
# Loop body
به طور کلی سینتکس یک حلقه for به صورت زیر است:
for var in sequence:
# Loop body
یک توالی، چندین آیتم از داده ها را در خود جای داده و یکی پس از دیگری را ذخیره سازی می کند. رشته ها، لیست ها و تاپل ها نمونه ای از توالی شناخته می شوند. این نمونه ها را در زبان پایتون، اشیا توالی یا sequence می نامند. متغیر var در هر بار اجرای حلقه for یک مقدار پی در پی گرفته و تا پایان اجرای حلقه به همین ترتیب پیش می رود.
تابع range دارای دو نسخه می باشد. تابع range را می توانید به صورت range(a) و یا range (a,b) مورد استفاده قرار دهید. Range (a) دقیقاً برابر با range (0,a) می باشد و range (a,b) یعنی تکرار در دامنه عدد a تا b با گام های یک به یک در نظر گرفته شود. فرم کامل تابع range شامل range (a,b,k) است. a یعنی start یا شروع شمارش، b یعنی stop یا انتهای شمارش، و k یعنی step یا گام حرکت حلقه. در کد زیر به نحوه استفاده از تابع range در یک حلقه for اشاره شده است.
>>> for v in range(3, 9, 2):
… print(v)
…
3
5
7
>>>
گام حرکت در تابع Range (3,9,2)، برابر با 2 می باشد. یعنی از عدد 3 تا 9 با گام 2 واحدی حرکت می کند. در نتیجه توالی عددی ایجاد شده برابر با 3 و 5 و 7 خواهد بود و عدد 9 جزء این توالی به حساب نمی آید. تابع Range (a,b,k) می تواند، شمارش معکوس نیز انجام دهد؛ به این صورت که گام حرکت یا k را عدد منفی تعریف کنید. در این صورت بایستی عدد a از عدد b بزرگتر باشد. به مثال زیر توجه کنید:
>>> for v in range(5, 1, -1):
… print(v)
…
5
4
3
2
>>>
نکته
اعدادی که در تابع range تعریف می شوند بایستی اعداد صحیح باشند. برای مثال range (1.5,8.5) یا range(8.5) و یا range (1.5,8.5,1) همگی دستوراتی نادرست خواهند بود.
حلقه تو در تو (Nested loop)
یک حلقه می تواند درون یک حلقه دیگر قرار بگیرد. حلقه های تو در تو یا nested loop شامل یک حلقه بیرونی و یک یا چند حلقه داخلی می باشد. هر بار که حلقه بیرونی یک بار اجرا شود یا یک iteration انجام دهد حلقه های داخلی بایستی تمامی تکرار یا iteration هایشان را انجام دهند تا نوبت به Iteration بعدی حلقه بیرونی برسد.
نکته
اطلاع داشته باشید که یک حلقه تو در تو می تواند زمان زیادی برای اجرا صرف کند. به عنوان مثال حلقه های تو در توی کدهای زیر را در نظر بگیرید که در سه سطح قرار گرفته اند.
for i in range(1000):
for j in range(1000):
for k in range(1000):
Perform an action
کدهای فوق بایستی 1000000000 بار اجرا شوند. در صورتی که با هر بار تکرار 1 میلی ثانیه زمان بگیرید، زمان اجرای کل برای این حلقه تو در تو بیش از 277 ساعت خواهد بود.
حداقل کردن خطاهای عددی
استفاده از اعداد اعشاری در شرایط ادامه حلقه ممکن است منجر به خطاهای عددی گردد. خطاهای عددی شامل اعداد اعشاری اجتناب ناپذیر هستند. در این بخش برنامه نویسان بایستی از این نوع خطاها اطلاع داشته تا در بخش خطایابی و یا debugging از آن استفاده نموده و خطاهای احتمالی را بر طرف کنند.
کلمات کلیدی break و continue
کلمات کلیدی break و continue، کنترل بیشتری بر روی حلقه های تکرار فراهم می آورند.
نکته
دو کلمه کلیدی break و continue را می توان در دستورات بدنه حلقه ها مورد استفاده قرار داد تا کنترل بیشتری بر روی روند اجرای حلقه ها ایجاد کرد. استفاده از break و continue می تواند برنامه نویسی را در مواردی ساده سازی و خلاصه نماید. استفاده بیش از حد از این ساختارها و یا استفاده نادرست و نا به جا از آنها در هر حال می تواند باعث کاهش خوانایی کدها و رفع خطاهای کد گردد.
می توانید از کلمه کلیدی break در یک حلقه برای اتمام سریع حلقه استفاده کنید.
همچنین می توانید از کلمه کلیدی continue در حلقه استفاده کنید. هنگامی که این دستور اجرا شود، حلقه تکرار اخیر پایان پذیرفته و برنامه، تکرار های حلقه را ادامه می دهد. به زبان دیگر، دستور continue تنها همان Iteration را پایان می دهد ولی تکرارهای بعدی حلقه، اجرا می شوند، در حالی که کلمه کلیدی break یا دستور break به طور کلی حلقه را شکسته و از آن خارج می شود.
نکته
برخی زبان های برنامه نویسی دارای دستور goto می باشند. دستور goto به صورت نامشخص کنترل برنامه را به بخش های دیگر برنامه منتقل می کند و آن دستورات را اجرا می کند. این دستور برنامه را در برابر خطاهای احتمالی آسیب پذیر می کند. دستوات break و continue در زبان برنامه نویسی پایتون از دستور goto متفاوت می باشند. این دستورات تنها در دستورات داخل بدنه حلقه کار می کنند. دستور break حلقه را شکسته و بیرون می رود و دستور continue تنها تکرار یا Iteration جاری را می شکند ولی ادامه حلقه اجرا خواهد شد.
خلاصه مطالب
1- دو نوع ساختار تکرار در زبان برنامه نویسی پایتون وجود دارد که شامل حلقه های تکرار while و for است.
2- بخشی از حلقه های تکرار که شامل دستواتی است که اجرای آنها تکرار می شوند را بدنه حلقه های تکرار می گویند.
3- یک بار اجرای بدنه حلقه های تکرار را به نام Iteration می نامند.
4- حلقه تکرار نامحدود، حلقه ای است که به طور نامحدود اجرا می شوند و تکرار آن به صورت نامحدود انجام می شود.
5- در طراحی حلقه ها، بایستی هم ساختار کنترل حلقه و هم بدنه حلقه را در نظر بگیرید.
6- حلقه while ابتدا شرط ادامه حلقه را بررسی می کند در صورتی که شرط درست ارزیابی شود، بدنه حلقه اجرا می گردد در غیر این صورت حلقه شکسته شده و اجرای حلقه پایان می پذیرید.
7- مقدار کنترلی حلقه، متغیری ویژه است که پایان اجرای حلقه را تعیین می کند.
8- حلقه for یک حلقه با کنترل شمارشی است و برای اجرای بدنه حلقه با تعداد تکرار مشخص مورد استفاده قرار می گیرد.
9- دستورات continue و break را می توان در بدنه حلقه های تکرار در زبان برنامه نویسی پایتون مورد استفاده قرار داد.
10- دستور break سریعاً حلقه را شکسته و به طور کامل از آن خارج می شود.
11- دستور continue تنها Iteration جاری را پایان داده و ادامه تکرارهای حلقه را دنبال می کند.

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه زاهدان به شماره NH-41-9

فیلم آموزشی زمین مرجع یا ژئورفرنس لایه ها و داده های مکانی در نرم افزار Global Mapper

آموزش برنامه نویسی پایتون بخش بیستم

آموزش برنامه نویسی پایتون بخش یازدهم (تبدیل نوع و گرد کردن)

مقدمه ای بر برنامه نویسی کامپیوتر (بخش مبانی برنامه نویسی)

دانلود رایگان تصاویر ماهواره ای ژئورفرنس شده با رزولوشن بالا

آموزش برنامه نویسی پایتون بخش پانزدهم

روش نصب نرم افزار Envi 5.6

نقشه متوسط دمای سطح زمین ایران (LST)

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه پیوشک به شماره NG-40-12

روش نصب نرم افزار Arc GIS Pro 2.8

دانلود نرم افزار Arc GIS Pro 2.5 + روش نصب گام به گام

مدلسازی سایه-اندازی ساختمان ها در چشم اندازهای شهری در نرم افزار ArcGIS Pro

آموزش برنامه نویسی پایتون بخش پنجم

آموزش برنامه نویسی پایتون بخش بیست و سوم

فیلم آموزشی زمین مرجع یا ژئورفرنس لایه ها و داده های مکانی در نرم افزار Arc GIS Desktop

کارگاه آموزشی تحلیل داده های رستری با استفاده از زبان برنامه نویسی پایتون

روش برش حواشی نقشه های اسکن شده در نرم افزار Global Mapper

معرفی و دانلود نرم افزار SAGA GIS

دانلود رایگان محاسبه سرعت دانلود و آپلود اینترنت

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش دوم

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش اول

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش ششم

برنامه نویسی پایتون بخش هفتم (متغیرها، دستور انتساب و عبارات)

آموزش برنامه نویسی پایتون بخش بیست و دوم

نقشه های موقعیت سیاسی منطقه مطالعاتی بخش اول

سیکل توسعه نرم افزار

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه سرآوان به شماره NG-41-2

آموزش ویدئویی تحلیل های هیدرولوژی در نرم افزار ArcGIS Pro

روش دانلود لایه های برداری لایه ها و عوارض شهری OSM

دانلود نقشه راههای ایران استایل 2

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه تربت جام به شماره NI-41-1

نرم افزار Slope Calculator V.1 برای استخراج نقشه شیب از مدل رقومی ارتفاعی با استفاده از 5 الگوریتم مختلف

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش پنجم

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش چهارم

نرم افزار Coordinate Format Changer V.1 برای تبدیل فرمت مختصات

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش سوم

آموزش تحلیل های هیدرولوژی در نرم افزار Arc GIS Desktop

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه نره نو به شماره NH-41-14

دیدگاهتان را بنویسید