ساخت الگو با حلقه های تو در تو

  این مقاله را میتوانید در مدت زمان 4 دقیقه مطالعه کنید   منتشر شده در تاریخ: آبان ۸ام, ۱۴۰۰   آخرین بروزرسانی: آبان ۸ام, ۱۴۰۰


یکیاز مهم ترین بخش ها در یادگیری زبان برنامه نویسی پایتون در مراحل مقدماتی، آشنایی با شزط ها، حلقه ها و در نهایت حلقه های تو در تو است. یکی از رایج ترین مباحث در تمرینات این بخش، ساخت الگوها و اشکال مختلف با علائم مختلفی چون  «*» و «$» و «#»  است.

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

 

اساس ساخت اشکال در زبان پایتون

۱) اساس این الگوها افزایش یا کاهش هرم می باشد، مابقی اشکال از قبیل hill pattern، Diamond و… از ترکیب این اشکال به دست می آیند.

۲) اجرای کد از بالا به پایین و از چپ به راست است و خلاف جهت آن برنامه عمل نمی کند.  

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

 

ساخت الگوهای پایتون با حلقه های تو در تو

برای نوشتن کد الگوهای پایتون، پاسخ به این سوال اهمیت بالایی دارد.

سایز الگو چه قدر است. منظور من از سایز این است که الگوی ما از چند ردیف ساخته شده است. تعداد ردیف ها در این دست الگوها همان عددی است که از کاربر تحت عنوان input  میگیریم.

پس گام اول در ساخت این الگوها مشخص کردن اندازه الگوست که به دو طریق انجام می گردد:

n = int(input( “enter a positive number:”))

def pattern (n)

 

استفاده از حلقه های تو در تو برای ساخت مربع

lما در این بخش نوشتن الگوریتم هرم های مختلف با حلقه های تو در تو را با ساده ترین شکل یعنی یک مربع آغاز می کنیم.

اگر از شما خواسته شود که یک ستاره در ترمینال چاپ کنید. کافی است دستور (“*”) print  را اجرا کنید.

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

برای این کار ما می توانیم از کد زیر استفاده کنیم

n = 5

for i in range(n)

Print(“*”)

 

با استفاد از این حلقه ما در ۵ سطر متوالی ۱ ستاره مشاهده خواهیم کرد. اما ما می خواهیم در هر یک خط ۵ ستاره مشاهده کنیم بناابر این باید کد بالا را به کد زیر تغییر دهیم.

n = 5

for i in range(n)

Print(“*”, end= ” ")

 

حال اگر ما بخواهیم یک مربع یا ستاره درست کنیم کافی است این دو حلقه را در دو جهت افقی و عمودی با هم ترکیب کنیم.

بدین شکل

for i in range(n)

for j in range(n)

print(“*”, end=" ")

 

کد نهایی:

الگوی مربع با ستاره

 

نکته بسیار مهم: پس از پایان حلقه نیاز است تا یک ()print نیز خارج از لوپ قرار بگیرد تا بعد از چاپ یک خط، برنامه به خط بعدی حرکت کند.

نکته بسیار مهم ۲: برای اینکه مربع شما، تبدیل به مستطیل نشود حتما باید ”  “ = end  را در print قرار دهید اگر این عبارت وجود نداشته باشد، مربع شما به مستظیل تبدیل خواهد شد. پارامتر end نیز به شما این اطمینان را می دهد تا بعد از چاپ هر ستاره فاصله مشخصی تا ستاره بعدی به وجود بیاید.

نکته بسیار مهم ۳: شما در print می توانید به جای علامت *  از هر علامت دیگری استفاده کنید.

 

 increasing triangle

برای نوشتن این الگو، به کد قبلی نگا کنید:

ما میدانیم که حلقه اول مربوط به ردیف ها و حلقه دوم مربوط به ستون هاست.

چون ما همچنان ۵ ردیف داریم پس حلقه بیرونی تغییر نمی کند اما ما در ستون های مختلف تعداد ستاره های متفاوتی در خروجی چاپ می کنیم بنابراین حلقه داخلی قطعا با تغییرات مواجه خواهد بود و هر سطر نسبت به سطر قبلی خودش یک ستاره بیشتر خواهد داشت. بنابر این حلقه داخلی به جای بازه n  در بازه  i+1 طی خواهد شد.

کد مثلث افزایشی:

مثلث افزایشی پایتون

 

 decreasing triangle

مجدد از کد مربع شروع میکنیم. در این الگوریتم نیز مجددا تعداد سطر های ما تغیر نمی کند پس حلقه اولی بدون تغییر باقی می ماند اما هر سطر نسبت به سطر قبل یک ستاره  کمتر دارد.

پس کد را به شکل زیر تغییر می دهیم.

هرم کاهشی با پایتون

 

 

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

 

Left sided triangle

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

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

به کد زیر دقت کنید و خط به خط آن را دنبال کنید.

هرم های مختلف با حلقه های تو در تو

 

 

Right sided triangle

این الگوریتم از دو بخش تشکیل شده است: مثلث کاهشی فضای خالی، مثلث افزایشی ستاره. بنابر این کافیست دو کد ساده مثال های قبل را با هم ترکیب کنیم و از یک حلقه خارجی و دو حلقه داخلی استفاده کنیم. به کد زیر توجه کنید:

 

مثلث کاهشی با پایتون

Hill pattern triangle

این الگوریتم نیز مانند مثال های قبلی است، متشکل از یک مثلث خالی کاهشی و دو مثلث افزایشی و کاهشی با علامت ستاره.

به کد زیر دقت کنید:

hill triangle

نکته مهم: همانطور که میبینید، مرکز الگوی خروجی از دو لاین به دست آمده و شکل ما را به هم ریخته است.

دلیل این موضوع چیست؟

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

به کد زیر دقت کنید:

correct hill pyramid

 

Reverse hill triangle

این الگو نیز کاملا مشابه الگوهای قبلی است و از همان منطق پیروی می کند، بنابر این از توضیح مجدد آن خودداری می کنم و شما را به مشاهده و تحلیل کد زیر دعوت می کنم:

reverse hill triangle

 

جمع بندی

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

 

 

آیا این مطلب برای شما مفید بود؟

امتیازشو ثبت کنید

میانگین / 5. تعداد رای

اولین نفر شما امتیاز دهید

0 0 رای
امتیازدهی به مقاله
دنبال کردن
با خبر کردن از
guest
0 دیدگاه
بازخورد داخلی
دیدن همه نظرات
آکادمی آمانج
مهارت آموزی جهت ورود به بازار کار

تاییدیه ها

تهران - ستارخان، خیابان کوثر دوم، پلاک ۱۰، واحد ۳

آیا این مطلب برای شما مفید بود؟

امتیازشو ثبت کنید

میانگین / 5. تعداد رای

اولین نفر شما امتیاز دهید