در این آموزش به کامل ترین صورت ممکن با یه عالمه مثال و تمرین به بررسی دستور حلقه for در پایتون (python) میپردازیم و خط به خط کدها رو توضیح میدیم! پس با ما همراه باشید!
در این مثال ساده میخواهیم اعداد 1 تا را 10 را چاپ کنیم! توجه کنید که ماهیتاً اینکار یک حلقه نیاز دارد! چون قرار است یک کار تکراری (چاپ عدد) را به تعداد 10 بار انجام دهد!
قطعه کد زیر را در نظر بگیرید:!
for i in range(1,11): print(i)
قبل از هر چیز، باید بگم که اول باید به مطالب پیش نیاز مراجعه کنید، و تقریباً خیچ توضیحی درباره اونها نخواهیم داد! چون قبلاً گفتیم!
در خط اول، میگیم برای هر i در مجموعه اعداد 1 تا 10! (اینکه چرا اعداد 1 تا 10 رو نوشتیم range(1,11) به آموزش تابع range در پایتون (Python) که لینکش رو در بخش پیشنیازها قرار دادیم، مربوط است!)
در خط دوم میگیم چاپ کن i را!
پس یه بار دیگه: برای هر i در مجموعه اعداد 1 تا 10، بیا i رو چاپ کن!
بیاید با منطق برنامه بریم جلو! کامپیوتر، اول i رو میذاره 1، و میره توووووووووی حلقه for ! توی حلقه گفته چاپ کن i رو! اوون هم i (که هم اکنون 1 است) را چاپ میکند!
حالا میره دور بعدی و i رو توی دور دوم، میذاره دومین عدد از مجموعه اعدادی که ما بهش گفتیم! (یعنی 2)! و وقتی میره تووووی حلقه، باید i (که هم اکنون 2 است) رو چاپ کنه!
…..
در نهایتا i رو میذاره 10 ! و وقتی میره توووی حلقه، قرار i که 10 هست رو چاپ کنه!
پس به این ترتیب اعداد 1 تا 10 چاپ میشن و خروجی زیر رو دریافت میکنیم!
1 2 3 4 5 6 7 8 9 10
1- گذاشتن اون : در انتهای خط اول کد اجباری است!
2- گذاشتن اون فاصله یا تووو رفتگی (indentation) در ابتدای خط دو، اجباری است!
3- ما نوشتیم برای هر i در فلان مجموعه اعداد! بجای i هر اسمی که دوست دارین میتونید بذارید! حتی اسم خودتون! و لزومی نداره که حتما i باشه!
فرض کنید یک لیست داریم که اعداد 1 تا 5 داخلش وجود دارند! حالا میخوایم اعداد این لیست رو به توان دو برسونیم! قبول دارید این کار یه کار تکراری است!؟! چون قراره برای هر مولفه از لیست، عملیات به توان دو رساندن رو انجام بدیم! برای این منظور قطعه کد زیر را در نظر بگیرید:!
a=[1,2,3,4,5] for k in a: print(k**2)
همین طور که میبینید، در خط اول لیستی به اسم a درست کردیم که اعداد 1 تا 5 در اووون وجود دارن!
در خط دوم و سوم میگیم: برای هر k در a (که یک لیست از اعداد 1 تا 5 است!) بیا توان دوم i رو چاپ کن!
یادآوری: علامت ** نشانه توان است!
خروجی این قطعه کد میشه:!
1 4 9 16 25
فرض کنید میخوایم یک لیستی تهیه کنیم به اسم b ! که توووی این لیست اعداد زوجِ 1 تا 100 رو شامل بشه! برای این منظور قطعه کد زیر رو در نظر بگیرید!
b=[] for num in range(1,101): if num%2==0: b.append(num) print(b)
در خط اول یک لیست تهی به اسم b درست کردیم! (اولِ کار لیست رو خالی گذاشتیم! ولی قراره در ادامه هِی بهش اعداد زوج رو اضافه کنیم!)
در خط دوم میگیم برای هر num (یک اسم دلبخواه است! بجای اینکه بنویسیم i، توی این برنامه برای تنوع نوشتم num !)
داشتم میگفتم: برای هر num در مجموعه اعداد 1 تا 100 !
[خط سوم قطعه کد:] اگر باقیمانده تقسیم num بر 2 مساوی صفر شد!
[خط چهارم قطعه کد:] بیا num رو به b اضافه کن! (append یعنی اضافه کردن!)
در خط آخر هم میگیم، همین b رو چاپ کن! (که ببینیم، چی ساختیم!)
تمرین: در مثال 2 که کمی قبل تر و در همین مطلب عنوان کردیم! مجموعه اعداد a را به توان دو برسانید و آن ها در لیستی به اسم b بریزید! و در نهایت با چاپ b مطمئن شوید که برنامه درست کار کرده است!
این مثال رو میزنیم تا بگیم روی تاپل هم میتونید for تعریف کنید! و اینجوری نیست که فقط بشه روی لیست، حلقه for تعریف کنیم!
ولی در ادامه اگر این مثال رو نفهمیدید، بدانید و آگاه باشید [!] که مشکل از نفهمیدن حلقه for نیست، بلکه مشکل از نداستن پیش نیاز هاست!
پیشنیازهای این مثال: دستور print (با اون جزئیاتی که خودمون در آموزش مربوطه گفتیم!) و دستور شرطی if و تابع Range و تاپل ها (البته تاپل ها شاید خیلی نیاز نباشه)!
خب! قطعه کد زیر رو در نظر بگیرید!
c=("Sajjad","Mohammad Reza","Ali Reza") for j in range(3): print("Student {} is {}".format(j,c[j]))
در خط اول یک لیست به اسم c تعریف کردیم که مثلاً اسامی دانشجویان یک کلاس است!
در خط دوم و سوم میگیم: برای هر j در c، پرینت کن دانش آموزان {فلان1} هست {فلان2}! که قراره توی “فلان1” شماره 1 و 2 و سه بذاریم! و توووی “فلان2” اسامی دانشجویان رو بذاریم! (که گفتم پیشنیاز فهمیدن خط سوم، مسلط بودن به آموزش print است!)
اما اگر قطعه کد بالا رو اجرا کنیم، نتیجه زیر رو میده!
Student 0 is Sajjad Student 1 is Mohammad Reza Student 2 is Ali Reza
میبینید که بجای اینکه بنویسه دانشجو 1 فلانی است! نوشته دانشجو صفر فلانی است! اینم دلیلش اینه که پایتون (python) اندیس گذاری رو از صفر انجام میده! برای رفع این مشکل کافیه بگیم j+1 رو چاپ کنه!
c=("Sajjad","Mohammad Reza","Ali Reza") for j in range(3): print("Student {} is {}".format(j+1,c[j]))
حالا خروجی زیر رو دریافت میکنیم!
Student 1 is Sajjad Student 2 is Mohammad Reza Student 3 is Ali Reza
توجه: این مثال کمی به پیشنیاز نیاز دارد! و مثالی تکمیلی است! پس اگر یه جاهایی رو متوجه نشدید، بدونید که پیشنیازها رو رعایت نکردید!
تصور کنید لیستی داریم و میخوایم مجموع اعداد داخل لیست و میانگین این اعداد رو محاسبه کنیم! در این صورت داریم!
d=[2,5,7,8,12,14] summation=0 for i in d: summation=summation+i numberOFnumbers=len(d) avg=summation/numberOFnumbers output={ "Sum":summation, "Number of numbers": numberOFnumbers, "Average": avg } print(output)
در خط اول این قطعه کد، یک لیست تعریف کردیم به اسم d! که اعداد مدنظر ما در این لیست قرار میگیرند!
در خط دوم، متغیری به اسم summation تعریف کردیم که مقدار آن را برابر صفر قرار دادیم! و قراره در ادامه این مقدار هِی آپدیت بشه! ولی فعلاً به عنوان شروع، صفر گذاشتیم!
در خط سوم گفتیم برای هر i در لیست d،
[خط چهارم قطعه کد:] بیا به مقدار متغیر summation، به اندازه i (که همون مولفهای از d بود) اضافه کن و مجدداً حاصل رو بریز توی summation! (اینجوری عملیات آپدیت کردن اتفاق میفته!)
در خط پنجم میگیم که len یعنی طولِ بردار d (منظور تعداد اعدادی که داره!) رو بریزه توی متغیری به اسم numberOFnumbers !
در خط ششم، متغیری به اسم avg (مخفف average به معنی میانگین) تعریف کردیم که مقدار آن برابر است با مجموع اعداد لیست d تقسیم بر تعداد اعداد لیست d !
در خط هفتم تا یازدهم، یک دیکشنری تعریف میکنیم که به ترتیب مجموع (sum) و تعداد اعداد بردار d (همون که نوشتیم Number of numbers)! و میانگین (average) رو در خودش ذخیره کنه!
در خط آخر هم همین دیکشنری رو چاپ میکنیم! که مثلاً خروجی قطعه کد بالا میشه:!
{'Sum': 48, 'Number of numbers': 6, 'Average': 8.0}
یکی از خوبیهای این قطعه کد بالا اینه که شما حتی اگر به اعضای این لیست، یه سری عدد دیگه اضافه کنید! و یا حتی کم کنید! مشکلی پیش نمیاد و نیازی نیست کد رو عوض کنید و خودش خودکار مجموع، تعداد اعضا و میانگین اون اعداد رو میده!!
تعداد دیدگاه | 4 |
تعداد بازدید | 31.2K |
تاریخ انتشار | 24/06/2019 |
تاریخ بروزرسانی | 24/06/2019 |
نویسنده | گروه آموزشی کولاک |