طيب يا جماعة السلام عليكم ان شاء الله اليوم هنكمل
بعض الأسئلة المتعلقة بال list يعني احنا ترتيبنا
دايما في المحاضرات ان في الأول احنا بنعرف ايش
أهمية الموضوع اللي احنا بندرسه في الأول عرفناه ايش
ال list و ايش فيديوتها و بعدين بنشرح أساسيات
الموضوعيعني كيف أنا بتعامل مع ال list بطرق مختلفة
الطرق إضافة حذف تعديل loop iteration وبعدين بنشوف
أمثلة عملية من خلالها بدنا نستفيد من طرق التعامل
المختلفة مع ال list بحيث أننا نستفيد منها بتطبيقات
عملية طيب حاليها بدنا نحل بعض الأسئلة المحاضرة
الماضية زي مثلا شفنا السؤال بتاع ال puzzle ان انا
اختار مثلا رقم عشوائي منمن مجموعة أرقام أشوف أكبر
عنصر أصغر عنصر و هكذا كيف ندخل مثلا أسماء نرتبها
ابجديا نشوف أعلى مثلا خمس علامات جابوها الطلبة و
استخدمنا خلالها methods مختلفة اللي هي علاقة في ال
list نشوف الآن بعض الأسئلة التانية
الآن مثلا أخر حاجة طلبنا سؤال أو حكينا عن سؤال
قلنا نحل المرة الجاي اللي هو write a program that
takes a list of marks and returns a list of marks
greater than 60 يعني بدنا يكون عند list من العلمات
تاوي مثلا خمسين ستة و ستين سبعين تمانين واحد و
تسعين خمسة و تمانين واحد و ستينخمسة و أربعين، خمسة
و خمسين، أربعين، تمام؟ و بدنا نجيب العلامات اللي
أكتر من ستين في السؤال هذا إحنا إنا list فيها
مجموعة علامات، تمام؟ و مطلوب مني أطبع فقط العلامات
اللي أكتر من ستين، تمام؟ طيب عشان أجيب العلامات
اللي أكتر من ستين كل اللي لازم أعمله أن ألف أنا
على علامات كلهم علامة علامة و أشوف العلامة اللي
أكتر من ستين و أطبعها، تمام؟ بس، هي الفكرةطيب هنا
دخلت على for loop for I in marks if
I أكبر من أو يسوى 60 print I طيب
تعالى نشوف الحل اللي هالجيت اللي
قال هي الجواب طلع عندي تحت كل العلامات الموجودة
هنا ايش اكتر من او تسوى 60
طيب نشوف السؤال اللي بعده تطلعوا
معايا يا جماعة هنا فرضا انا كان عندي list اسمها
countries اش عن ال countries؟ اه الدول تمام؟ و هنا
عندي في أسماء الدول مثلا عندي USA تمام؟ كندا Egypt
تمام؟
و عند هنا ايش مثلا؟
Israel تمام Germany UK
Jordan
وبرضه بدنا نحط إيش إسرائيل برضه طيب انتبهوا معايا
شوي اللي أنا .. أنا بدي أعمل code بحيث أنه أنا ألف
على ال countries هذه و أشوف كل كلمة إسرائيل
أستبدلها و أحط بدلها إيشPalestine تمام؟ بنفع ال
countries كل ما يلاقي كلمة إزرائيل بنستبدلها ونحط
Palestine طيب هذا طبعا عملية الاستبدال مستخدم كتير
في الحياة، عندي ملف word، فيه كلماتبدي أعمل
استبدال لكلمة ما كان كلمة في النهاية هو بيتعامل مع
الكلمات كلها أو النص كله كمجموعة ك list list of
إيش of words مجموعة من الكلمات بدي أشوف أنا كل
كلمة مديش إياها يستبدل إياها بكلمة جديدة فالآن أنا
عند list في أسماء دول تمام؟ بدي ألف على ال list و
أستبدل دولة معينة إزرائيل مثلا و Palestine طب إيش
أسوي؟مين يحاول يقولي إيش أعمل؟ بدي أعمل loop إنتوا
معايا ولا لأ يا جماعة؟ أه بدي أعمل loop طيب يجيب
بدي أعمل for I
in countries طيب
I هنا إيش بتعمل يا جماعة؟الـ I هذه مش ال index الـ
I هذه for I in countries بيجيبلي القيمة صح ولا لأ
القيم الموجودة في ال countries طب ماشي بدي أقوله
if I تساوي إزرائيل صح؟ طبعا؟ المفروض هال gate في
الحالة هاد مبدل I تساوي طيب
بنعمل لوب ع ال countries for I in countries مفهوم
هنا أن ال I بتخزن فيها أيش؟ كل قيمة موجودة في ال
list يعني بمرع القيمة الأولى بخزنها في ال I إذا ال
I تساوى إسرائيل، حط في ال I إيش؟ Palestine، لكن هل
هذا الكلام صح ولا لأ؟ بدنا نتأكد منه، كيف بدنا
نتأكد منه؟ إنه في الآخر بعد ما نخلص اللوب نطبع ال
countries نقول print countries
وتعالى نعمل run تمام هى الناتج اللى موجود عندى هل
استبدالها هنا فى الناتج لأ لأ ايش اللى صار هنا يا
جماعة فى ال code اللى موجود مكتوب قدامنا فعليا انا
كل قيمة موجودة فى ال countries حطيتها وين فى ال I
قرأت القيمة أخدت مثلا USA وحطيتها فى متغير اسمه I
و بعدين انا استبدلت القيمة اللى موجودة وين فى ال I
لكن هل ال list نفسها اتغيرت واضحة إيش المشكلة؟ إنه
أنا قرأت القيمة الموجودة في ال list حطيتها في I و
بعدين بدلت القيمة الموجودة في I لكن هل غيرت القيمة
الموجودة في ال list؟ لأ يبقى هذا الحل في إيش؟ فيه
مشكلة
بالظبط احنا عشان نستبدل اي قيمة اخدنا احنا قبل هيك
لازم نكون عارفين ال index يعني مثلا انا بدي استبدل
القيمة التالتة في ال list بروح بحكيله countries
تلاتة
يساوي كذا كذا مثلا Palestineصح؟ هيك أنا بستبدل مش
هذه طريقة الاستبدال بروحله و روحلي على أنصر اللي
ال index تبعه تلاتة حط فيه إيش؟ بحط فيه Palestine
يبقى أنا الأن توصلت لنتيجة أن ال for loop هذه
بتظبطش معايا ليش؟ لأن ال for loop هذه بتجيبليش ال
index بتجيبلي إيش؟ بتجيبلي القيمة، تمام؟ حتى
لو why؟ why ال إيش؟مثلا why countries يساوي
اسرائيل و لازم نغيط ال index؟ ماشي هو ال while
برضه مش موجود عندى index هنا ال index هو الرقم
اللى بدي يتغير باستمرار طب انتبه معايا خليني أنا
أحله
إيش اللي عملته أنا هنا؟ for I in range لن ال
countries إيش هالكلام هذا؟
الـ I بتتغير من صفر إلى مين ال countries مثلا مثلا
هذه جداش حجمها واحد اتنين تلاتة اربعة خمسة ستة
سبعة تمانية تمام هيحط قلة هنا كأنه حطت range من
صفر إلى تمانية تمانية اكيد بياخدوش اخر index هو
سبعة ليش على اساس اخلي ال I تتغير ايشمن صفر إلى
سبعة تمام؟ الآن بحكيله if countries I
if
countries I يساوي Israel countries
I يساوي
هذا الحل صح ايش فرق الحل هذا عن الحل السابق ان
الحل السابق انا كنت بعمل loop على ال values تمام
الحل هذا انا بعمل loop على ال index تمام الفرق ان
انا محتاج ال index عشان ال list تبدأ لو انا بس بدي
اطبع القيم الموجودة في ال list بحتاجش ال index
بحتاج اجيب ال values لكن انا مدام بدي استبدل قيم
بحتاج ال indexفحكيت له اعمل له بحيث ان ال I تتغير
من صفر الى طول ال list على أساس ان ال I تكون
قيمتها صفر واحد اتنين تلاتة اربعة خمسة ستة سبعة
طبعا عند .. طيب ايش هينفذ اول حاجة ال I اول قيمة
الها ايش صفر هيروح if countries بينقصين صفر انا
قرأت القيمة الموجودة في الموقع صفر اذا كانت
اسرائيلاستبدلها بإيش؟ تروح على countries I تمام؟
وحط فيها إيش؟ Palestine هيك أنا ببدّل القيمة
الموجودة في ال list مباشرة تمام؟ بعدين هيحط ال I
بواحد if countries I يساوي إزرائيل حط فيها إيش؟
Palestine و هكذا الآن
عشان أتأكد من الحل بدي أطبعprint طيب
شوف الحل الأن هنا هي الأن استبدل كل ظهور لإزرائيل
بإيش؟ بكلمة Palestine
انعيده على السريع مرة تانية في الأول انا جماعة كنت
اعمل for i او اول ما فكرت بدأت افكر زي هيك قلت
ماشي انا بعمل loop على ال countries و بضحك في
بلستان طبعا بقول for i in countries
هيك
في الحالة ده لما اقول for i in list بيجيبلي القيم
اللي موجودة في ال list طبعا بنفعش اقوله if i يساوي
إسرائيل حط اللي I فيها Palestine هذا الحل مش صح
لإنه فعليا أنا بستبدل القيمة الموجودة في ال
variable مش في ال list بستبدل القيمة الموجودة في
ال I يعني احنا اتفاجنا إنه هنا في الحالة هذه في ال
four loop هذه بيقرأ أول قيمة من ال countries
بيحطها وين في ال I وأنا هنا بستبدل القيمة الموجودة
في ال I مش في ال list يعني عشان أنا أستبدل في ال
list مباشرةبدي أصبح أقرأ من ال list على طول بدي
أصبح أعرف ال index اللي موجود في ال list فغيرتله
بقولتله و الله بدل ما أنت تقرأ القيم تمام مر على
ال indices بتاعة ال list كيف؟ بقولتله for i in
تمام in range لن ال countries كأن حطته من range 0
إلى 7 او 8هكذا انا قلت له مرري لي على كل ال
indices بتاعة ال list صفر واحد اتنين تلاتة لأن
مادام ال I تشير الى index مش قيمة انا لما اقارن
بده اقارن ايش قيمة لما اقارن يعني انا لما .. بده
اشوف القيمة اذا تساوي إزرائيل استبدل ليها فهنا
مفهومش اقوله I تساوي إزرائيل ليش لأن ال I عبارة عن
إيش؟ركزوا معايا يا جماعة ال I هنا عبارة عن رقم،
صح؟ لما أقوله I in range كذا، اه هنا ال I رقم، مش
قيمة، تمام؟ فلازم أقوله for countries I if
countries I يساوي Israel countries
I، حط فيها Palestine
طبعا واضحة يا جماعة طيب نشوف سؤال تاني خليني
الأن ناخد بعض التمرين الموجودة في الكتاب طبعا نشوف
بعض التمرين الموجودة في الكتاب طيب
هنا أنا روحت على الكتاب هذا الأسئلة موجودة في
chapter 10 طبعا اللي هو في صفحة 349 طبعا
صفحة 349 فيه طبعا هحل بعض الأسئلة اليوم و هعطيكوا
homework من الأسئلة هذه هنبدأ بحل سؤال .. سؤال رقم
اتنين عشر اتنين السؤال ايش بحكي خلينا نقراه write
a program that reads a list of integers and
displays them in a reverse order in which they
were readيعني اقرألي انت list of integers خلي
المستخدم يدخل list of integers ويعكس ليهم طبعا في
عندي method جاهز اسمها reverse كيف يقرأ integers
احنا شوفنا كيف نعمل while loop نخلي المستخدم يدخل
بيانات كلهم بتخزنه في ال list و بعدين بنعمل
reverse هذا السؤال مش هحله هحطه ك homework لكم
صفحة 349 chapter عشرة طيب هنتقل لأقل سؤال عشرة
تلاتة طيب
هذا سؤال عشرة تلاتة فكرة كويسة وممكن احتاجها كتير
في تطبيقاتwrite a program that reads some integers
between واحد لمية and counts the occurrences of
each here is a sample run of the program يعني
بنعمل برنامج شكله كالتالي هو الآن فارجاني كيف
البرنامج بيشتغل enter integers between واحد لمية
دخلي أرقام من واحد لمية البرنامج إيش هياخد مني؟
هياخد مني مجموعة أرقام بفصل بينها إيش space يعني
أنا بدخلي الرقم الأول space الرقم التاني space
الرقم التالت و هكذابعد ما أخلص كل الأرقام بضغط إيش
إنتر إيش بده يطلعلي الآن بده يحكي لي كل رقم كم مرة
اتكرر يعني مثلا في الأرقام هذه اللي أنا دخلتها
اتنين اتكررت كم مرة مرتين التلاتة اتكررت كم مرة
مرة الأربعة اتكررت مرة الخمسة مرتين الستة مرة
تلاتة و عشرين مرة تلاتة و أربعين مرة تمام يعني هو
بده يعدلليكم قيمة انا دخلت كل قيمة كم مرة اتكررت
طيب في سؤال زي هيك يا جماعة لما نجي نحل احنا حاول
تجزء السؤال لإجزاء طبعا يعني ليش ان الواحد لو فكر
وقلك انا مش عارف احل خلاص هسيب السؤال فاضي لأ حاول
نقسمه لإجزاء أول جزئية اللي هي إدخال البيانات هذه
أعمل ال code تعالي إدخال واجهز البيانات في list
هذه مرحلة طبعا و بعدين ايش أسوي انا في ال listعشان
أنفذ الحاجة اللى بدهيا هذه مرحلة تانية فخلينا في
الأول مرحلة نشوف مرحلة ال input يعني انا انا بده
أدخل أرقام بينها spaces وفي الآخر بده الأرقام هدا
تتخزن مثلا في list مش هيك احنا بنعمل مثلا في
البداية ايوة
طبعا أكيد في الأول احنا بنكون عنده list فاضية و لا
تكون ايش X و بعدين طبعا لما تيجي عند الأرقام
بتضيفها وين؟ في ال Apple طيب بس هنا في اختلاف صغير
عن الأسنة اللي كنا ناخدها السابقة ان في الأول كنا
ندخل الأرقام رقم رقم و نضغط Enter صح؟و كل عملية
input تطلق لي رقم واحد اخده اعمله و ا append صح؟
مش هيك كنا نعمل؟ هذه احنا شوفنا كيف تنعمل بس هنا
مختلفة شوية لأن هنا بدخل الأرقام كلهم مرة واحدة
تمام؟ و بضغط enter يعني زمان كنا ايش احنا نعمل؟
نقول while trueلما كنا ندخل رقم رقم نعرف list
فاضية و نقول يالي true تمام و بعدين نروح نعمل
input int مثلا input enter a number تمام
و الرقم اللي بيجي بقول X.append
Fn يساوي ناقص واحد اعملي break هذا ال code ممتاز و
شغال بس في حالة ايش ان انا لو بده ادخل ارقام واحد
واحد و enter لكن هنا هو مختلف الوضع شوية لانه
بيقول دخلي كل الأرقام مرة واحدة و بعدين اضغط enter
و بعدين بنفذ ال code اللي هو بدهيهطيب يبقى اللي
بدنا نسويه الآن ان هو المستخدم هيدخل الأرقام
وبينها space بعدين بدنا ناخد كل ال input هذا
ونجزقه لأجزاء ونحطه في list واضح ايش بدنا نسوي؟
كيف نسوي؟ لسه هنشوف كيف نسوي مخدناش احنا لسه كيف
نسوي هنشرح هذا الجزء من خلال مثال بس اللي لازم
نسويه ان الأرقام كلها بده جزق بينها بناء على إيش
هجزق بينها؟ بناء على مسافة صح؟ أنا عندي أرقامخمسة
.. ستة .. تلتاش .. اربع .. عشرين .. تسعة .. تمام؟
دخلتهم كلهم مرة واحدة .. بدي أجزّيهم بناء على ال
spaces .. و أخدهم كل واحدة فيهم و أحطها في مكان في
list .. صاروا في list .. تمام؟ بس كيف هذا ينفذ؟
انتبهوا معايا ..
طيب اول حاجة بدنا input صح فبدأ اقول x يساوي input
انشوف
السؤال ايش بيقول هنا enter integers
between واحد and مية
طيب كل حاجة الان صارت .. طبعا هو ال user هيدخل رقم
space رقم space رقم space كل حاجة هتكون موجودة
وين؟ وين هتكون مخزنة؟ في ال X أول ما ال user يضغط
enter الان بده اروح .. انتبه معايا شوف ال method
هذي لو كان أنا عندي نص تمام؟ نص ممكن اجعل نص و
اعمل dot وانفذ method اسمها split
ماذا يعني كلمة split؟ Split يعني
جزء اقسم كلمة split بالانجليزي معناها اقسم جزء من
اسمها هذه method function موجودة x dot splitبين
القصين بنحط الحاجة اللي على أساسها بالدجازة ممكن
تكون كمة مثلا مش شرط تكون .. انا هنا حاطط ايش؟
space .. هذا ال split هو بيقول لحالها لحالها
بترجّه لل list يعني
كل اللي موجود على اللوح هذا .. هذا كله لحاله مين
بتنفذه؟ split .. تمام؟ أنا لو عندي أي نص .. تمام؟
مثلا helloword تمام اي نص بحطه في متغير x مثلا
بعدين بجيب بقوله x dot split و بحط مثلا مسافة ايش
الناتج عن تلفين ال split هذه برجع ل list فيها كلمة
hello و فيها ايش one ليش لأنه مين الفاصل اللي انا
حددته هنا ال space فرح قاله ال split جهزتلي list
فيها إجزاء النص اللي إجا عندي بناء على إيش؟ على
القاسم اللي أنا محدده هنا يعني فعليا عن طريق أنا
split يا جماعة جهزت من العناصر كلها في list واحدة
نتأكد من اللي أنا عملته لو روحنا طبقنا print list
أحنا لسه لحد الآن بدنا نشوف ال input دخل الأرقام 6
,7,13,12,4,9 وضغط enter شايفين هاي list فيها
الأرقام 6,7,13,12,4,9 كيف؟ لش؟ لأنه لسه بتعامل
معاهم أنهم نصوصلسه بتعامل معاه من النصوص يعني هو
كل اللي عمله انه انا دخلتله نص وجزق النص مالوش ده
هو ده رقم وغيره هو اتعامل معاه انه ايش انه نص طبعا
مش هتصبط انت لازم احولهم واحد واحد بس نشوف يمكن
السؤال مش محتاج ان انا ايش ان انا احول طيب يبقى
احنا اول جزئية اللي هي ادخال البيانات خلصناهابدنا
نفكر الآن في الجزئية التانية ايش الجزئية التانية
مطلوب فيها؟ مطلوب انه كل عنصر موجود في ال list
نطبع كم مرة موجود كل عنصر موجود في ال list نعرف كم
مرة موجود ايش رأيكوا كيف احنا نعرف العنصر كم مرة
موجود؟ اخدنا method قبل هيك حكيناكوا عنها اسمها
count صح ولا؟ يعني انا مثلا لما اطبع list.countعلي
هيعدلي كم مرة علي موجود بتكرر في ال list احنا مش
عارفين ال input مش عارفين ال input بس هو انا ايش
طلبت في السؤال انه لكل عنصر موجود في ال list بدنا
نشوف كم مرة اتكرر بالظبط هنعمله على عناصر ونقوله
لكل عنصر شوف لي كم مرة اتكرر بيعمل واحد لما يجزق
السؤال لإجزاءو يفكر فيه بمنطقية باعرف احله انا
انطلب مني في السؤال انه كل عنصر احكيلي كم مرة تكرر
مادام في كلمة كل عنصر معناه بلزمني ايش على طول لوب
تمام فبدي اقول for I in list ايش اعمل لكل I في ال
list تمام print list dot count
صح ولا لا يا جماعة؟ مش هيك السؤال بده؟ بده كل
answer موجود في ال list أطبعله كم مرة اتكرر بس
خليني أرتب الحل شوية عشان نعمله زي ما هو بده و إيش
بده؟ بده أطبعله الرقم اتكرر كذا times فبنقوله هنا
في ال print بيقولوا stir I occurs
إيش اللي أنا عملته يا جماعة هنا؟ اللي مش فاهم
المصيبة كل
اللي عملته أنه أنا بالضبط رسالة كاملة عملت ستر I
حولت ال I لإيش؟ عشان أقول الرقم I أو الانصر I
اتكرر occurs تمام؟ و هنا إيش هذا ال count؟ حولته
لإيش برضه؟ ل string و في الآخر times يعني عدد من
المراتعشان تطلع الرسالة تماما زي مين؟ زي ما هو
الطالب يعني
الجوابأصغر من نص السؤال صح ولا؟ الجواب أصغر من نص
السؤال أول ما تقرأ السؤال بتحس إيش؟ عقدة و لاحقة
مش فاهم الحاجة لكن لما يحلل الأجزاء بيلاقي إيش
بسيط فعليا هو طلب إنه لكل عنصر موجود في ال list
قولي كم مرة تكرر مدام أنا بحكي كل عنصر موجود في ال
list يبقى بالدعم اللوم لكل عنصر موجود في ال list
تقطعلي list.countI هذا الأساساللي حوليها ده ليش بس
عشان اجهز الجملة طب لسه تكتبوش يمكن نغير الحل مش
كامل ده لسه خليني أشوف الجواب بيطلع صح ولا لأ
تعالوا نعمل run
طبعا ما هو أنا مش لازم نحولهم integers count
بتعدوا كم مرة تكرروا خلاص سواء كان نص أو رقم اللي
هندخل الأرقام هي ستة سبعتاش ستة ستة تلاتة اتنين
تلاتة اربعة اربعة سبعتاش تمانين طبعا و بعدين بضغط
ايش enter طبعا تعالى نشوف الناتج و هل الناتج بيحقق
اللي انا بديه ولا لأأه حكالي طبعا في space نقصة،
ستة occurs كم مرة؟ تلت مرة، سبعتاش occurs مرتين،
ستة occurs تلت مرة، ستة تانية .. أيوة مين يفسرلي
ليش طلع النتج هيك؟ أيوة ليش؟ اه بالظبطيعني أنا
عندي ال list نفسها فيها خمس ستات تمام؟ اجيت على
الستة الأولى عدليها كم مرة موجودة و طبعلي رأى
الستة اللي بعدها برضه عدها تاني و طبعلي تمام؟ يعني
لكل مرة هيتكرر فيها ال answer هيكرر عملية العد ال
count أيوة
حتى
لو شلتيه مافيه بعد واحد تمام؟ نفس الحاجة مش هتفرق
طبعا احنا بدنا الهدف في هال gate عشان نحل المشكلة
انه كل عنصر مرنا عليه مانمرش عليه تاني صح ولا؟
ماشي بس انا اذا شيلته هو بوب ماضال لسه فيه بعده
يعني مش هيكون فيه قيمة انا لو شيلته العنصر نفسه و
مادام فيه بعده مكرر اه ماشي اعمل شرط اش يسوي فيه
لأ لأ شوفوا معايا هلجيت انا بدي الخلاصة انه كل رقم
مريت عليه مامروش عليه تاني؟ انه يبدأ
من حد ما .. ايش .. ايش ال issue زي بعض؟ ان ال
answer اللي في ال log مال على نفسه يعني كان نفس ال
issue ماها ده كيف بده اعرفها؟ انه انا زي مريت على
answer نفسي طبعا؟ أستاذ بستانسي مثلا مثلا أخد مثل
رقم 17 ببطل من ال index 17
برضه مش هتفرق لأنه هلاقي بعده برضه عناصر لأ طالع
معايا فكرة ال trick سهلة جدا هلجيت
انا كل الفكرة انا لو مر علي الحالة ده في الحياة اش
بسوي بروح مثلا باخد ورق خارجي هيك و بسجل بقول هذا
العنصر انا مريت عليه على اساس ان انا ماريت عليه
تاني برجع لمينللورقة اللي عندي بشوف هل أنا موجود
عندي في الورقة ولا لا، إذا موجود عندي مسجل معناه
خلاص ما تعدوش تاني، يعني مش هيك أنا ممكن أحل
المشكلة في الواقع، أنا الحاجة اللي عملتها بسجل إن
أنا خلصتها، تمام؟
المشكلة هي أن المتغير يتغير قيمته بسبب تغيير
مستخدم مستخدم مستخدم مستخدم مستخدم مستخدمتمام؟
والله إذا السجل هذا العنصر مش موجود فيه معناها لسه
إيش أنا ماعدتهوش بعد ما أعده و أخلص بحطه وين؟ في
ال list هذه لجديدة تمام؟ ترجعت تاني مرات على
العنصر تاني قبل ما أعده بروح بشوفه هل أنا عديته
قبل هيك ولا لأ؟ بشوف في ال list ولا لأ واضحة
الفكرة بشكل عام كيف أطبقها لجتنا نطبقها تمام؟ فبدأ
أروح أعمل list تاني اسمها مين؟ اسمها temp list
فاضيالان كل عنصر مريت عليه for I in list if I not
in list not in temp اخدنا احنا if I in temp
المحاضرة عشان نبحث عن عنصر موجود في ال list ولا لأ
هلجيت انا كتبت if I not in temp ايش هي not in
temp؟إذا ال I الرقم اللي مرت عليه مش موجود في ال
list، فده مش موجود في ال temp، إيش يعني الكلام ده
مش موجود في ال temp؟ يعني لسه جديد، أول مرة قمر
عليه، روح أده،
و إيش أعمل؟ أضيفه على ال temp
معناه ان هذا ال code هيتنفذ امتى فقط اذا كان
العنصر غير موجود في ال temp مرة
تانية اللخص الحل من البداية تمام هاي عندي انا طلبة
input ال user هيدخل ال parameters كلهم فاصل بينهم
space عشان احولهم ل list عملت ايشSplit بناءً على
الـ space لحاله و رجع ال list الان بدي امر على
العناصر اللي في ال list تمام؟ و بدي اعد كل عنصر و
اطمع كم مرة اتكرر لكن بدي اكون حريص ان العنصر اللي
مريت عليه مامرش عليه تاني صح؟ فروحت عملت سجل خارجي
اسمه مين؟ اسمه tim هذا عمل زي variable انا بخزن
فيه ان هذا مريت عليه سجلبس ماقدرش أعمله variable
لأنه أنا عندى عناصر كتير ممكن أحتاج أسجل في ال
list هذه إيش أكتر من حاجة مدام أكتر من حاجة بدى
أسجلها بينفعش أحط variable بحط إيش بحط list فإيديت
ال list هذه بس عشان تقوللي إيش اللي أنا عديته وإيش
اللي لسه معدتهوش طبعا فالأن كل عنصر مرت عليه اروح
فحصلة هل العنصر أنا عديته ولا لأ كيف يعني طبعا أنا
هنا اقول if I not in temp يعني لسهأنا مامريتش عليه
بالمرة أول مرة مش موجود في ال temp طبعا أكيد ال
temp في البداية تشغيل البرنامج إيش بتكون فاضي طيب
إذا العنصر مش موجود في ال temp عدليه و اطبعلي كام
مرة ظهر و روح ضيف ليه وين ع ال temp و رجع تاني كام
من وين في ال for loop مر ع العنصر اللي بعده والله
إذا العنصر not in temp مش موجود في ال temp بعده
تاني إذا موجود هذا ال code مالهمش هيتنفذ مش هذا ال
code معتمد على الشرط هذا مش هيتنفذ إلا لو الأنصار
مش موجود لكن لو موجود اه مش هيتنفذ هيروح على أنصار
على طول ايش اللي بعد هو هكذا الان انا لو عملت run
ستة
سبعة تمانية تمانية تسعة ستة ستة خمسة تمام تعالى
نشوف الناتج اللي طالع عندى
انتر انتجر بين واحد لمية هيطلع لستة تكررت كم مرة
تلاتة سبعة تكررت مرة تمانية مرتين مافيش عنده تكرار
واحد هنا هيقول طيب يعني هيك البرمجة صعبة صارت يعني
كيف احنا بنوصل للجواب من أول مرة زي هيك تمام هذه
المهارة اللي واحد باكتسبها مع إيشمع الممارسة، كل
ما برمج أكتر كل ما يشهر أكتر، هل جيت البرمجة و ال
python سيدرسوها في إيش؟ في المراحل الإبتدائية في
دول أوروبا، لإيش؟ لأنه بيلاقوا أن البرمجة بتمشط
التفكير الذهني والتفكير المنطقي عند الطلاب، تمام؟
فلما الطالب يصير يجرب ويكتب code زي هيك ويعرف كيف
يفكر ويحلل، بيصير عنده قدرة كبيرة في حل المشاكل،
مش بس بمشاكل برمجية، حتى في المشاكل في الحياة،
بيصير يفكر تفكير منطقي، طب أنا إيش أعمل؟ أه أبدأ
أجزء المشكلة لأجزاء، هاي المشكلة هادي حلها هيك هيك
هيك، المشكلة التانية زي هيك، تمام؟هذه بتجي مع
الممارسة كل ما الواحد فكر يحل مسائل أكتر كل ما
الواحد صار أفضل في البرمجة البرمجة مادة مراجعتها
مش أنه أنا بمسك الكتاب و بقعد بحفظ زي المواد
التانية لأ حلها مراجعتها بس حل أسئلة و ممكن الواحد
يدخل الامتحانات بدون ما إيش اه ميراجع البرمجة ممكن
الواحد يدخل الامتحانات بدون ما يراجع برمجة بالمرة
كيف؟ خلاص أنا مدان بحل و متمكنمش محتاج إن أنا
أراجع بالمرة الآن
خلّيني أنحل كمان سؤال السريع اللي هو سؤال مثلا طيب
هذا سؤال بسيطwrite a program that reads an
unspecified number of scores اكتب لبرنامج بيقرأ
unspecified number of scores يعني بقرأ درجات
unspecified إيش يعني غير محدد يعني خلينا نقول
بيعملها بالو صح ولا زي اللي كنا نعملها في
المحاضرات السابقة طيب بعدين بعد ما يقرأ الأرقام
and determines how many scores are above or equal
to the averageيعني بعد ما دخل العلمات مين فيه
علامات how many scores يعني طلب مني عدد صح؟ how
many إيش يعني؟ بده عدد العلمات اللي أكتر من ال
average تمام؟
يعني مثلا أنا دخلت علامات تسعة و تسعين، تمانين،
سبعة و سبعين، ستين، خمس و خمسين حسب ال average كل
عجد ديش مثلا سبعينهو يقبع لي أن هناك 3 علامات أكتر
من 70 واضح الفكرة كيف؟ تمام؟ and how many scores
are below the average؟ يحتاج أيضًا كم علامة أقل من
مين من ال average؟ طيب،
دعنا نحل السؤال هذا، أول شيء ندخل مين؟ ندخل
الدرجات، دعنا نعملها while loop تمام؟
زي اللي أخدناها في المحاضرة الماضية while true
تمام بدي أقول له هنا score scores
انتبهوا معايا يا جماعة score int input enter
a score تمام دخل درجة حولتها لانتجة و بعدين بدي
أخد ال score هذهلسة بدو اضيفهم ع مين خلينا في
الأول نخزن كل حاجة في ال list و بعدين ايش بنفكر
كيف نحل السؤال انا يا جماعة لسه ماعملتش حاجة كل
اللي بعمله ايش اني بقرأ ال score و بعدين عشان يطلع
من ال loop if score يساوي ناقص واحد بدنا
نعمل break لحتى الآن هذا ال code مش جديدتمام؟ هذا
كل اللي بيسوي انه بقرا العناصر و بخزينها وين في ال
list اه معلش انا عشان بكتب Java فبتعود على هذا طيب
لان صارت عندي العلامات كلها موجودة في list ايش طلب
مني؟ كان علامة اكتر من average وكان علامة اصغر من
ايش؟ من ال average مفهوم منطقي انه لازم في الاول
احسب mainالـ Average بدي احسب ال average في ضربة
واحدة بدي اقول له average يساوي sum ال scores على
ال N
الـ scores صحيحة الله يا جماعة، هاي جبت مين؟ جبت
ال average، الآن إيش طلب مني؟ كان علامة أكتر من ال
average، إيش رايكوا كيف نعملها هذي؟ كيف نجيب؟ كان
علامة أكتر من ال average؟
أه بعمل four بمر على العلامات طبعا كل علامة أكتر
من ال average خزن مش .. انا بديش العلامات انا بدي
عددهم مدان عددهم بعمل count طبعا لحظة أن هو طلب
مني عدد العلامات الأكتر من ال average و الأقل يبقى
كام counter يكون عندى؟ اتنين طبعا فبدا أقول له
count oneتمام؟ و count two يساوي صفر هنا أنا
عرفتهم متغيرين صح؟ قيمتهم إيش؟ قيمتهم صفر الآن
بعمل for loop for I in إيش؟ ال scores مرري لي على
كل درجة موجودة في ال scores if ال I إيش؟ أكبر من
ال average تمام؟ ضيف ال count plus equal واحدcount
واحد صح؟ اذا أكبر من أو يساوي average زي ال
counter else مافيش ده احطله F تاني else تمام ال
counter التاني زائد يساوي واحد counter اتنين يعني
يا جماعة هاي الحل يعني كل المراحل هذه اللي فوقهذه
ايش فايديتها؟ ادخل صح؟ هذه سهلة المفروض وهذا السطر
لحسب مين ال average وهنا عرفت two counters انه ايش
قيل في السؤال how many تمام؟ و بعدين مريت عن مين؟
عن scores واحد واحد تمام؟ كل score أكتر من أو
يساوي average روح زيد ال count الأولاني غير هيك
إيش يعني؟ إذا أصغر من ال average زيد ال count
التاني وفي الآخر بقوله print بدي أقوله marks
scores greater than or equal to average يساوي star
count واحد هذه
scores عشان أطبع أيش العالمات scores less than
Average اطبعلي ال count التاني نقل مرة نجرب دخل
درجة تسعين تمانين سبعين ستين اربعين بكفي هي ناقص
واحد تمام اه is not انت
طيب
أنت لأ score حولناها لانت اف ال score يساوي نقطة
append scores
انت
object is not iterable
طيب خليني بس نتأكد جزء جزء
طب ال loop شغالة ال count لحظة
شوية شوف طيب
لحد تلقاه مافيش خطأ
ماشي هل جيت يمكن يشتغل تمانية و تمانين سبعين ستين
مش عارف بس فصلت هدولة ال count خلت كل واحد لحاله
اشتغلت الصح المهم فكرة السؤال واضحة يا جماعة اخر
حاجة في homework يا جماعة
فيهم work ضروري تحله الأسئلة هذه هفتحله ان شاء
الله assignment على ال model تمام اللي هو سؤال من
الكتاب سؤال واحد واثنين واربع وستة و تمانية و
تلتاش تمام سؤال واحد واثنين واربع وستة و تمانية و
تلتاش كل سؤال بتحله في ملف لحاله و في الآخر بتجمع
الملفات بتحطوها في مجلدبرقمكم بتضغطوه وبتبعتوه
كملف