طيب السلام عليكم اليوم إن شاء الله هنكمل في
الموضوع اللي بدأناه المحاضرة الماضية اللي هو موضوع
الـ list تمام؟ هنستذكر بشكل سريع الأمور اللي
أخدناها المحاضرة الماضية و هنكمل في بعض الـ .. الـ
.. الـ methods أو الـ functions اللي اللي علاقة في
الـ list وهناخد بعدين في آخر المحاضرة بعض الأمثلة
العمليّة اللي بتبين لنا كيف هنستفيد من الـ list في أمثلة
برمجيّة واقعية طيب أول حاجة أقولها فايدة الـ list
اللي هي عبارة عن variable بخزن فيه مجموعة بيانات و
هذا بريح لبدل ما أعرف مثلا meet variable عشان أعرف
meet قيمة بعرف variable لوحده بخزن فيه كل القيم و
بعدين هي كمان هنستفيد من الـ list إنه أنا ممكن أوصل
للبيانات بسرعة يعني ممكن أعمل loop على الـ list
وأطبع كل البيانات الموجودة فيها و أعمل بحث على الـ
list وغيرها طيب نتعرف على list عادي زي ما بنتعرف على أي
variable تمام بحط مثلا متغير اسمه x مثلا تمام هيك
أنا عرفت list مالها list فاضية تمام y يساوي 1,2,44
,6,7,8,70 هذا الـ list فيها بيانات ممكن أدخل فيها
بيانات أو أضيف عليها بيانات في الآخر عن طريق
method اسمها append x dot append تمام و بضيف مثلا
88 الـ x طبعا فاضي صح y dot append 100 هيك أنا أضيف
الـ 88 على الـ x و 100 على الـ y تمام لأن لما أعمل
run
آه print هاي الـ X وهي print الـ Y تمام
هاي المحتوى هاي الـ 88 والـ list هتنحط فيها في الآخر
مين؟ في الآخر مين؟ طيب هذا الإضافة .. الإضافة على
الـ list في طريقة ثانية للإضافة على الـ list تمام؟
بسيطة جدا برضه عشان نعرفها الآن مثلا الـ X بتضيف
عليها كمان قيمة وهتاخد مثلا 200 تمام؟ ممكن أجعل X
زائد يساوي تمام؟ و بفتح زي هيك وبكتب إيش؟ 200
عندما أضيف على الـValue من العادي، هذا الشبيه
فيها، تمام؟ زي ما أنا بضيف .. بس إيش الفرق؟ إنه
دايماً أنا لما أضيف حاجة على حاجة، لازم يكونوا من
نفس النوع، صح أو لا؟ الـX هي عبارة عن إيش؟ عن
list، تمام؟ بضيف عليه قيمة 200، ما بقدرش أحط 200 و
أعمل زائد على طول هذه إيش معناها X زائد يساوي بين
قسمين يعني هذه نفسها تساوي X يساوي X زائد زيه لأن
هدول عشان نجمعهم مع بعض هذه مع هذه لازم تكون من
نفس النوع صح؟ هذه لازم تكون إيش لازم تكون list
فحطيتها بين قسمين لأن نفس الحاجة Y زائد يساوي
400 إيش يعني؟ بفتح على الـ Y بدّي 400 هذه
نفسها تكافئ هي نفسها why dot append 400 طبعا
يعني طريقتين مختلفتين حتى الآن لو أنا رحت طبعت آه
الطبعة فوق حضرتها
طبعا لو أنا طبعت هاي مثلا الـ y ضاف عليها 400
هاي محتوى الـ y ضاف عليها 400 400 طبعا ليش
لأنه هنا عملت هنا ضفت 400 وهنا ضفت 400
ثاني طبعا طيب هذا لو أنا بدي أضيف قيمة على الـ ..
على الـ list طب افرض أنا بدي أضيف مجموعة قيم هل يعني
كل شوي أعمل append وكمان مرة append وكمان مرة
append؟ لأ في طريقتين كمان عشان نضيف أكثر من قيمة
احنا لإن شفنا كيف نضيف قيمة لو بدي أضيف أكثر من
قيمة الطريقة الأولى إنه أنا بس اروح على الـ list
هذه وأضيف اللي بدي إياه
إيش معناها؟ ضيفت على الـ list X الـ list هذه كلها
واضحة كيف؟ أظن سهلة والـ Y الآن بدي أضيف عليها
400، 300، 700 هدول ضيفتهم وين؟ على الـ Y
عند
list Z أو نسميها names فيها
مثلا علي وأحمد
بضيف عليها كمان اسمين ممكن أروح أحكيله names و
أحكيله زائد يساوي تمام وحط الاسمين جوا قوس اللي
بدك إياه أمل وعمر مثلا شايفين كيف عن طريق إيش
إشارة زائد تمام هيك أنا بضيف list كاملة على الـ list
اسمها إيش names تمام أجيت طبعت الآن print
Names محتوى
لسه كامل حكينا
يا جماعة إن هذه اللي هنا تكافئها x dot append مثل صح
هذه تكافئها طيب هذه
هل
بينفع أقول x dot append تمام وحط 200 300 لأ الـ
append بتستخدم لإيش لإضافة قيمة واحدة لو أنا بدي
أضيف أكثر من قيمة ممكن أستخدم method ثانية اسمها
extend كلمة extend معناها زي مدد أو كبّر تمام؟ توسيع
تمام؟ طبعا هذا الـ extent بتاخد list يعني ممكن هنا
قاعد يعطيله إيش؟ 200 300 واضحة
كيف؟ يعني الخلاصة لهذا الكلام كله
خلاصة الكلام كله لو أنا بضيف قيمة على الـ list x في
طريقتين يا إما بقوله x dot append وبحط القيمة
مثلا 100 أو بقوله x زائد يساوي تمام وبحط 100 هذول
ما بضيف إيش قيمة واحدة لو بضيف ثلاث قيم على الـ y يا
إما بقول y dot extend وبحط له هنا list مثلا 4 و
40 و 5 و 50 و 6 و 60 أو بقول Y زائد
يساوي وبفتح القوسين زي هيك زائد 4 و 40 و 5
و 50 و 6 و 60 الطريقة الثانية بتنفع لكل حاجة
تمام الـ extend بتنفع لـ list والـ append لقيمة الـ
extend ما جربناش لقيمة
لو قلنا 4 و 40 مثلا بتصير زي .. طيب print
y نشوف
إيش هتطلع
آه لأ بتظبطش الـ extend لازم تاخد حاجة iterable
يعني لازم تكون عبارة عن list طبعا آه أقواس آه ما
هو يعني إذا حطيت أقواس خلاص بحط فيهم اللي بدي إياه
يعني هذا زي إنه list آه هيك بتظبط يعني القصد إنه
هذا لازم تكون list فيها قيمة فيها خمس قيم المهم
لازم تكون list الـ extend طبعا طيب بتنظيف الـ list
جوه الـ list ولا العناصر؟ لأ بتنظيف العناصر بتاعتها
في الـ extend تمام؟ في الـ extend بتنضّف العناصر و
الدليل هي لإن أنا ما عملت run يعني هاي الـ Y تمام؟
هاي الـ 44 ضافها كعنصر زي وزي مين زي العناصر
الثانية تمام؟ طيب، اللي بعده شفنا احنا الإضافة بكل
تفاصيلها كيف نضيف على الـ list طبعا الحاجة الواحدة
للاضافة برضه إيش هي؟ آه الآن الـ append والـ extend
دايماً بضيفه في الآخر سواء قيمة أو مجموعة قيم طب
افرض أنا بضيف في النص في الأول تمام؟ هذا بتلزمني
يعني مثلا أنا بعمل تصميم لواقع أخباري أخبار تمام؟
المفروض الخبر الجديد ينحط في الأول يبقى لازم أي
حاجة جديدة عشان لما آجي أعمل loop تمام أطبع
الأخبار من الجديد للقديم فالمفروض إنه أي خبر يجي
أحطه في الـ list وين في البداية تمام كيف بنعمل
إضافة للبداية؟ عن طريق مين؟ عن طريق method اسمها
insert تمام هاي مثلا الـ Y عندي بقول Y dot insert
الـ insert يا جماعة هذه بتاخد two parameters الـ
parameter الأول وين أنا بدي أضيف تمام اللي هو الـ
index احنا تعلمنا من المحاضرة الماضية إنه كل عنصر
في الـ list كل مكان له index هذا مكانه صفر هذا
مكانه واحد هذا اثنين واحد كذا ف أنا لو بدي أضيف
للأول بحط صفر تمام وبحط القيمة الجديدة هذه ليست
معناها استبدال المكان رقم صفر بل ضيف عنصر جديد في
المكان رقم صفر بالضبط والذي موجود في الصفر بيعمل له
shift بيعمل له shift إزاحة يعني مثلا أنا عندي list
بالشكل هذا فيها أربع قيم 5 و 4 و 99 و
80 تمام؟ وضفت عنصر في البداية اللي في البداية
بيصير مكانه صفر
طبعا هنا العنصر أنا حاطط 100 مثلا هدول بيعمل لهم
shift إذا هي خانة بيصير هذا خمسة أربعة تسعة وتسعين
ثمانين لأن هذا الجديد بيصير مكانه صفر وهذا بيصير
مكانه إيش واحد بدل مكان صفر فالـ insert ما بتحذف
عناصر موجودة أصلاً الـ insert بتضيف العنصر الجديد و
بتعمل shift للعناصر الثانية لأن لو جيت عملت print
لـ Y
طبعاً هاي الـ Y نفس النسبة بس ضعف الأول إيش مئة طيب
لو أنا بدي أضيف عنصر هنا في المكان رقم اثنين طبعاً
بروحي
بنعمل Y و insert بنحط مئتين طب إيش هتصير كان
في المكان اثنين هيعمل إزاحة طبعاً هاي بنعمل print
تحت
طيب هو ضاف الصفر طبعاً في الأول ضاف مين؟ المئة صارت
المئة في المكان صفر واحد لأن هو إيش ضاف؟ هنا كمان
مئة هلّجيت لبعـد.. لما ضاف المئة كيف صار شكل الـ
list؟ زي هيك صح؟ هذا في المكان صفر وهذا واحد وهذا
هذا اثنين يعني اللي هيزيح هلّجيت مين؟ اه الاثنين
هيزيح الاثنين وحط إيش؟ وحط مئة تمام هذا إيش؟ هذا
الـ insert
هيك بنقول خلصنا إيش كل عملية الإضافة، طب لسه تبديل،
يعني ماشي أنا مثلاً قلنا عندي مثلاً list فيها أسماء،
تمام؟ شيل لكل اسم أحمد وحط بداله إيش؟ محمود مثلاً،
تمام؟
طيب إذا أنا يعني إذا أنا عارف المكان مثلاً بدي
أستبدل اللي موجود هنا هذا المكان صفر واحد اثنين
ثلاثة هذا المكان ثلاثة بدي خمسة وخمسين بدي أحضر
ستة وستين تمام اه لا ما فيش method هذه احنا بنعرف
يا جماعة عشان نوصل لأي مكان في الـ list عن طريق الـ
index تمام يعني مثلاً إذا أنا بعمل print Y ثلاثة هي
صفر واحد اثنين ثلاثة هيطبع لي إيش هيطبع لي خمسة
وخمسين بنفس الطريقة ممكن تروح لـ Y ثلاثة تساوي ستة
وستين أنا هنا عدلت إيش عدلت القيمة في Y ثلاثة تمام
يعني التعديل فقط أنه أنا بروح للعنصر وبحط فيه
القيمة اللي بدي إياها لأ
لو طبعت
طبعت الـ Y نشوف إيش هيصير فيها تمام
هاي مثلاً بدل 55 حط اللي إيش؟ حط اللي 66 طيب هاي
شوفنا الإضافة شوفنا التعديل تمام طول
الـ list شوفناها المحاضرة الماضية كيف نعرف طول الـ
list؟ تمام
لن الـ Y طيب إيش ممكن نستفيد من الـ len؟ حاجات كثيرة
لو أنا قلت مثلاً بدي أجيب آخر عنصر في الـ list بدي
أجيب آخر عنصر في الـ list واحد ممكن يقول والله آخر
عنصر في الـ list وقد عد صفر واحد اثنين ثلاثة أربعة
خمسة آخر مكان هو إيش؟ Y خمسة صح ولا؟ اه هاي print
تمام Y خمسة
هذا آخر مكان في الـ list ماشي هذا كلام صحيح بس افترض
أنا الـ list كبيرة أو أنا مش عارف أصلاً قد إيش حجم الـ
list يعني مثلاً المثال اللي أخذناه المحاضرة الفاتتة
لما عملنا loop والمستخدم دخل أسماء أنا بعرف وقتش
المستخدم هيوقف؟ لا فبكونش عارف حجم الـ list عشان
أقول له روح لي أو آخر عنصر إيش الـ index تبعه عشان
أقول له اطبع لي إياه طبعاً؟ طيب
آخر عنصر مكانه هو طول الـ list ناقص واحد ليش؟ إذا
طول الـ list خمسة معناه العناصر بتبدأ من صفر واحد
اثنين ثلاثة أربعة صح أو لا؟ إذا مئة من صفر لتسعة
وتسعين يبقى المكان آخر عنصر هو طول الـ list ناقص
واحد صح أو لا يا جماعة؟ مكان آخر عنصر هو طول الـ
list ناقص واحد تمام فكيف ممكن أطبع مكان آخر عنصر
ممكن ببساطة أعرف متغير أقول له مثلاً length تمام
يساوي len الـ Y ناقص واحد صح ولا وبعدين أروح للـ Y وبين
القصين أحط كلمة إيش length
واضحة الفكرة هذه يا جماعة أنا لاحظت أن أنا لأن
ما حطيتش رقم بين القصير حطيت إيش؟ variable عادي ما
هو الـ variable إيش فيه أصلاً؟ فيه رقم بمشي الحل
تعال
نشوف إيش هيطبع لنا لو أنا عملت run تمام هيطبع لي
إيش؟ طبع لي الـ 78 وممكن
كمان نختصر ناخذ هذه كلها تمام؟
وحطها وين؟ جوا القوسين واحد بيقول هذه غريبة، في Y
جوا و Y برا، لا مش غريبة، هو إيش بيسويه في الأول؟
أول حاجة بعملها بروح بحسب مين؟ اللي جوا، وبتصير
قيمة، خمسة مثلاً، بتصير Y خمسة، تمام؟
واضح يا جماعة اللي بحكيه؟ طيب يبقى الآن شوفنا
الإضافة بكل تفاصيلها شوفنا الـ len خلينا نسترجع
بشكل سريع الحذف في ثلاث طرق للحذف مختلفة تمام؟
أخذنا طريقتين المرة الماضية تمام؟ اللي هو الـ del والـ
remove تمام؟ إيش بيفرقوا عن بعض؟ الـ del إذا
أنا عارف المكان.. اه اللي بدي أحذفه.. بدي أحذف
آخر عنصر تمام؟ كيف؟ del.. del.. why؟ لأن الـ Y
ناقص واحد ناقص واحد remove بتحذف القيمة تمام؟ لأن
هي أعمل print الـ Y تمام؟
هي آخر عنصر ماله؟ انحذف من الـ list لو أنا بدي أحذف
قيمة أنا عارفها لأن القيمة مش index بقول Y dot
remove مثلًا 55 وبعدين print الـ
Y هي الآن طلع على الـ list بطل فيها إيش 55 بس طبعاً
الـ remove بتحذف فقط أول ظهور للـ answer كيف نحذف
إذا كان متكرر هذا بواحد من الأسئلة اللي احنا
هنحلها مع بعض تمام؟ احنا الآن بتتعلم
الأساسيات بتاعة الـ list تمام بعد هيك هيكون في
محاضرة كاملة تمام وحتى يمكن آخر المحاضرة عادي
كمان نبدأ فيهم أسئلة كيف نستفيد من الأساسيات هذه
عشان نحل الأسئلة عملياً تمام طيب في طريقة ثالثة
عشان نعمل حذف اللي اسمها pop
ماذا يفعل الـ pop هذا؟ هذا الـ pop يأتي معه مثل
الـ del ماهي مثل الـ del؟ الـ del عندما تحذف تطلب منه ماهو؟
الـ index المكان الـ pop برضه عندما تحذف تطلب منه
ماهو؟ المكان طبعاً إذا لم تضع شيء بين قوسين بيحذف
آخر واحد by default إذا لم تضع شيء بين قوسين بيحذف
آخر واحد بدليل أن هاي خلينا نعمل run تمام؟ ونطلع
الـ list اللي طلعت عندي مالها الـ list هيها؟ ما فيش
فيها العنصر؟ 78 إذا حطيت صفر، هايحذف أول واحد، هاي
المئة مالها؟ المئة راحت يبقى الـ pop زي مين؟ زي
الـ del، بس فيها فرق واحد مهم عن الـ del، إيش هي؟ إن الـ
pop العنصر اللي بتحذفه بيرجع لي ممكن أرجعه أخزنه في
variable العنصر اللي بتحذفه اللي بتطلعه من الـ list
بتخزّله في variable وممكن أروح أطبع مين
هالـ gate الـ result واحد
بيسأل هالـ gate أكيد طب إيش الفائدة؟ أنا حذفته ما أدانيش
إياه؟ ما أدانيش أرجع أجيبه؟ لا في بعض التطبيقات بتحتاج
أن أنا أحذف العنصر وأظلني.. موجود عندي زي إيش
مثلاً افترض أن أنا بتعمل برنامج قرعة أرقام list
فيها أرقام عشوائية وبده أسحب رقم مثلاً
مسكت الـ.. هذا على فكرة واحد من الـ lesson حلو عند
list فيها أرقام بقول شفل لخبط ليهم
تمام؟ بعدين خد لي أول answer من الـ list المفروض
الرقم اللي أسحبه أول حاجة يطلعه من الـ list ليش
يطلعوا من الـ list؟ عشان لما نسحب مرة ثانية
ما يطلعناش صح ولا؟ اه يبقى لازم أسحبه من الـ list و
لازم يظلوا عندي في متغير عشان أقعد على الشاشة أقول
مبروك صاحب رقم كذا كذا فاز بكذا صح ولا؟ تمام؟ واضح
كيف؟ هذا مثال أنه أنا بحذف بشيل الحاجة من الـ list
وبظلوا إيش موجود؟ موجود عندي هذا المثال منطبق
باستخدام إيش؟ باستخدام الـ pop أنه شيلها طلعها من
الـ list وخليها إيش محتفظ؟ محتفظ فيها تمام؟ يبقى
الآن برضه تعلمنا الإضافة تعلمنا التعديل كيف
التعديل بتم بروح على العنصر باستخدام ال index و
بقوله حط اللي فيه قيمة عن طريق ال assignment يعني
التعديل و تعلمنا الحذف بثلاث طرق ال del و ال
remove و ال pop و فهمنا الفرق بينهم ال iteration
لأ ال iteration معناه أنك تمر على العناصر الموجودة
في ال list و تعمل عليها شغل الآن أنا مثلا عندي
مجموعة أخبار موجودة في ال list لازم أمر على ال
list هذه و أطبع الأخبار خبر خبر مثلا صح؟ عندي
مجموعة مثلا طلاب بدي أطبع لهم كشف درجات موجودين في
ال list بدي أمر على أسماء الطلاب أو أرقامهم رقم
رقم و أقول لهم كل رقم روحت عليه اعمل كشف درجات له
تمام؟ يبقى لازم يكون فيه طريقة أن إيش أن أعمل loop
على ال list طبعا كيف نعمل loop على ال list؟ أخذناها
المرة الماضية صح؟ ببساطة شديدة ممكن نعمل for I in
Y أصلا
متذكرين لما كنتم تعملوا for I in range؟ ال range
أصلا عبارة عن list for I in Y تعمل ال print لمن؟
لل I طبعا فهيك أنا بطبع كل القيم الموجودة في ال
list هذه طبعة ليها قيمة قيمة قيمة هذا ال iteration
شفنا الإضافة التعديل الحذف ال iteration تمام آخر
نقطة ضايلة اللي هي مجموعة methods مفيدة ممكن
تفيدني في ال list الميثود الأولى count إيش عن ال
count تمام بدي أشوف عند صف دراسي high names تمام
في أسامي طلاب أحمد عمر محمد وكمان أحمد و هاي علي و
هاي كمان أحمد بدي أعد أنا كم واحد عندي في الصف
اسمه إيش اسمه أحمد ممكن نحلها باستخدام for loop نمر
عليهم واحد واحد و نعمل counter و كل ما لقيت أحمد
أضيف له تمام؟ لأ هذه في طريقة missiles جاهزة على
طول تمام؟ بعدين بقول له names dot count عد لي count
و بحط ال value اللي بدي أعدها اللي هي مثلا إيش؟
أحمد بس count إيش يعني count؟ قد هذه أكيد بترجع لي
إيش؟ قيمة بخزنها في variable و بعدين بقوله print
result تمام هذه الطباعة ليه؟ ثلاثة مباشرة ماشي
يا جماعة في سؤال
ميثود ثانية اسمها index إيش بتستنتج بالميثود هذه
يعني من اسمها المكان بالضبط لو أنا عطيت عمر تمام
بقوله وين عمر موجود يعني هنا هيرجع لي إيش واحد طبعا
مكان بس أول ظهور لعمر تمام هيرجع إيش طبع لي هنا
طبع لي واحد
شوفنا count index method ثانية برضه كويسة اسمها
sort sort إيش يعني ترتيب طب إذا كانوا أرقام كيف
هيرتبهم و إذا كانوا حروف كيف هيرتبهم كلمات كيف
هيرتبهم دائما الترتيب تصاعدي الترتيب دائما تصاعدي
هذه مثلا خلينا نقول numbers فيها ثلاثة و ثلاثين
أربعة خمسة و عشرين ستة و ستين سبعة و تسعين تمام؟ لو عملت
أنا numbers dot sort رتبهم إيش؟ تصاعديا تمام؟
اعملوا print numbers تمام؟
هذه الأرقام مالها؟ تمام؟ اترتبوا تصاعديا طب بالنسبة
لأسماء نفس الحد تصاعديا طب كيف الأسماء بترتب
تصاعديا؟ على ASCII code دائما ترتيب ال ASCII code
هو إيش A small ل Z small A capital ل Z capital
يعني دائما الـ .. الـ .. مثلا ال ASCII code بتاع ال
B أكبر من إيش؟ من ال A و ال C أكبر من ال B و هكذا
ففعليا الترتيب التصاعدي للأسماء هو ترتيب أبجدي
صحيح؟ لأن هذا أقل حاجة و الـ Z ماله أكبر حاجة
تمام؟ و الدليل إنه هي أنا لو عملت run لو عملت sort
لل names بدل ال numbers و طبعت ال names تمام؟
هذه اترتبوا إيش؟ ترتيب أبجدي طيب ماشي هذا ترتيب
يتفاجئ دائما أن ال sort يرتب تصاعديا طب أفرض أنا
بأرتب بالعكس تنازليا عندي علامات بدي أرتبها من
الكبير للصغير تمام في طرق ثانية الطريقة الأولى أن
أنا أعمل sort في الأول و بعدين أروح أقول مثلا احنا
خلينا نقول numbers
تمام؟ رتبت الأرقام تصاعديا بالصورة و بعدين بقوله
numbers dot reverse إيش يعني؟ عكسهم في الأول رتبهم
تصاعديا و لما يعكسهم بيصيروا إيش؟ بيصيروا تنازليا
تمام؟
الطريقة الثانية إنه خليني على الصورة نفسها بس ممكن
نمرر ال parameter نقول اسمه reverse يساوي
الـ true يعني الآن هذه الـ sort function تمام فيها
default value parameter اسمه reverse ال default
value بتاعته إيش؟ false أنا ممكن أغيرها أحطها إيش؟
ال true واحد بيقول طب أنت ليش ماكنتش تبعتها قبل
هيك؟ لأنها موجودة في ال sort لكن قيمتها
مالها؟ false تمام الآن بدي أمررها بدي أقوله
reverse و أقوله إيش؟ ال true
هيك إيش؟ طبعا ال numbers تمام
هيجي يترتب ليهم إيش؟ التنازلي من الكبير للصغير طبعا
هذا الطريقة أفضل من أن أعمل sort بعد ال reverse
بدل ما يكون عمليتين تمام هذه عملية واحدة يعني هو
هنا مدام أنا بعطيه reverse true هو بياخد بعين
الاعتبار أثناء الترتيب أن يحط الكبير إيش بالأول
أفضل أن أنا أرتبه تصاعديا ويغلب حاله و بعدين
أقوله إيش اعكسهم تمام يهمني أنا الوقت دائما طيب
تقريبا خلصنا ال methods الأساسية بتاعة ال
functions في عندنا كمان method اسمها clear من غير
تفسير تمام هذه clear إيش بتعمل بتحذف كل حاجة
موجودة في ال list يعني هذه لو عملت طباعة تمام هذه ال
numbers طبعا هي عايشة فاضية
طيب، الآن تعلمنا عدد من أساسيات ال list خلينا
الآن ناخد أمثلة عملية على ال list الأمثلة العملية
مهمة لأن فعليا أنا لازم أفهم السؤال و لازم أستحضر
إيش المناسب من ال functions اللي أنا درستها عشان
أحل السؤال هذا طيب السؤال الأول بيقول write a
program that reads marks and prints their average
max and min هذا السؤال حليناه قبل ذلك بس بدون
استخدام ال list إنه أنا بدي أعمل برنامج أدخل فيه
علامات طلاب و بعدين في الآخر بعد ما أقوله done
مثلا أو نقل مثلا أنا بدخل الدرجات لما بدي أخلص
بحط له ناقص واحد تمام إنه خلص أدخل الدرجات هيطبع لي
متوسط الدرجات أعلى درجة و أقل درجة لأن هذا البرنامج
إذا بدي أحله بال list هيكون أبسط من حله بدون list
ليش؟ أنا فعليا أول خطوة بدي أعملها بدي أعمل loop
هطلب من المستخدم يدخل علامات وكل علامة بيدخلها
بتنحط في ال list وبعد ما يخلص خلاص أنا ضامن أن
البيانات كلها موجودة في ال list بصير أشرع ال list
بقول هتل أكبر قيمة هتل أصغر قيمة هتل ال average
تمام؟ هذا اللي هنعمله ال gate أول خطوة بنعملها
بنعمل عملية إيش؟ عملية إدخال، مستمرة،
في الأول ماشي نعرف list فاضي، هذه بندعرف list
اسمها marks،
قيمتها فاضي على أساس أن أنا بندعب فيها الدرجة،
بعدين بقولوا while true infinite loop يظل مستمر لحد
ما يدخل ناقص واحد أطلع من ال loop أقرأ الآن
الدرجات مثلا mark يساوي int input enter
mark دخل الدرجة إيش بدي أعمل اه لسه ال mark ده بدي
أفحصه والله إذا if mark يساوي ناقص واحد أعمل إيش
break خلاص لأن أنا ما بعادش نكمل ال loop لأن إذا مش
ناقص واحد مش هيعمل break صح ولا بدي أكمل تحت أكمل
في ال while loop تمام إذا مش ناقص واحد إيش بدي
يعمل في ال mark بدي أضيفه في ال list كم أضيفه في
ال list بروح أقوله marks dot append تمام و بقوله
إيش mark هذه نفسها تكافئ marks زائد يساوي
بمش الحاجة ولا لأ؟ الاثنين صح هذه marks عشان ما
تلخبطوش برضه هذه بتسميها M تمام؟ عشان تشوفوا مش زي
بعض تمام؟ ضيف الـ M على مين؟ على list marks طب بعض
ما يضيف العلامة وين هيروح؟ هيكمل في الـ loop هيطلب
مني كمان إيش كمان علامة إذا مش ناقص واحد هيضيفها
وين؟ على الـ marks وهكذا تمام لحد ما أضغط إيش ناقص
واحد خلصت الـ loop تمام وبقى لتخزن البيانات كلها
لدخل المستخدم وين؟ في الـ list marks الآن إيش ضال
عليا أجيب أكبر علامة وأصغر علامة والـ average
تمام طبعًا print
أكبر علامة على طول الـ budget بقول max وبحط الـ
list أصغر
علامة print sum الـ marks مجموعة العلامات sum
يعني مجموعة في function اسمها sum بتجيب لمجموعة كل
آه احنا بدنا minimum تمام؟ اللي أنا إيش طالب مني
كمان هو الـ average ما هو الـ average مجموعهم على
عددهم مين يقول ليش مجموعهم إيش هو sum الـ marks على
len الـ marks صح ولا؟ اللي أنا عشان أرتب الشغل ممكن
أقعد هنا أطبع مثلًا max mark
صح يا جماعة إيش عملت؟ أنا حولت هذا لـ string عشان أقدر
أعرضه مع هذه تمام وهي مثلًا minimum mark نقطتين زائد
وهي string وهي
هنا average يساوي
طبعًا هنا أنا حاططهم كلهم مع بعض ممكن واحد يحملهم
في variable يعني تمام؟ طيب خلينا نعمل run الآن
واضح يا جماعة الحل؟ مش لازم .. وين؟ بعد الـ F؟ مش
لازمني؟ ليش؟ إن هم يعني يا هيدخل في الـ F؟
مش هالاش ال ال ال ال ال ال ال ال ال ال ال ال ال
ال ال ال ال ال ال ال ال ال ال ال ال ال ال ال ال
ال ال ال ال ال ال ال ال ال
ال ال ال ال ال ال ال ال ال ال ال ال ال ال ال ال
ال ال ال ال ال ال ال ال ال
ال ال ال ال ال ال ال ال ال ال ال ال
ال ال ال ال الطيب هي test مثلًا بدي أدخل إيش بدي
أدخل علامات مثلًا 80 44 60 85 90 92 34 77 65 وهي
ناقص واحد تمام الآن هي هيطبع ليه الـ maximum mark
هي إيش؟ 92 أقل علامة 34 والمتوسط إيش؟ 69 طيب
ناخد سؤال ثاني شبيه فيه write a program that reads
names and prints them ordered alphabetically طبعًا
يعني أعمل لبرنامج أدخل أسماء ويعرض ليهم مرتبين
إيش؟ أبجدياً نفس الطريقة بدي أعمل list اسمها names و
أدخل الأسماء من المستخدم وفي الآخر أعمل sort للـ
list عشان يطبع ليهم مرتبين إيش؟ أبجدياً واضحة يا
جماعة؟ بدي أعدل على الحل هذا بدي أجي هنا أقوله إيش
بدل مر سميها إيش؟ names وهنا بدل أن بدي أدخل text
مافيش دي أحاول الـ int صح؟ إذا كان يساوي done أعمل
إيش؟ أعمل break وهنا أضيف وين؟ أضيفه على الـ names
طبعًا والآن بدنا
نروح للـ names ونعمل إيش؟ sort وبعدين بيقولوا for
I in names أطبع لي إيش؟ أطبع لي الـ I نفس الحل السابق
كل اللي غيرته إنه بعد الـ while loop أمسكت الـ names
عملنا لها إيش؟ sort ولكل I in names أطبع لي الـ I
الهن
الأسماء أحمد زياد بلال غمر علي وهيدان
علي أحمد علي بلال كمال عمر زيت رتب ليهم إيش؟
أبجدياً طيب
شوف السؤال هذا write a function that takes a list
of marks and retains the top five marks
بدي أعمل سؤال برنامج function أدخل علامات تمام
ما يرجع ليش أعلى علامة يرجع لي إيش؟ أعلى خمس علامات
بدي
أعلى خمس علامات طيب هذا السؤال هنتعلم منه إيش جديد
خلينا نشوف كيف نحله
خلينا نفترض ننسى الـ functional نعمل برنامج عادي
نشوف الفكرة اللي فيه بعدين بنحول لـ function عندي
إيش تمام؟ علامات موجودة ناخد
أعلى واحدة نستخدمها نتخذمها وبعدين ناخد أعلى
واحدة طب لأ في حال أسهل من هي طيب عشان أعلى خمسة آه
يكون هم أول خمسة يكون هم أعلى خمسة طيب بروح لـ marks
بقول له sort تمام reverse هيك
رتب ليهم بدي منهم إيش؟ بدي أول خمسة تمام؟ تمام طيب
زمايلكوا بتقول إننا نطبع الأماكن من صفر لأربعة بدنا
نعمل loop يعني صح ولا لأ؟ لو عملت loop عادية زي هيك
for i in marks وأطبع الـ I هيتبع ليهم إيش؟ هيتبع
ليهم كلهم أنا بديهم كلهم بدي بس إيش؟ بدي أول خمسة
ماشي يعني ممكن نحط counter مثلًا نضل نزيده واحد
واحد إذا وصل لـ 4 أنا أعمل break تمام؟ لأ في حل
أسهل كمان من هنا تمام؟ لأ لحظة لحظة أنا أعمل الحل
وبعدين أشرح لكم إياه تمام؟ بدي أقول for i in
range
طيب
الطيبة في اللي أنا كتبته حد يحاول يفهم أنا إيش
عملت
أول خمس قيم أول خمس قيم أول خمس قيم أول خمس قيم
أول خمس قيم طب for I in range من صفر .. يعني هيخلي
الـ I تتغير من وين؟ صفر، واحد، اثنين، ثلاثة، أربعة،
خمسة، أربعة أنا بديش الـ I بس بدي الأماكن اللي في الـ
marks اللي موجودة في الأماكن I فروحت قلت له اعملي
range من صفر لخمسة وأطبع لي marks الـ I إيش يعني
marks I؟ في الأول marks .. وبحط هنا إيش .. إيش
أول قيمة هيحطها؟ صفر هيطبع لي أول علامة وبعدين الـ I
هتصير إيش؟ واحد هيطبع للثاني وبعدين للثالث وبعدين
الرابع هي خلصت صفر واحد اثنين ثلاثة أربعة هي أول
خمسة تمام؟ فأنا استخدمت الطريقة بديلة للطباعة عن
طريق الـ index تمام؟ يعني أنا فعليًا لما بدي أطبع
أول خمسة ممكن أقول الطباعة لـ print marks zero صح؟ وبعدين
بعدين print marks واحد وبعدين print marks اثنين وبعدين
بعدين ثلاثة وبعدين أربعة مش هذا اللي أنا بديه لأن
ماشي عشان هم أربعة بيقولوا له أطلعوا خمس سطور تمام؟
لكن مش معقول إن أنا أعملها زي كفرع أنا بدي أول
عشرة مش معقول أفضل أعمل زي هيك لأ لكن لو طلعت أنا
في الأسطر هذه فيها قاسم مشترك إيش هو؟ كلهم هدول
فرعين ومين بتغير؟ بتغير الـ I بتتغير من صفر إلى
أربعة بدل ما أحط صفر واحد اثنين ثلاثة أربعة قلت له
I بتتغير من صفر لمين؟ لخمسة مش هيصل خمسة أكيد وأعمل
print marks وأحط اللي هنا إيش؟ الـ I هذه
تكافئ مين؟ تكافئ هذه شفتوا كيف أنا وصلت لأول خمسة
مش
مشكلة حتى لو مقررين يعني مثلًا أنا عندي مثلًا
علامتين تسعة وتمانين عادي بيكونوا مقررين وراء بعض
بحطوا آه الـ top الخمسة ممكن يكون فيه مكرر باستثناء
واحدة أنتم في أولى القطاع مش بتلاقوا أول خمسة ستة
كلهم تسعة وتسعين فاصلة ستة مثلًا آه عادي هم عددهم
عشرة بيحطوا
مرة بعض ما فيش يعني خلاص هو نفس القيمة
الآن
تعالى نشوف النتج نطبع
طبعًا هاي أول خمس قيم 99 96 91 89 89 أنا طلبت أعلى
خمسة هاي أول أعلى خمسة واضح
يا جماعة كيف أنا أخذت جزء وطبعته من الـ list طب في
طريقة ثانية برضه مفيدة نتعلمها طبعًا في حاجة اسمها
slicing
list slicing ايش هي list slicing؟ اه تشريح ال list
تقطيعها slice يعني ايش؟ شريحة مش شريح الجوال شريح
يعني .. طيب slicing ايش ال slicing؟ بقول أنت ممكن
تاخد ال list بتاعتك تمام؟ و تقطع جزء منها ك list
جديدة طبعا كيف اللي أنا لل list marks رتبتها بدي
منها ايش أول خمسة طبعا ايش بروح بعمل بقوله
marks و بفتح قوسين زي هيك و بقوله من صفر الى خمسة
وهذه هترجعلي list جديدة خلينا نفهم هذه ايش معناها
list واحد من صفر إلى خمسة معناه خدلي أول خمس عناصر
في ال list اللي هم الصفر واحد واثنين وتلاتة واربع
خمسة ايش مش مشمولة تمام؟ و بيرجعلياهم وين في list
جديدة يعني
مثلا
لو أنا عندي list واحد فيها تلتاش اربع اتنين وعشرين
خمسة سبعتاش تلاتة تمام؟ وحكيتله list اتنين يساوي
list واحد وعملي مثلا من صفر الى تلاتة ايش هيكون
محتوى list اتنين؟ يساوي
هياخد الأنصار الأول والثاني صفر واحد واثنين اللي
هما تلتاشر وأربعة واثنين وعشرين هذا محتوى مين؟ لسه
اتنين اتنين وعشرين طيب بتغير شويه في المثال لسه
واحد قلت له خد من اتنين إلى ستة بنعد هذا صفر مكانه
مثال تاني
تلاتة مجدتين مايعنيه؟ ماحددتش على النهاية من تلاتة
للآخر من تلاتة للآخر طيب
ايش
يعني؟ من أول لأربع يعني بنوقف عند index تلاتة
تمام؟ هذا بنسميه احنا ال list slicing
خلّينا نجربه هنا، بدنا أعلى خمس درجات، صح؟ بعد ما
رتبت ال list، قلت له عطلي من صفر لخمسة تعالي نعمل
print لمن؟
لل list، بنعمل print الناتج الآن هيطلع ك list
جديدة، تمام؟ ال list الأولى مش هيتأثر، تمام؟هو مش
هي .. يعني هي مش انه خلاص شال القطعة من ال marks
لأ ال marks بلت زي ما هي بس أخد نسخة من أول خمسة و
حطهم وين؟ اه في list لأ لو عملنا run هاي أعلى مين؟
هاي أول خمسة تمام؟
طيب لو حكينا بدنا من تلاتة للآخر ساب أول تلاتة صفر
واحد اتنين سابهم هيبدأ من عين تلاتة للآخر يعني
المفروض الآن عشان نتأكد من الجواب أنه هيبدأ من
تسعة و تمانين تسعة و تمانين ساب التلاتة في الأول
صح؟ هذا معناه يبدأ من رقم تلاتة للآخر
ما هو لما ترتبوا .. ترتبوا .. هتصير رقم 3 هي 89،
تمام؟ طيب، trick صغير، لو بدي أوطى 5 درجات،
مين يقولي كيف بجيب، اللي أنا رتبتهم، أعلى درجات
موجودة في الأول، وأقل درجات موجودة في الآخر
بدنا نعملها زي هيك بدنا نقطع آخر خمسة ايش نعمل؟
ايش أكتب؟ نعمل لن ماركس ناقص خمسة للآخر نعمل لن
ماركس ناقص خمسة للآخر شايفين هذا؟ هذا ايش معناه؟
هذا كله موجود قبل إنه جتين يعني بيجيب لن طول ال
list ونقص منه ايش؟ خمسة
لوين؟ للاخر مش هذه معناها أخر خمسة صح ولا لأ يا
جماعة فهمتوها هذه مرة .. هذه ممكن تاخدوها تحطوها
وين اه متغير هاي مثلا index اسمه قيمته
طول ال less ماقص خمسة اللي انا اجتالي من وين؟ من
عند index للاخر واضحة ولا لأ يا جماعة؟اللي ورا
واضحة ماشي
أنا رتبتهم جيبت أول .. مديش أرتب تاني، الترتيب
بياخد وقت أنا رتبتهم مرة واحدة أعلى القيم الموجودة
في الأول وأقل القيم الموجودة في الآخرفأول خمس قيم
باجيبهم من ايش؟ عن طريق انه ال slice هذه من صفر
لخمسة، آخر خمس قيم باجيبهم من وين؟ للناقص خمسة إلى
الآخر، لأن لما يجيب طباعة الآن، طلع ايش طباعة؟
هدول ايش؟ أقل قيم موجودة
واضحة الفكرة يا جماعة؟ واضحة ايش مفهوم ال slicing
ان اقطع من ال list يبقى انا احنا حلنا هذا بطريقتين
بعد ما انا رتبت ال list عشان اخد اول خمس درجات
ممكن اعمل for loop و اقوله range من صفر لخمسة و
استخدم ال I ك index عشان اقوله marks I و الطريقة
التانية ان اعمل ايش slicing تمام؟ عند ال list
موجود اقطعلي اول خمسة اقطعلي اخر خمسة اقطعلي في
النص تمام؟
بناخد سؤال تاني بعده
write a function that takes a list and
picks a random element of it يعني زي برنامج قراءة
بدنا نعمل list فيها رقام و بدنا نسحب رقام و بعدين
نسحب رقام تاني و نسحب رقام تالت و هكذا عشوائي
طيب في الأول مثلا خليني أجرب هالحاجة
طيب هذه ..
لأ بظبطش .. طيب ماشي يا جماعة تبقوا معايا بدي أول
حاجة أعمل list فيها أرقام تمام وليأكل مثلا high
numbers بدي أحط فيهم أرقام من واحد لمية تمام أرقام
من واحد لمية قرعة طبعا المشكلة في ال range اني
بتقولي أنت بتقدرش تعدل في ال range طبعا يعني مقدرش
مثلا اعمل sort كذا طبعا فاللي بدي اعمل خيار بديل
ان أنا بدي اعمل list فاضية و بدي اعمل for loop for
i in range من صفر ل 100 طبعا روح اعمل numbers dot
append ايش عملت أنا هنا يا جماعة؟ عملت list، ايش
الأرقام اللي هتلحق فيها؟ الأرقام من صفر ل 99، عبّل
ال list، هل جيت بدنا نختار رقم عشوائي من ال list،
من الأرقام من صفر ل 99، بدنا ناخد رقم عشوائي منه،
طيب، في عندي مثل شفناها المحاضرة الماضية موجودة في
ال library اسمها random فبقول import dot random
تمام و بعدين بقول random dot shuffle ايش ان كلمة
shuffle؟ خربطهم تمام هاي numbers هيك ايش عمل هو
خربط القيم اللي في ال numbers ايش ضال عليها ال
gate؟ بعد ما خربطت احنا ايش بنعمل في الواقع؟
بنخربط الحاجات و نروح نسحب من اللي في الأول صح؟
ضال علينا نسحب من؟ الرقم اللي في الأول مثلا أو في
الآخر، مش هتفرق طبعا؟ المفروض اللي في الأول يصير
رقم عشوائي مش هو بره خبطهم، لاعرفش احنا ايش بدي
يجي في الأول طبعا؟ فانا عملت shuffle و بعدين بدي
أخد أسحب أول قيمة موجودة في ال list قلت معايا ولا
لأ يا جماعة؟ طبعا؟ روحت ل numbers وحكيتنا pop ليش
pop؟ صفر تمام؟ عشان يطلعها من ال list ويرجعليها
وين في variable اسمه result مثلا ليش؟ عشان قال لما
أعمل shuffle تاني تمام؟ ماتجيش بالصدفة الرقم نفسه
في الأولولو أصبح تزوير صح ولا لأ لو طلع الرقم نفسه
مرتين المفروض الرقم موجود منه نسخة واحدة ان سحبت
خلاص مانفعش أطلع تاني تمام فلما أعمل pop شلته خلاص
الطرف عمل ال list كله او اتخذلت النتيجة وين فال
result تعالي نطبع print result
مرة تانية اعملت list فيها من الأرقام من صفر لتسعة
وتسعين اعملت shuffle للأرقام و سحبت اول ايش اول
رقم و طبعته تمام تعالي نعمل run الان هاي هنا ايش
جابلي 74 مفروض لو عملت run تاني يجيبلي رقم ماله
مختلف هاي جابلي تسعة وتسعين كمان مرة هاي جابلي
تلاتة وسبعين تمام
واضح يا جماعة؟ احنا جاعدين نحاول نستفيد من ال
methods اللي أخدناهم على ال list في أنثى وقعية لأن
السؤال التاني مبسيط write a function that takes a
list and a number and counts the number of
occurrences of n in the list
من غير حتى function عندي أنا مجموعة عندي list تمام
names مثلا هذا حلناه اعرفك مش هديش احله هو ايش
ويعدّلي القيمة كم مرة تكررت في ال list تمام
زي names ومش عملنا فيها أحمد علي محمود كذا كذا
وعملنا dot count عدّلي كم مرة المتغير هذا تكرر
تكرر في ال list تمام يعني هذا حليناه أثناء إيش
أثناء الشرح
اللي بعده write a function that takes a list and a
number and remove the occurrences of the number
from the list طيب هذا السؤال بدنا نشرحه لأن حكينا
قبل شوية أنه أنا لما يكون عندي list فيها أرقام واجي
أقول له x dot remove تمانية
هل هيحذف كل التمانيات الموجودة في ال list؟ لأ أول
تمانية هيحذف إيش؟ أول تمانية لأ أنا بدي إيش يعمل؟
تمام كل التمانيات الموجودة في ال list يشيلها مش بس
إيش اه يشيل أول واحدة طيب ما فيش method جاهز ممكن
تعملّي هذه بس أنا ممكن أستخدم ال remove بطريقة ذكية
تمام إيش هي؟ شوفوا إيش بتسوي while
ممكن أنت تفحص إذا رقم موجود في ال list أو لا يعني
مثلاً 6 كيف أنا بتفحص إذا ال list فيها 6 ولا
مش فيها 6 ممكن نطبع حاجة اسمها 6 in x إيش 6 in x يعني
إن هذه ال expression بترجع true أو false
إذا الـ 6 موجودة في الـ x بترجع true مش موجودة
بترجع what؟ بترجع false ف أنا لو عملت ال run هيرجع
ل what؟ true بقولش كم مرة موجود؟ بشوف بس موجودة
ولا مش موجودة لو حطيت هنا 100 وعملت
run أكيد هيطلع لي what؟ false صيغة ال expression
بس بحط القيمة in اسم ال list هتفحص فعلاً أن الرقم
موجود أو القيمة موجودة في ال list ولا لأ و بترجع
true أو false مادام بترجع true أو false ممكن
أستخدمها في if statement معروف ال if statement إيش
بتاخد؟ Boolean expression حاجات بترجع true أو
false صح ولا؟ while text يساوي done اللي يساوي أصلاً
إيش بترجع؟ true or false فالآن إيش الفكرة إن أنا
بدي أحذف كل التمانيات اللي موجودة في ال list إن
أنا أقوله طالما ال list فيها تمانية بضلّ أحذف كيف؟
بدي أعملها بالشكل هذا while تمانية
in x : x
dot remove التمانية الآن إيش هيعمل هو أول حاجة
هيفحص هل في في ال x تمانية في الأول هيحذف أول
واحدة وبعدين هيرجع يكمل في ال loop هل في في ال x
كمان تمانية اه في هيروح يحذف كمان طبعاً أكيد هذا
لما تروح أول ظهور بيصير مين بيصير هذا بيروح بيحذف
كمان تمانية و بفحص ثاني هل ال x فيها تمانية طالما
فيها تمانية بيروح بيعمل إيش؟ remove بيضلّ ومستمر لحد
ال x ما يضلّش فيها ولا إيش ولا تمانية كيف نتأكد إذا
شغال ولا لأ؟ بيروح نطبع ال x عشان نشوف ضلّ فيها
تمانيات ولا ما ضلّش صح ولا إيه يا جماعة؟ تمام؟
أفهمنا كيف أنا أفحص إذا العنصر موجود في ال list أو
لا؟ يعني أنا مثلاً لأن لو أنا جيت أعمل run تمام هاي
اللي طبع ليها لو كانت ال list كبيرة ممكن تقوم ب
print مثلاً 8 in x اه ال print 8 in x هيقول لي
في ضايق يعني true أو false تمام بس أنا طبعت ال
list هنا عشان أشوف قدامي في تمانيات ولا لأ تمام
يبقى ببساطة هذا السؤال تعلمنا منه حاجتين أول حاجة
إن أنا عشان أفحص عنصر موجود في ال list أو لأ مثلاً
أنا بقوله if 9 in x أطبع لي مثلاً print found إيش
يعني؟ يعني إنه لجّه if أطبع لي not found هذا
ال code إيش بيعمل؟ بيفحص لي إذا الرقم القيمة موجودة
في ال list ولا لأ إذا موجود بيرجع لي found مش موجود
بيعمل لي إيش not found وممكن أدخلها كإيش؟ ك input يعني
المستخدم بدّه يبحث هل في طالب اسمه أحمد ولا لأ هاي
مثلاً عندي أنا مجموعة الطلبة مثلاً names تمام؟ في
عندي أحمد تمام؟ وعلي وعمر بدّه يشوف هل في في
الكلية أو في الصف عنده طالب اسمه مثلاً ذكي تمام؟
يعني كأنه بدّه يعمل بحث عملية بحث صح بقى لأ ف أنا
بطلب منه في الأول أقول له مثلاً keyword إيش يعني
ال keyword الكلمة المفتاحية اللي بنبحث عنها input
مثلاً
what do you want to search for إيش يعني عن إيش بقى
تبحث هو يخزن النتيجة وين في ال keyword اللي هتبقى
أقوله if keyword in names إيش يعني بيدور لأن هيبحث
هل ال keyword موجودة في ال names تمام print بدّه
أقوله found else
print not
found
الآن بيسأل البرنامج عن إيش بدك تبحث بتقوله ببحث
عن عمر تمام هي بقول لي إيش هنا found تمام ابحث ثاني
هي مثلاً ذكي تمام هي جالي إيش not found فعن طريق
الآن أنا ممكن إيش ابحث تمام وشوفنا كيف نعمل remove
إن أنا بعملها while طالما إن العنصر موجود دلك اعمله
إيش اعمله remove
طيب، ضروري يا جماعة المحاضرة اللي جاي تيجي مرجعين
الموضوع عادة كويس، البرمجة تراكمية، الموضوع اللي
بندرّسه وبتحلّوا عليه أسئلة في البيت لا يمكن تفهم
المحاضرات اللاحقة، تمام؟ لازم تجرّب تحلّ، لازم تكتب
بإيدك وتلخبط وتطلع لك error عشان تتعلم، هي هيك
البرمجة قلت لكوا أنا مثلاً بيسوق بسكليت صح؟ هذا زيه،
تمام؟ لازم الواحد .. ما ينفعش أُتفرج على الفيديو هيك
و أنا مبسوط وخلصنا، لأ لازم الواحد يكتب بإيده،
تمام؟ موجودة، تمام؟ على ال model موجودة، تمام؟
ومحاضرة .. هذه المحاضرة هأضيفها على ال model اليوم،
تمام؟ خذوا السؤال للمرة الجاية، تمام؟ هاي .. كيف؟
اللي هنا ما نُظّمتش، لكن أنا بصور عند الطلاب، تمام؟
كلها بتنزل، اتعدّلت، آخر محاضرتين صار الـ A، صار
الصوت كويس، تمام؟ الآن بدنا نعمل سؤال لعلامات،
تمام؟ بدنا ندخل .. بدنا نعمل عند ال list فيها
علامات طلاب، تمام؟ بدي يطبع لي كل العلامات فوق ال
60 مرتبة، تمام؟ مش إحنا أخذنا كيف تطبع أقل خمس
علامات وأقل خمس علامات، اللي قال لأ، بدنا نطبع كل
العلامات اللي فوق الستين مرتبة، تمام؟ جرّبوا تحلّوا،
لازم الواحد يفكر ويجرّب عشان هذا، تمام؟