تا به اینجا دستوراتی که یاد گرفته ایم از اول تا آخر اجرا شدند بدون هیچ توقف! بدون هیچ شرطی! آیا این روال همیشگی است؟ اگر بخواهیم سنسوری به برد رزبری پای متصل کنیم و این سنسور تحت شرایط خاصی دستوراتی را اجرا کند و یا اصلا اجرا نکند؟ تکلیف چیست؟ بایستی از ساختارهای کنترلی در پایتون برای کنترل جریان برنامه استفاده کنیم. برای کنترل جریان برنامه از ساختار تصمیم و ساختار تکرار استفاده میکنیم. در ادامه با مرجع تخصصی پایتون با رزیری پای به زبان فارسی، دیجی اسپارک همراه باشید.
ساختارهای شرطی
یکی از ساختارهای کنترلی در پایتون ساختار شرطی است. زمانیکه در برنامه نویسی و اجرای یک پروژه نیاز به تصمیم گیری داشته باشیم باید از ساختارهای شرطی در برنامه استفاده کنیم. در این صورت اگر بخواهیم یک یا چند شرط بررسی شوند و در صورت صحیح بودن و یا نبودن دستوراتی اجرا شوند کاربرد دستورات و ساختارهای شرطی مشخص میشود. روش فراخوانی دستور شرطی به صورت زیر است. در صورت برقرار بودن شرط، یک یا چند دستور اجرا میشود.
if conditions: block of statement(s)
در دستور if بعد از نوشتن شرط condition علامت : قرار میگیرد و در خط بعد با اعمال تورفتگی در برنامه نوشته میشود. دستور if شرط را بررسی میکند و بر اساس نتیجه ی شرط تصمیم میگیرد که کدام بخش اجرا شود.
if condition: statement1 statement2
در این حالت مثلا عبارت condition مورد ارزیابی قرار میگیرد که میتواند ارزش درستی و نادرستی داشته باشد. دقت داشته باشید حتما از کولن بعد از عبارت استفاده کنید.
کولن :
در مرحله بعدی دستورات نوشته شده است که حتما باید از تورفتگی برای نوشتن ان ها نسبت به دستور if استفاده شود. اگر عبارت ارزش درستی داشته باشد یعنی True باشد، دستورات اجرا میشود. در غیر اینصورت هیچکدام اجرا نمیشود.
ساختار شرطی if else دوگانه
اگر بخواهیم دستورات برنامه در صورت برقرار بودن اجرا شوند و هم در صورت عدم برقراری مجموعه ی دیگری از دستورات اجرا شوند، از ساختار شرطی if else استفاده میکنیم. بدین صورت که اگر شرط برقرار باشد مجموعه از دستورات و اگر شرط برقرار نباشد، مجموعه دستورات دیگری اجرا میشود.
if test expression: statement for if else: statement for else
# تست با عدد بزرگتر از صفر number = 10 if number >=0: print("positive number") else: print("negative number")
#تست با عدد کوچکتر از صفر number = -10 if number >=0: print("positive number") else: print("negative number")
ساختار شرطی if elif else چندگانه
زمانیکه بخواهیم چندین شرط را روی یک عبارت بررسی کنید. باید از دستورات تو در تو استفاده کنید.
if test expression: statement for if elif test expression: statement for elif else: statement for else
number = 0 if number > 0: print("Positive number") elif number ==0: print("Zero number") else: print("negative number")
ساختار تکرار
ساختار تکرار یکی دیگر از ساختارهای کنترلی در پایتون است. در بسیاری از مواقع نیاز به تکرار پذیری دستورات در برنامه داریم! اگر کدهای پایتون را قبلا دیده باشید در بسیاری از پروژه های راه اندازی سنسورها با تکرار بسیار سر و کار داریم. حالا تصور کنید اگر تعداد دفعات تکرار زیاد باشد عملا نوشتن کدنویسی ساده نخواهد بود! برای سرعت بخشیدن به کدنویسی ساختار تکرار وجود آمده است تا یک یا چندین دستور را بر اساس تعداد دفعات تکرار مورد نیاز در برنامه تکرار میکند.
ساختار تکرار while
ساختار تکرار while به این صورت عمل میکند که تا زمانیکه به شرط پایان نرسیده باشد، اجرای دستورات بلاک Block خود را تکرار میکند. در ساختار تکرار while اگر شرط نوشته شده برقرار نباشد، دستورات نوشته شده در ادامه آن بینهایت بار اجرا میشود و برای خارج شدن از این حلقه باید از کلیدمیانبر ctrl+c استفاده کنید.
while test_expression: statement for while
i = 1 while i < 10: print(i) i += 1
number = 10 sum = 0 a = 1 while a<= number: sum = sum + a a = a +1 print("result:", sum)
>>> %Run test2.py result: 1 result: 3 result: 6 result: 10 result: 15 result: 21 result: 28 result: 36 result: 45 result: 55
ساختار تکرار for
هنگامی که مجموعه مشخصی از دیتاها را داشته باشید، جهت پیمایش و کار با عناصر داده ها از ساختار تکرار for استفاده میکنیم. پردازش لیست ها، تاپل ها و رشته ها از for استفاده میشود.
for val in sequence: loop statement
منظور از val شمارنده حلقه است که به عناصر مجموعه اشاره دارد و sequence مجموعه ای از عناصر مشخص است که شمارنده حلقه در مرحله اول اجرا به اولین عنصر و در مرحله دوم به دومین عنصر آن و همین روند ادامه خواهد داشت.
numbers = [1,2,3,4,5] sum = 0 for val in numbers: sum = sum+val print("result", sum)
message = 'theladypi' for i in message: print(i)
نکته: برای کنترل حلقه ها در برنامه از سه دستور break, continue, pass استفاده میکنیم.
روش دوم فراخوانی ساختار for به صورت زیر است:
for expression in interable: statement1 else: statement2
digits = [0, 1, 5] for i in digits: print(i) else: print("No items left.")
استفاده از تابع ()range با for
تابع range دنباله ای از اعداد را تولید میکند که برای کنترل حلقه ی تکرار for استفاده میشود.
range(a) منظور از تابع a اعدادی از ۰ تا a-1 را تولید میکند
range(a,b) منظور از این تابع تولید اعداد بین a تا b-1 است.
ورودی rang میتواند به صورت عدد صحیح باشد. در صورت تولید لیستی از اعداد با Range ابتدا با استفاده از list به نوع لیست list تبدل شده و در نهایت از range استفاده میکنیم.
number = eval(input("add number")) for a in range(1,number): print(a)
استفاده همزمان از حلقه while for
نوشتن یک حلقه داخل حلقه دیگر به صورت زیر تعریف میشود.
while expression: while expression: statement(S) statement(S) for val in sequence: for val in sequence: statement(S) statement(s)
names = ['a', 'b', 'c' ,'d'] for name in names: counter = 0 while counter <4: print(name, end='') counter = counter + 1 print()
حلقه for تو در تو
برای تکرار دستورات میتوانید دو یا چند for را داخل یکدیگر بنوبسید. تورفتگی ها مشخص میکند کدام دستور مرتبط با کدام حلقه است. دستورات statement 1 در حلقه for j قرار دارد و اجرا میشود.
:for i in range (n) :for j in range(m) statement 1 statement2
جمع بندی لیدی پای
یکی از مهم ترین بخش های یادگیری پایتون در آموزش پنجم نهفته شده است. برای شرط نویسی سنسورها و فرمان و اعمال ورودی نیاز به استفاده از ساختارهای تصمیم و تکرار داریم که قبلا در برنامه نویسی آردوینو هم کار کرده بودیم. این بخش نیاز به تمرین و تکرار مدام دارد و پیشنهاد میشود مثال های متعددی را اجرا کنید. ساختار تصمیم if else است و ساختار تکرار شامل while for است که در متن آموزش همراه با مثال بررسی شده است.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام و خسته نباشید
برای شرط نویسی سنسورها از زبان برنامه نویسی پایتون نمیشه استفتاده کرد یعنی حتما باید میکروپایتون باشه
شما چطور اجرا کردید؟
با سلام
اگر ماژول برای پایه های GPIO توسعه یافته باشد، میتوانید برای کدنویسی استفاده کنید. اما در حالت کلی همان میکروپایتون فقط پیشنهاد داده میشود.