این مقاله را میتوانید در مدت زمان 5 دقیقه مطالعه کنید منتشر شده در تاریخ: آبان ۸ام, ۱۴۰۰ آخرین بروزرسانی: دی ۱۳ام, ۱۴۰۱
یکیاز مهم ترین بخش ها در یادگیری زبان برنامه نویسی پایتون در مراحل مقدماتی، آشنایی با شزط ها، حلقه ها و در نهایت حلقه های تو در تو است. یکی از رایج ترین مباحث در تمرینات این بخش، ساخت الگوها و اشکال مختلف با علائم مختلفی چون «*» و «$» و «#» است.
اگر شما هم مانند بسیاری از نوآموزان زبان برنامه نویسی پایتون در پیاده سازی این اشکال با چالش مواجه اید، من قصد دارم در این مقاله منطق و اصول کلی برای کدنویسی تمام این اشکال را به شما آموزش دهم تا شما بتوانید یکبار برای همیشه این موضوع را به خوبی فرا بگیرید و از آن در حل الگوهای مختلف استفاده کنید.
آنچه در این نوشته خواهیم داشت
۱) اساس این الگوها افزایش یا کاهش هرم می باشد، مابقی اشکال از قبیل 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=" ")
کد نهایی:
size = 5 # Create a list of rows for i in range(0, size): # Create a list of columns for j in range(0, size): print("*", end="") print()
نکته بسیار مهم: پس از پایان حلقه نیاز است تا یک ()print نیز خارج از لوپ قرار بگیرد تا بعد از چاپ یک خط، برنامه به خط بعدی حرکت کند.
نکته بسیار مهم ۲: برای اینکه مربع شما، تبدیل به مستطیل نشود حتما باید ” “ = end را در print قرار دهید اگر این عبارت وجود نداشته باشد، مربع شما به مستطیل تبدیل خواهد شد. پارامتر end نیز به شما این اطمینان را می دهد تا بعد از چاپ هر ستاره فاصله مشخصی تا ستاره بعدی به وجود بیاید.
نکته بسیار مهم ۳: شما در print می توانید به جای علامت * از هر علامت دیگری استفاده کنید.
برای نوشتن این الگو، به کد قبلی نگاه کنید:
ما میدانیم که حلقه اول مربوط به ردیف ها و حلقه دوم مربوط به ستون هاست.
چون ما همچنان ۵ ردیف داریم پس حلقه بیرونی تغییر نمی کند اما ما در ستون های مختلف تعداد ستاره های متفاوتی در خروجی چاپ می کنیم بنابراین حلقه داخلی قطعا با تغییرات مواجه خواهد بود و هر سطر نسبت به سطر قبلی خودش یک ستاره بیشتر خواهد داشت. بنابر این حلقه داخلی به جای بازه n در بازه i+1 طی خواهد شد.
کد مثلث افزایشی:
# pyramid star pattern n = 5 for i in range(1, n+1): for j in range(n - i): print(' ', end='') for k in range(2 * i - 1): print('*', end='') print()
مجدد از کد مربع شروع میکنیم. در این الگوریتم نیز مجددا تعداد سطر های ما تغیر نمی کند پس حلقه اولی بدون تغییر باقی می ماند اما هر سطر نسبت به سطر قبل یک ستاره کمتر دارد.
پس کد را به شکل زیر تغییر می دهیم.
# reverse pyramid pattern n = 5 for i in range(1, n+1): # printing spaces for j in range(i-1): print(' ', end='') # printing stars for j in range(2*(n-i)+1): print('*', end='') print()
به مدل های دیگر الگوریتم های ستاره توجه کنید. تمام الگوریتم های دیگر حلقه های تو در تو بر همین اساس کد نویسی شده اند ترکیبی از مثلث هایی که شما فضای خالی یا ستاره هستند.
نوشتن کد این مدل از هرم ها کمی متفاوت از مدل های قبلی است ولی دقیقا بر همان اصول پا برجاست. اگر کم دقیق تر به این شکل نگاه کنیم متوجه خواهیم شد که ما با یک مربع روبرو هستیم که توسط قطر مربع نصف شده است، بخش سمت چپ آن یک مثلث است که خطوط آن را فضای خالی تشکیل داده و سمت راست آن مثلثی است که از ستاره تشکیل شده است.
پس کد ما از سه حلقه تشکیل شده است. یک حلقه بیرونی که مانند تمامی مثال های قبلی بر تعداد سطرها دلالت می کند و دو حلقه درونی که ستون ها را با دو علامت فضای خالی و ستاره کامل می کند.
به کد زیر دقت کنید و خط به خط آن را دنبال کنید.
# Left triangle star pattern n = 5 for i in range(1, n+1): # internal loop run for i times for k in range(1, i+1): print("*", end="") print()
این الگوریتم از دو بخش تشکیل شده است: مثلث کاهشی فضای خالی، مثلث افزایشی ستاره. بنابر این کافیست دو کد ساده مثال های قبل را با هم ترکیب کنیم و از یک حلقه خارجی و دو حلقه داخلی استفاده کنیم. به کد زیر توجه کنید:
# right triangle star pattern size = 5 for i in range(size): for j in range(1, size - i): print(" ", end="") for k in range(0, i + 1): print("*", end="") print()
این الگوریتم نیز مانند مثال های قبلی است، متشکل از یک مثلث خالی کاهشی و دو مثلث افزایشی و کاهشی با علامت ستاره.
به کد زیر دقت کنید:
print('Hill Pattern\n') n = 5 for i in range(n): for j in range(i,n): print(' ', end = ' ') for j in range(i): print('*' , end = ' ') for j in range(i+1): print('*' , end = ' ') print()
این الگو نیز کاملا مشابه الگوهای قبلی است و از همان منطق پیروی می کند، بنابر این از توضیح مجدد آن خودداری می کنم و شما را به مشاهده و تحلیل کد زیر دعوت می کنم:
print('Reverse Hill Pattern\n') n = 5 for i in range(n): for j in range(i+1): print(' ', end = ' ') for j in range(i,n-1): print('*' , end = ' ') for j in range(i,n): print('*' , end = ' ') print()
در این بخش از سری مقالات آموزش پایتون آکادمی آمانج یاد گرفتیم تا الگوهای مختلفی را در پایتون بنویسیم و با حلقه های تو در تو بیشتر آشنا شویم. همانطور که مشاهده فرمودید نوشتن کد این الگوها تماما بر اصول مشخصی استوار است. کافی است تا با منطق این الگوها آشنا شوید تا از پس هر سوالی به راحتی بر بیایید. اگر سوالی در رابطه با الگوهای بالا داشید و یا بخشی را متوجه نشدید حتما در انتهای مقاله سوالات خود را با ما در میان بگذارید. امیدوارم مطالعه این مقاله برای شما مفید باشد.
از یادگیری ماشین می توان در صنایع مختلف با اهداف مختلف استفاده کرد. ماشین لرنینگ باعث افزایش بهره وری در صنایع می شود، به بازاریابی محصول کمک کرده و پیش بینی دقیق فروش را ساده تر می کند. پیش بینی های دقیق پزشکی و تشخیص ها را تسهیل می کند. دقت در قوانین و مدل های مالی را بهبود می بخشد. به سیستم های توصیه گر، الگوریتم های فرا ابتکاری و حرکت ربات ها کمک خواهد کرد. در بحث فروش میتواند محصولات مناسب تری را به مشتری پیشنهاد دهد( با کمک به تقسیم بندی بهتر و پیش بینی دقیق طول عمر محصولات ) و ...
استفاده از سیستم های ماشین لرنینگ می تواند تا حد زیادی حجم کاری ما را کاهش دهد. به خصوص کارهایی که نیاز به آنالیز حجم عظیمی از داده و تصمیم گیری بر اساس این داده ها را دارد بسیار تسهیل می کند. سیستم های مبتنی بر ماشین لرنینگ ظرفیت انجام کار صد نفر را همزمان دارد و تنها به کمک ماشین ها می توان بدون صرف وقت و انرژی زیاد، کارهای سنگین را انجام داده و در عین حال پول و درآمد بیشتری کسب کرد. ماشین لرنینگ با خودکارسازی فرایندها و صرفه جویی در زمان، به ما کمک می کند تا بتوانیم زمان و انرژی خود را بر تصمیم گیری های پیچیده تری متمرکز کنیم.
ادامه...
از یادگیری ماشین می توان در صنایع مختلف با اهداف مختلف استفاده کرد. ماشین لرنینگ باعث افزایش بهره وری در صنایع می شود، به بازاریابی محصول کمک کرده و پیش بینی دقیق فروش را ساده تر می کند. پیش بینی های دقیق پزشکی و تشخیص ها را تسهیل می کند. دقت در قوانین و مدل های مالی را بهبود می بخشد. به سیستم های توصیه گر، الگوریتم های فرا ابتکاری و حرکت ربات ها کمک خواهد کرد. در بحث فروش میتواند محصولات مناسب تری را به مشتری پیشنهاد دهد( با کمک به تقسیم بندی بهتر و پیش بینی دقیق طول عمر محصولات ) و ...
استفاده از سیستم های ماشین لرنینگ می تواند تا حد زیادی حجم کاری ما را کاهش دهد. به خصوص کارهایی که نیاز به آنالیز حجم عظیمی از داده و تصمیم گیری بر اساس این داده ها را دارد بسیار تسهیل می کند. سیستم های مبتنی بر ماشین لرنینگ ظرفیت انجام کار صد نفر را همزمان دارد و تنها به کمک ماشین ها می توان بدون صرف وقت و انرژی زیاد، کارهای سنگین را انجام داده و در عین حال پول و درآمد بیشتری کسب کرد. ماشین لرنینگ با خودکارسازی فرایندها و صرفه جویی در زمان، به ما کمک می کند تا بتوانیم زمان و انرژی خود را بر تصمیم گیری های پیچیده تری متمرکز کنیم.
ادامه...
همش جواب نمیده