(پایتون) حلقه ها. حلقه با شمارنده - برای


حلقه ها

موقعیتی را تصور کنید که باید کلمه "سلام» 10 بار. چه کنیم؟
می توانید دستور را 10 بار بگیرید و بنویسید print("Hello") <پیش> چاپ ("سلام") چاپ ("سلام") چاپ ("سلام") چاپ ("سلام") چاپ ("سلام") چاپ ("سلام") چاپ ("سلام") چاپ ("سلام") چاپ ("سلام") print("سلام")
اما اگر شما نه 10 بار، بلکه 20، 30، 40 بار نیاز داشته باشید، چه؟ و اگر 200 بار؟ در این صورت کپی کردن زمان بسیار زیادی طول خواهد کشید. و اگر لازم است که خود کاربر بتواند انتخاب کند که چند بار باید برخی اطلاعات را روی صفحه نمایش دهد؟ 

یک ساختار خاص به ما کمک می کند تا با این کار کنار بیاییم که حلقه
نامیده می‌شود.  
حلقه - یک ساختار الگوریتمی است که در آن توالی خاصی از دستورات چندین بار تکرار می شود.< /div>
در اکثر زبان های برنامه نویسی دو نوع حلقه وجود دارد: یک حلقه با متغیر (for) و یک حلقه با یک شرط (while)
بیایید آشنایی خود را با چرخه ها از نوع اول شروع کنیم.
 

حلقه با یک متغیر یا با تعداد مشخصی از مراحل (حلقه برای)

اغلب اتفاق می افتد که تعداد تکرارهای هر عمل را می دانیم یا می توانیم با استفاده از داده های شناخته شده تعداد تکرارها را محاسبه کنیم. برخی از زبان های برنامه نویسی دستوری دارند که با دستور
به زبان روسی نوشته می شود تکرار (تعداد_تکرار).

در این صورت می توانیم تعداد تکرار مشخصی را مشخص کنیم. 
جالب است که ببینیم این چرخه در سطح ماشین چگونه کار می کند:
1. یک سلول حافظه خاص در حافظه اختصاص داده می شود و تعداد تکرارها روی آن نوشته می شود،
2. وقتی برنامه یک بار بدنه حلقه را اجرا می کند، محتویات این سلول (counter) یک کاهش می یابد.
3. اجرای حلقه زمانی به پایان می رسد که این سلول صفر شود.

چنین ساختاری در پایتون وجود ندارد، اما یک for وجود دارد.
 
باید به خاطر بسپارید!
شکل کلی عملگر حلقه for به شرح زیر است: <پیش> برای <متغیر تعداد> در <مقادیر متغیر شمارنده>: بدنه حلقه     #
1. نام متغیر شمارنده می تواند هر چیزی باشد (بیشتر از حرف i استفاده می کنند)
2. بدنه حلقه با یک شیفت به راست، نسبت به خط با سربرگ حلقه (for) نوشته می شود. استاندارد PEP8 با 4 فاصله جابجا می شود.
 
بیایید نمونه هایی از نحوه نوشتن خروجی کلمه "سلام» 10 بار.
 
مثال 1
<پیش> برای i در محدوده (10): # برای متغیر i قابل تغییر در محدوده (در محدوده)   # 0 تا 10 (10 شامل نمی شود) print("سلام") # print سلام متغیر   شمارنده ای از تکرارها (مراحل) تکمیل شده حلقه است. در این مورد، حلقه برای i = 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 اجرا می شود. این دقیقاً 10 برابر است.
یک برنامه می تواند متفاوت نوشته شود.
 
مثال 2
<پیش> برای i در [0، 1، 2، 3، 4، 5، 6، 7، 8، 9]: چاپ ("سلام") در مثال 2، تمام مقادیر متغیر i را که باید برای آن حلقه بزنیم، فهرست می کنیم. با تعداد زیاد مقادیر، استفاده از تابع داخلی range().
راحت تر است. دنباله ای از مقادیر ساخته شده توسط تابع range() محدود است. حلقه همیشه به پایان می رسد. 

ویژگی های حلقه for

چگونه می توان مرحله را در ترتیب مقادیر تغییر داد و از ابتدا شروع نکرد؟ تابع  range() به‌طور پیش‌فرض، دنباله‌ای می‌سازد که در آن هر عدد بعدی 1 بزرگتر از عدد قبلی است. می‌توانید از تابع محدوده در ورودی دیگری استفاده کنید.

شکل کلی ورودی تابع به شرح زیر است: <پیش> محدوده ([شروع]، توقف[، مرحله])
  • شروع: شماره شروع دنباله.
  • stop: اعدادی را تا عدد داده شده تولید می کند، اما شامل آن نمی شود.
  • گام: تفاوت بین هر عدد در دنباله (مرحله)

شما باید به یاد داشته باشید!
  • همه پارامترها باید اعداد صحیح باشند:
  • هر یک از پارامترها می تواند مثبت یا منفی باشد.
  • range() (و به طور کلی پایتون) بر اساس شاخص 0 است. این به این معنی است که لیست فهرست از 0 شروع می شود نه از 1.  آخرین عدد صحیح تولید شده توسط تابع  range() به stop بستگی دارد اما شامل آن نمی شود. برای مثال، range(0, 5) اعداد صحیح 0، 1، 2، 3، 4، بدون احتساب 5 را ایجاد می کند.


مثال 1
<پیش> برای i در محدوده (10، 0، -1): چاپ (i*i) این برنامه مربع های اعداد طبیعی از 10 تا 1 را به ترتیب نزولی نمایش می دهد
  • 10: اولین عدد در دنباله.
  • 0: شماره پایان دنباله (بدون احتساب این عدد).
  • -1: مرحله


مثال 2
<پیش> برای i در محدوده (0، 101، 5): چاپ (i) این برنامه تمام اعداد از 0 تا 100 را با افزایش 5 نمایش می دهد
  • 0: اولین عدد در دنباله.
  • 101: شماره پایان دنباله (بدون احتساب این عدد).
  • 5: مرحله

N بار تکرار کنید

همه برنامه‌هایی که دارای حلقه for هستند که تاکنون نوشته‌ایم را نمی‌توان جهانی نامید. زیرا ما خودمان تعداد تکرارهای بدنه حلقه را تنظیم می کنیم. 
اما اگر تعداد تکرارها به مقدار دیگری بستگی داشته باشد چه؟ برای مثال، خود کاربر می خواهد تعداد تکرارهای چرخه را تنظیم کند.
در این مورد چه باید کرد؟
همه چیز بسیار ساده است. به جای مقادیر شروع و پایان عددی، می‌توانیم از هر متغیری استفاده کنیم که کاربر بتواند آن را محاسبه یا تنظیم کند.

به عنوان مثال، ما باید مربع های اعداد را از 1 تا N نمایش دهیم، جایی که مقدار متغیر N از صفحه کلید توسط کاربر.
برنامه به شکل زیر خواهد بود: <پیش> N = int(input()) # ورودی N از صفحه کلید برای i در محدوده (1، N+1): حلقه #: برای همه i از 1 تا N  - متغیر i # به ترتیب مقادیری از 1 تا N می گیرد   print("square", i, "=", i*i)  # چاپ مربع یک عدد هنگام ورود به حلقه، دستور انتساب i = 1 اجرا می شود و سپس متغیر i با هر مرحله یک عدد افزایش می یابد (i += 1). حلقه در حالی اجرا می شود که شرط i <= N درست است. در بدنه حلقه، تنها دستور خروجی، خود عدد و مربع آن را بر اساس فرمت مشخص شده روی صفحه چاپ می کند.
برای مربع یا سایر توانای کم، بهتر است از ضرب استفاده کنید.

برنامه را اجرا کنید و نتیجه کار آن را با مقادیر مختلف متغیر N ببینید.