دروس الوحدة (1/4)
للحلقات والمدى
يتم استخدام حلقة for في لغة Python للتكرار عبر تسلسل من العناصر:
قائمة، سلسلة، نطاق، إملاء... أي شيء "قابل للتكرار".
parole = ["ciao", "mondo", "!"]
for p in parole:
print(p)
# ciao
# mondo
# !النمط هو نفسه دائمًا: for <variable> in <iterable>: متبوعًا بـ
الكتلة ذات المسافة البادئة التي سيتم تنفيذها مرة واحدة لكل عنصر.
range(...): إنشاء فواصل زمنية صحيحة
range يُنتج تسلسلًا بطيئًا من الأعداد الصحيحة. ثلاثة أشكال:
range(5) # 0, 1, 2, 3, 4
range(2, 6) # 2, 3, 4, 5
range(0, 10, 2) # 0, 2, 4, 6, 8 (step)
range(5, 0, -1) # 5, 4, 3, 2, 1 (negative step)range حصريًا على الطرف الأيمن، مثل slice. إنه كائن كسول:
فهو لا يخصص ذاكرة لجميع الأرقام، بل ينتجها واحدًا تلو الآخر.
totale = 0
for i in range(1, 11):
totale = totale + i
totale # 55 (1+2+...+10)التكرار باستخدام الفهرس: enumerate
عندما تحتاج إلى العنصر والفهرس الخاص به معًا، استخدم enumerate:
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
print(i, p)
# 0 ciao
# 1 mondo
# 2 !enumerate ينتج (index, value) زوجًا نخصصه مباشرة لاثنين
المتغيرات عبر tuple unpacking (سنرى ذلك في الوحدة المخصصة لـ
هياكل البيانات).
تكرار تسلسلين بالتوازي: zip
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
print(f"{n} ha {a} anni")zip يتوقف عند أقصر تسلسل.
range() وكسل بايثون
في لغة Python، لا تخصص الدالة range() قائمة فعلية في الذاكرة: فهي تُرجع مولدًا كسولًا ينتج أرقامًا واحدة تلو الأخرى حسب الطلب (على سبيل المثال، في حلقة for). وهذا يسمح بالتكرار على ملايين الأعداد الصحيحة دون زيادة حجم ذاكرة الوصول العشوائي. لفحص قيم النطاق كقائمة، يمكنك إرسالها بشكل صريح باستخدام list(range(5)).
جربه بنفسك
احسب مجموع الأرقام من 1 إلى 100 (ضمناً) باستخدام حلقة for over range(...)، وقم بتعيينها إلى "total" وتقييمها.
إظهار التلميح
النطاق (1، 101) يُنشئ 1، 2، ...، 100 (حصريًا على اليمين).
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
بالنظر إلى القائمة `words = ['uno', 'due', 'tre']`، أنشئ قائمة `أزواج` من السلاسل مثل '0:uno'، و'1:due'، و'2:tre' باستخدام التعداد. تقييم "أزواج".
إظهار التلميح
تعداد (كلمات) يُرجع (فهرس، قيمة) في كل تكرار.
الحل متاح بعد 3 من المحاولات
التحدي الإضافي
Calculate the sum of all even numbers from 2 to 20 inclusive using a `for` loop over a `range`. Store the final sum in `even_sum` and evaluate it.
إظهار التلميح
استخدم النطاق (2، 21، 2) للتكرار فقط على الأعداد الصحيحة الزوجية من 2 إلى 20.
الحل متاح بعد 3 من المحاولات