میتوانید از محتویات این باکس بگذرید و یکراست به سراغ نوشته اصلی بروید. قبل از خرید اشتراک وفاداری، مزایای آن را از طریق این پیوند مشاهده کنید. لطفا تنها بعد از خواندن «مزایای خرید اشتراک» اقدام به خرید کنید.
گاهی بیش از دو احتمال وجود دارد و ما نیاز به شاخههای بیشتری در برنامهمان داریم. یکی از راههای نوشتن این مدل شرطها استفاده از شرطهای زنجیروار یا زنجیرهای یا Chained Conditional است.
if x < y: print('x is less than y') elif x > y: print('x is greater than y') else: print('x and y are equal')
elif خلاصهشدهی else if است. در اینجا نیز تنها یکی از شاخهها اجرا میشوند. هر کدام که صحیح از آب در بیاید، همان اجرا شده و برنامه از بدنهی شرط خارج میشود.
تصویر 03-03
محدودیتی برای استفاده از elif وجود ندارد. اگر else یا «درغیراینصورت» کلی وجود دارد، بایستی آن را در انتهای بدنهی شرط بیاورید.
if choice == 'a': print('Bad guess') elif choice == 'b': print('Good guess') elif choice == 'c': print('Close, but not correct')
هر شرط به ترتیب از بالا به پایین بررسی میشود و در صورت غلط بودن، شرط بعدی مورد آزمون قرار میگیرد. زمانی که هر یک از شرطها صحیح باشد، گزارهی موجود در آن اجرا و برنامه از بدنهی شرط خارج میشود.
حتی اگر دو شرط در یک بدنهی اجرای شرطی درست از آب در بیاید، اولی اجرا شده و برنامه از بدنهی شرط خارج میشود. به مثال زیر دقت کنید:
x = 4 if x < 10: print ('x is less than 10') elif x < 5: print ('x is greater than 5') else: print ('nothing')
مقدار x برابر با 4 است، در نتیجه شرط اول و دوم درستاند، ولی برنامه فقط گزارهی print (‘x is less than 10’) را چاپ خواهد کرد.
شرطهای تو در تو
یک شرط میتواند در داخل یک شرط دیگر نیز قرار بگیرد. به مثال زیر با سه شاخهی مجزا دقت کنید:
if x == y: print 'x and y are equal' else: if x < y: print 'x is less than y' else: print 'x is greter than y'
شرط بیرونیتر دارای دو شاخهی مجزاست. شاخهی اول شامل یک گزارهی ساده میشود. شاخهی دوم خود شامل یک شرط دیگر میشود، که دارای دو شاخه است. دو شاخهی دیگر خود شامل گزارههای سادهای میشوند ولی آنها هم میتوانند حاوی شرطهای بیشتر یا گزارههای پیچیدهتر شوند.
با وجود اینکه تو رفتگی ساختار متن کد، شروط داخلی را مشخص میکند، با این حال شرطهای تو در تو به سرعت خوانایی خود را از دست میدهند و در کل بهتر است که تا زمانی که احتیاج به شرطهای تو در تو ندارید، از آنها استفاده نکنید. به عنوان مثال، کد زیر را ببینید:
if 0 < x: if x < 10: print('x is a positive single-digit number.')
گزارهی print تنها در صورتی که هر دو شرط صحیح باشند اجرا میشود. این کد را میتوانید به صورت زیر و با استفاده از عملگر and بارنویسی کنید تا از شروط تو در تو اجتناب کرده باشید.
if 0 < x and x < 10: print('x is a positive single-digit number.')
پیشتر اشاره کرده بودیم که بایستی خطوط داخل بدنه if با فاصلههای مساوی نسبت به کد اصلی مشخص شوند. در خصوص شرطهای تو در تو، بایستی که گزارههای شرطِ داخلی× مقدار بیشتری تو رفتگی داشته باشند تا پایتون بفهمد که گزارهها مربوط به بدنهی کدام if است. این موضوع برای while و for و… که نیاز به تو رفتگی دارند، نیز صدق میکند.
این نوشته تحت مجوز کرییتیو کامنز BY – NC و حمایت موسسه تحقیقاتی رامونا ارائه میشود. شما میتوانید با توجه به مفاد این گواهی از آن استفاده کنید.
پاسخ دهید