هر چه می خوانم می فهمم بیشتر نمی دانم - دانش آموخته برق و کامپیوتر سابق
پایتون کلید ورود به دنیای هوش مصنوعی! (قسمت نهم-بخش اول :حلقه ها)
سلام رفقا
در یک سلسه آموزش برای اینکه بتونیم وارد دنیای هوش مصنوعی بشیم شروع به آموزش پایتون کردیم. اگر اولین باره این نوشته رو می خونید از لینک زیر برید جلسه اول آموزش پایتون و قدم قدم بیاین جلو.
در این بخش از آموزش پایتون در مورد حلقه ها صحبت می کنیم. حلقه ها کارشون اینکه که کارای تکراری رو برای ما انجام می دن. مثلا فرض کنید می خواهیم اعداد یک تا ۱۰۰ رو چاپ کنیم یک کار احمقانه اینه که بیایم دونه دونه اینارو با دستور پرینت چاپ کنیم. ولی خب صد بار باید این دستور رو بنویسیم. کار عاقلانش اینکه که بیایم این کار رو با حلقه ها انجام بدیم.
حلقه For :
حلقه for روی مجموعه های اعمال میشه. مثالا میشه روی لیست ها یا دیکشنری اجراش کرد. اگر هنوز نمی دونید اینا چی هستن اینجا رو بخونید. مثلا مثال زیر استفاده از for روی یک لیست هست :
for i in [0, 1, 2, 3, 4]:
print(i)
0
1
2
3
4
توی مثال بالا اعداد ۰ تا ۴ که توی لیست قرار داشتن در خروجی چاپ شدن. یا مثال زیر رو ببینید:
for x in ['one', 'two', 'three', 'four']:
print(x)
one
two
three
four
حالا اگر بخواهیم همون مثال ۱ تا ۱۰۰ که اولش گفتم رو اجرا کنیم بازم احمقانست بشینیم یک لیست درست کنیم و توش از ۱ تا ۱۰۰ رو بنویسیم اینجاست که دستور range به دادمون می رسه. کارش اینکه ابتدا و انتها و گام حرکت رو بهش می دیم. مثلا همین مثال ۱ تا ۱۰۰ عدد ابتدایی ما ۱ و انتهایی ما ۱۰۰ و گام حرکتمون یدونه یدونست . مثال های زیر رو ببینید که با کاربرد دستور Range آشنا بشید.
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]
پس از Range میشه توی For استفاده کرد مثل :
for x in range(1, 6):
print(x)
1
2
3
4
5
دقت کنید که در دستور range عدد آخری در نظر گرفته نمیشه مثال بالا از ۱ تا ۵ چاپ کرده.
همین حلقه رو هم می شه روی دیکشنری اجرا کرد. دیکشنری زیر رو در نظر بگیرید:
d = {"a": 1, "b": 2, "c": 3}
فرض کنید می خواهیم کلید های این دیکشنری یعنی a,b,c رو توی خروجی چاپ کنیم. داریم:
for key in d:
print(key)
"a"
"b"
"c"
یا می تونیم اینجوری بنویسیم:
for key in d.keys():
print(key)
"a"
"b"
"c"
حالا اگر بخواهیم مقادیر این کلید ها رو در بیاریم یعنی همون ۱و۲و۳ می تونیم از D.values استفاده کنیم مثل :
for value in d.values():
print(value)
1
2
3
حال اگر بخواهیم هم کلید و هم مقدار رو پیمایش کنیم از items استفاده می کنیم. مثل زیر :
for key, value in d.items():
print(key, "::", value)
a :: 1
b :: 2
c :: 3
حلقه های تو در تو :
فرض کنید می خواهیم همه حالت های ضرب {۲و۱} رو در {۱و۲و۳و۴} در بیاریم . یعنی یه همچین خروجی می خواهیم:
example:
1 # 1*1
2 # 1*2
3 # 1*3
4 # 1*4
2 # 2*1
4 # 2*2
6 # 2*3
8 # 2*4
سمت چپ ضربمون یا ۱ هست یا ۲ و سمت راست ضربمون ۱ یا ۲ یا ۳ یا ۴ . پس اینجا نیاز هست از دوتا for استفاده کنیم. اولی روی ۱و۲ و دومی روی ۱و۲و۳و۴ :
for j in range(1, 5):
for i in range(1,3):
print(i*j)
همون طور که مشخص هست j روی مقدارهای ۱و۲و۳و۴ حرکت می کنه و i روی مقدارهای ۱و۲ . بنابراین تمام حالت های بالا رو پوشش میده.
دستور Else در حلقه !
از else انتهای حلقه برای اینکه بگن تموم شد این کارو انجام بده استفاده میکنن(در عمل کمتر به کار می ره):
for i in range(3):
print(i)
else:
print('done')
0
1
2
done
مثلا توی مثال بالا ۰و۱و۲ رو دستور For چاپ کرده کارش که تموم شده رفته سراغ Else اون Done هم چاپ کرده.
بحث حلقه ها هنوز تموم نشده ولی برای اینکه خسته نشید در یک قسمت دیگه ادامش رو توضیح میدم. اگر سوالی داشتید کامنت کنید.
قسمت بعدی : حلقه ها بخش دوم
مطلبی دیگر از این انتشارات
آموزش پایتون کلید ورود به دنیای هوش مصنوعی (گام دوم - قسمت شانزدهم:دیکشنری)
مطلبی دیگر از این انتشارات
پایتون کلید ورود به دنیای هوش مصنوعی! (قسمت ششم: ماژول خودتو بساز)
مطلبی دیگر از این انتشارات
درة سیلیکون