حلقهها: for، enumerate، sum و all
- با
forروی لیست،rangeو دیکشنری حلقه بزنی - با
enumerateشمارهی هر عضو را هم داشته باشی - جمع و شرط روی همهی اعضا را با
sum(...)وall(...)در یک خط بنویسی - حلقهای بنویسی که فقط بعضی اعضا را انتخاب کند (فیلتر)
for: برای هر عضو
خودت امتحان کن
خطهای تورفته برای هر عضو یک بار اجرا میشوند. خط بدون تورفتگی بعد از حلقه، فقط یک بار در آخر.
range: شمردن
خودت امتحان کن
enumerate: عضو بههمراه شمارهاش
خودت امتحان کن
اگر هر عضو خودش تاپل باشد، میتوانی همانجا بازش کنی:
خودت امتحان کن
فرم برنامه در خط ۷۱ پروژه با همین الگو ساخته میشود: for row, (key, label) in enumerate([...]) و دکمهها در خط ۱۳۳ پروژه.
حلقه روی دیکشنری و فیلتر کردن
خودت امتحان کن
تابع refresh در خط ۱۱۶ پروژه و خط ۱۱۷ پروژه همین کار را برای جستوجو میکند.
جمع موجودی
با یک حلقه روی products.items() موجودی همهی کالاها را جمع کن و در total_qty بگذار.
دیدن راهحل (اول خودت تلاش کن)
products = { 'pen': {'buy': 10, 'sell': 15, 'qty': 3}, 'pencil': {'buy': 4, 'sell': 7, 'qty': 20}, } total_qty = 0 for name, p in products.items(): total_qty += p['qty']
فیلتر جستوجو
لیست found را بساز که نام کالاهایی را داشته باشد که query داخل نامشان (با حروف کوچک) هست.
دیدن راهحل (اول خودت تلاش کن)
names = ['Blue Pen', 'Pencil', 'Red Pen', 'Cup'] query = 'pen' found = [] for name in names: if query in name.lower(): found.append(name)
sum و all در یک خط
بهجای ساختن حلقهی کامل برای جمع، میشود یک «عبارت مولد» داخل sum نوشت: «برای هر s در sales، مقدار s['qty'] را بده»:
خودت امتحان کن
all(...) وقتی True است که شرط برای همه درست باشد:
خودت امتحان کن
گزارش فروش در خط ۶۳ پروژه با دو sum در یک خط حساب میشود، و خط ۳۱ پروژه با all چک میکند هر سه عدد معتبر باشند.
گزارش فروش در یک خط
count جمع qty همهی فروشها و income جمع total همهی فروشها باشد. از sum(... for s in sales) استفاده کن.
دیدن راهحل (اول خودت تلاش کن)
sales = [ {'name': 'pen', 'qty': 2, 'total': 30}, {'name': 'pencil', 'qty': 5, 'total': 35}, ] count = sum(s['qty'] for s in sales) income = sum(s['total'] for s in sales)
خطها را مرتب کن
این حلقه نام کالاهایی را چاپ میکند که جستوجو در نامشان هست. مرتب کن (تورفتگیها را ببین).
print(name, p['qty'])query = 'pen'for name, p in products.items():if query in name.lower():
آزمون این درس
برای گذراندن این درس حداقل ۸۰٪ جواب درست لازم است. هر چند بار خواستی میتوانی دوباره امتحان بدهی.