الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة بخصوص تداخل حلقات التكرار في بعضها For

بدأه احمد وسام في 3 سبتمبر 2014 · 9 رد · 854 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

لدي عقدة مع حلات التكرار المتداخلة في بعضها 

 

لااعرف كيف تعمل  

 

ويوجد مثال وهو كود للاخ احمد ابو عبد البر

def check(n):
    list_6=[x for x in range(0,n+1,6) ]
    list_9=[x for x in range(0,n+1,9) ]
    list_20=[x for x in range(0,n+1,20) ]
    for i in list_6:
        for j in list_9:
            for e in list_20:
                    if n == i+j+e :
                        print 'from box 6 = ', i/6 ,'---from box 9 = ', j/9,'---from box 20 = ', e/20
                        return True
    return False

لاحض التداخل  هذا ماقصد عليه ممكن شرح كيف يعمل الحلقات التكرار اذا كان متداخلات في بعضهن

#2

اتمنى ان يكون كلامي مفهوم

#3

لن تختلط عليك

 

لاحظ الكود التالي

words = ['his', 'name', 'is', 'amer']
alist = []
for word in words:
    alist.append(foo(word))

يمكننا كتابة كود برمجي يعمل نفس العمل الكود السابق لكن هذه المرة بطريقة سهلة

words = ['his', 'name', 'is', 'amer']
alist = [foo(word) for word in words]

هذه الطريقة تدعى بالـList Comprehensions هذه الطريقة تسمح لنا بتفادي الأخطاء وسهولة أكثر في قرائة الكود البرمجي

 

هذا كود برمجي عادي

words = ['his', 'name', 'is', 'amer']
    letters = []
    for word in words:
        for letter in word:
            letters.append(letter)

عن طريق list comprehension الكود يصبح سهل أكثر

words = ['his', 'name', 'is', 'amer']
    letters = [letter for word in words
                      for letter in word]

يمكنك حتى إستعمال if condition

    words = ['his', 'name', 'is', 'amer', '1', '2', '3']
    alpha_words = [word for word in words if isalpha(word)]

الآن يمكنك قرائة الكود السابق

 

بالتوفيق

Untitled-18.jpg

#4

اشكرك اخي لكن 

 

المشكلة هوة هذا الكود انا الاقصدة الي لا افهمه

words = ['his', 'name', 'is', 'amer']
    letters = []
    for word in words:
        for letter in word:
            letters.append(letter)

يعني يعني لاعرف مافائدة حلقة التكرار الثانية

تم تعديل هذه المشاركة بواسطة احمد وسام في 4 سبتمبر 2014 في 20:20

#5

إعمل print على word ولاحظ ماذا يحدث

Untitled-18.jpg

#6

عملت وايضا اخي لم افهم كيف قامت بتقطيع الحروف 

 

ولو ازعجتك

#7

أخي ﻻتقلق أبدا اذا مافهمت شي اﻵن ستفهم ﻻحقا. أهم شي اﻹستمرار

 

بخصوص سؤالك اوﻻ اذا واجهتك مشكلة ولم تفهم قسّمها إلى اجزاء يعني خليها بدل مشكلة تصير مشاكل :) .. بس مشاكل صغيرة عشان تفهم وتحلل المشكلة الأصلية

 

فحلقات التكرار المتداخلة التي تراها صعبة ستصبح اﻵن سهلة بإذن الله تابع معي

myName = 'ahmed'for c in myName:    print(c)

ستكون النتيجة:

ahmed

كود سهل جدا واظنه مفهوم جيدا.

 

ﻻحظ الفرق هنا

names = ['ahmed', 'mohammed']

for name in names:
    print(name)

اذا كانت المتغير سلسلة نصية سيطبع حرف حرف

اما اذا كان مصفوفة سيطبع عنصر عنصر

 

اذن هذه النتيجة:

ahmedmohammed

لنكمل ...

names = ['ahmed', 'mohammed']
myName = 'ahmed'

for name in names:
    print(name)
    for c in myName:
        print(c)

ﻻ حظ حلقة for الذي بداخل فور هي نفسها الذي كتبتها في الكود اﻷول

 

والنتيجة كالتالي:

ahmedahmedmohammedahmed

ركز في النتيجة .. ﻻحظ انه العمليات تسير ورا بعض بالترتيب

اوﻻ طبع

ahmed

ثم نفذ

for c in myName:        print(c)

ﻻحظ أنه لم يطبع

mohammed

اﻻ بعد انتهاء العملية بالكامل (الحلقة التكرارية for ) حتى انتهت من عملها

 

وهكذا ..

 

اتمنى اني افدتك ...

 

واذا مافهمت قول لي اللي مافهمته وسأشرحها لك مرة اخرى بتفصيل اكثر حتى تفهم :)

تم تعديل هذه المشاركة بواسطة m ahmed في 5 سبتمبر 2014 في 03:38

#8

افتهمتها عاشت يدك والله اشكرك جدا

 

اشكرك لا داعي فاني عن طريق كودك فهمت كود الاخ

 

جزاك الله خير ياغالي

تم تعديل هذه المشاركة بواسطة احمد وسام في 5 سبتمبر 2014 في 16:03

#9

الدالة

append()

تضيف عنصر الى المصفوفة (list)

>>> letters = ['a', 'b']
>>> letters.append('c')
>>> letters
['a', 'b', 'c']
>>>

في السطر اﻷول انشأنا متغير letters يأخذ ليست بداخلها a و b

السطر الثاني اضفنا له العنصر с

اصبحت

['a', 'b', 'c']

تستطيع تنشئ متغير وقيمته list  فارغة مابداخلها اي عنصر

 

مثل

>>> letters = []
>>> letters.append('a')
>>> letters
['a']
>>> letters.append('b')
>>> letters
['a', 'b']
>>>

لكن لو أردت اضافة الف عنصر هل سأكتب كل مرة append ؟؟ ﻻ يمكن!

إذن الحلقات التكرارية تختصر علينا المهمة

>>> letters = []
>>> for x in 'abc':
...     letters.append(x)
... 
>>> letters
['a', 'b', 'c']
>>>

:tbshake:

#10
احمد وسام كتب:

افتهمتها عاشت يدك والله اشكرك جدا

 

اشكرك لا داعي فاني عن طريق كودك فهمت كود الاخ

 

جزاك الله خير ياغالي

 

اسف لم انتبه للتعديل اﻻ بعد كتبت ردي :)

تم تعديل هذه المشاركة بواسطة m ahmed في 5 سبتمبر 2014 في 16:13

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…