طيب السلام عليكم أعطيناكم احنا واجب يعني لسه الواجب
deadline ما وصلش صح؟ اه طيب اه يعني بس نتسلمه إن
شاء الله بنشوف إذا في أسئلة مش عارفين نتحلها
بنحلها تمام؟ وأنا بركض على حاجة يا جماعة إن الواجب
تحلوه بنفسكم تمام؟ ليش؟ لأن بكرا مثلاً ممكن في
الامتحان يجي بعض الأسئلة من الواجب تمام؟ وأنت
ما تحلش السؤال في الامتحان وفي الواجب بتجيبليها
محلول هذا إيش معناه؟ أنه غالباً أو أكيد إن أنت مش
أنت اللي حاله ففي الحالة هذه هحطلك في الواجب زي ما
أخذت وين في الامتحان واضحة كيف الفكرة؟ طيب و
بعدين عشان تستفيدوا لأن أصلاً هذا الواجب هو مراجعة
المادة يعني فعلياً أنا هذه المادة بحفظهاش ما فيش
عندي معلومات في حفظها هي المراجعة أو دراستها حل
تمارين طيب اللي بنسوي المحاضرة هذه يا جماعة ناخد
تمرين آخر على ال list احنا هيك موضوع ال list قريباً
خلصناه وبعدين نبدأ في موضوع جديد اللي هو ال
strings طبعاً طيب السؤال اللي بدي أحله اللي جيت هو
السؤال عشرة خمسة في الكتاب السؤال بيقول write a
program that reads in numbers separated by a space
in one line
يعني بطلب مني أدخل أرقام، الأرقام هذه مفصولة عن
بعض بمسافات، بعد ما أدخل الأرقام في الآخر بضغط
enter المفروض ياخد الأرقام هذه وإيش يعمل؟ يفصلهم،
أخدنا كيف نفصل ال string عن طريق ال split
reads in numbers separated by a space in one line
and displays distinct numbers يعني بعد هيك بعد ما
ياخد الأرقام بده يعرضلي فقط الأرقام المختلفة يعني
إذا الرقم أنا دخلته أكثر من مرة في ال input لما
يعرضليها بيعرضليها بس إيش بس مرة واحدة يعني مثلاً
السؤال هذا enter ten numbers تمام بدخل رقم واحد
واتنين وتلاتة واتنين وواحد ستة تلاتة أربعة خمسة
اتنين لاحظ أن في أرقام متكررة زي الاتنين والتلاتة
مثلاً ضغط انتر تمام طبعاً ليه حلنا هذا اه شبيه فيه طيب
نحله تاني من باب التفكير طبعاً طلعلي إيش الناتج
واحد اتنين تلاتة ستة أربعة خمسة يعني الأرقام بدون
إيش بدون تكرار هذا مثال على أرقام بس يعني أكيد
مستخدم كثير في الحياة لإزالة إيش الحاجات المكررة
سواء أنا عندي نصوص كلمات أسماء
أفلترهم على أساس إيش أخد بس الأسماء بدون تكرار طيب
زي ما قلنا أو اتعودنا فحل أسئلة زي هيك حاول تجزئ
السؤال لأجزاء وخل كل جزئية بتفكر فيها فحينه أول
جزئية لازم ناخد ال input تمام ونجزئه بحيث يكون
عنده list وبعدين نفكر كيف نشيل التكرار طبعاً احنا
شفنا كيف نجزئ المحاضرة الماضية يعني أول حاجة بدي
أقوله هنا numbers تمام وبدي أقوله input على أساس
نقرأ الأرقام اللي هو enter ten numbers هي
داخل أرقام مفصول بينها spaces تمام؟ بعدين بروح ل
numbers تمام؟ وبحكيله split
تمام؟ وهنا بقول ال split هيكون بناء على المسافة
هذا ال split حكينا يعني أول حاجة هيسميه text على
أساس إن أنا بدخله كنص تمام؟
ال text عم بتقوله split عشان ينشئ عند إيش list طيب
ال list هاد هيكون فيها الأرقام المطلوب الآن أن أنا
أجيب الأرقام بدون
ممتاز سؤال كويس الآن يا جماعة أنا عندي تمام لو أنا
نفذت ال code هذا وشفت ال list إيش فيها يكون فيها
نصوص تمام يعني هاي مثلاً enter 10 numbers واحد
مسافة ستة أربعة سبعة ثمانية تسعة و enter هاي طبقة
لل list بس طبقة اللي شايفين في quotations موجودة
حواليك رقم بدليل إن هذا نص تمام كيف نحوله
رقم وأحوله ل integer كيف؟ طلعوا معايا for .. شوفوا
بدي أعملها في خطوة واحدة for I in .. لأ بدي أقوله
range لن
ال list و
بعدين بروح ل list ال I وبأخد فيها int list ال I
حد فاهم حاجة عن إيش بسوي؟
ونجرب نشوف نتأكد إنه شرقال بلاش يطلع من الشرقال
تضحكوا عليا بعدين تمام هاي list بتاع نعمل run الآن
تمام
هاي الآن هاي الناتج اللي عندي في الأول طبق لل list
وهي نصوص وبعدين طبق ليه وهي إيش وهي أرقام إيش
اللي عملت عشان أحور النصوص لأرقام تمام هذه الليست
هنا بتجي عندك نصوص صح؟ عشان أحولها لأرقام بده أمر
على كل رقم أرقام تمام؟ على كل input أو كل entry
موجود في الليست وأعدل القيمة بتاعته لرقم صح ولا
لأ؟ يا جماعة احنا أنا عندي list هذه شكل ال list
لحظة تكتبوش تمام؟ لأن هذا هرحيها أنا عندي محتوى
list عبارة عن مثلًا نصوص هذه نص مش رقم تمام؟ بدي
أحوله لرقم بدي أمره على كل واحد تمام؟ وأقول له
استبدل للواحد بإيش؟ بواحد بدون quotation صح؟ و
استبدل للاتنين باتنين بدون quotation والستة بستة
بدون quotation مدام أنا بحكي استبدال بنفعش أستخدم
ال for loop بتاعة for I in list شفت المحاضرة
الماضية إنه لما بده يعدل قيم ال list for I in list
بقدرش أعدل فيها بقدرش إيه يعني أنا لأ عشان أعدل
قيمة لازم أكون عارف ال index تمام هذا أخذنا مثال
عليه المرة الماضية يعني أنا مثلاً لما آجي أقول بده
يعدل قيم ال list أحطها صفر مثلاً بينفعش أقوله for I
in list تمام إيش بينعدله بيقوله I حطها صفر هذا ال
code صح؟ لأ هذا بيعدل بس في إيش؟ في ال I لكن هل
أعدل في ال list؟ لأ عشان أعدل في ال list ده أضطر
أعمل iteration على ال index تا list فعشان هيك قلت
له for I in لن ال list عشان ال I تتغير من إيش؟ صفر
وواحد واتنين وتلاتة طب ليش أنا بدي أوصل لل
index؟ بديش أوصل للمحتوى على أساس أقول له هذه list
ال I بدنا نغيرها نحط فيها قيمة جديدة إيش القيمة
الجديدة اللي بنحطها في list ال I؟ هي خد list ال I
نفسها وحولها ل integer وخزنها في list ال I طبعاً
واحد اللي مش متعود يبرمج هيتطلع في السطر هذا و
يقول لي كيف هد نحطها هي نفسها في هد؟ لأ أنا بقرأ
القيمة بتاعة list ال I معروف ال assignment اللي
يساوي الواحدة إيش بيعمل؟ بنفذل على الشمال وبخزينها
في اليمين مين اللي بتنفذ في الأول اللي على الشمال؟
إيش هيعمل؟ هيقرأ القيمة اللي عند list ال I وي
حولها ل integer ويرجع يخزينها وين؟ في list ال I
واضحة يا جماعة؟ السؤال
المهم اللي بترح نفسه هل أنا بحتاج فعلاً أحول
الأرقام؟
هو اللي طالبه إنه بسأله التكرار صح ولا لأ؟ فهل
لازمني أحول ما هو التكرار بحسبه وبعتبره نص؟ و
بشوف مكرر ولا لأ؟ يعني أنا لازمني أحول الأرقام
إيه؟ أنت لما تكون .. محتاج أعمل عملية حسابية،
تمام؟ اه بحول الأرقام، لكن هل في المثال تبعي
محتاج أن أحولهم لأرقام؟ لأ التكرار بعتبره نص،
وشوف الله إذا مكرر، شيله، تمام؟ الخير هو أننا
فرجناكم كيف نغير القيم في ال list لكن فعلياً هذا
ال code ما له مش لازم عرفتوا كيف قلتلكم
ما تكتبوهوش؟ لأن هو كفكرة لكن في الحل للسؤال مش
لازم طب نكمل الآن احنا أنتو معايا يا جماعة ولا
لأ؟ الآن احنا فصلنا جمعنا البيانات اللي أنا دخلتها
في list واحدة بدي أشيل التكرار طيب مين يفكر معايا
أنا عندي list فيها أرقام تمام فيها بيانات مكررة
أسماء مثلاً تمام هاي مثلاً خلينا نقول هنا فيه أحمد
تمام وهنا فيه علي تمام وهنا عمر تمام وهنا فيه
كمان أحمد تمام وهنا فيه عمر تمام هاي list فيها
أسماء فيها تكرار بدي أجيب الأسماء بدون تكرار أيوة
اتفضلي
أيوة اتفضلي نعمل if القيمة not unless نعمل if
القيمة
not unless نعمل if القيمة not unless نعمل if
القيمة not unless نعمل if القيمة not unless نعمل
if القيمة not unless نعمل if القيمة not unless
نعمل if القيمة not unless نعمل if القيمة not
not unless نعمل if القيمة not unless نعمل if
القيمة not unless نعمل if القيمة not unless نعمل
if القيمة not صح؟ وبعدين أروح على الثاني، هاي علي،
في عندي علي قبل هيك؟ لأ لسه هذا أول مرة أمر عليه،
وبعدين لاجيت عمر، في عنده عمر قبل هيك؟ لأ، بعدين
لاجيت إيش؟ أحمد، بدأ أتذكر أنه كان في أحمد قبل،
تمام؟ على أساس أن هذا ما نّه، خلاص بدش هي، تمام؟
فلازم يكون عندي طريقة أنه أنا كل اسم أمر عليه أضل
ما أذكرهليش؟ عشان لو مرنيت عليها مرة ثانية ما آخدهوش
بعين الاعتبار، طبعا فالآن احنا هنحتاج طبعا .. طبعا
عشان نتذكر حاجة بنعمل variable تمام؟ لكن احنا هنا
محتاجين نتذكر أكثر من حاجة .. فبلزمني إيش؟ بلزمني
list .. ليش بتلزمني ال list؟ لأنه الآن أنا الفكرة
أنه أنا الأسماء اللي بده أمر عليها .. كل اسم بده
أمر عليه أول مرة بده أحطه في ال list عشان نتذكر
يعني وكأنه هذا ال list هي الورقة اللي أنا ماخدها
وقاعد بسجل عليها بقول اه مريتها أحمد سجل أحمد مريت
على عمر، سجل عمر، مريت على علي، سجل عليه، ليش؟ على
أساس لو مريت على أحمد مرة ثانية، أرجع، أتذكر،
أتطلع على إيش؟ على الورقة اللي عندي، أشوف مسجل
عليها أحمد ولا لا، تمام؟ إذا مسجل، ما ضيفوش ثاني،
تمام؟ هذا ال list هي اللي فيها الأسماء مالها اللي
مش مكررة، تمام؟ اللي هي الناتج النهائي اللي أنا
بديها، الورقة هذه، أنا في الحياة ورقة، لكن في
الواقع إيش ممثلها؟ أه ك list وبنفعش أمثلها ك
variable لأن ال variable بخزن فيه إيش حاجة واحدة
فهمتوا ليش بدنا list تمام طيب يبقى أنا عشان أشيل
التكرار بخزن ال list عشان أسجل فيها كل عنصر بمر
عليه ولو مرت عليه مرتين ما بديش أحطه في ال list
حالي فبعمل list جديدة في الأول إيش بتكون فاضية و
بعدين بنروح على ال list الأولانية بنقول for I in
list يعني روح مر على كل العناصر الموجودة في ال list
الأولى، وإيش نقوله؟ والله إذا العنصر اللي بمر
عليه مش موجود في ال list الثاني، يضيفه، يعني أنا
هاي الورقة عندي فاضية لسه، مريت على أحمد، هل أحمد
موجود في الورقة اللي عندي؟ أنا جاي بحول تفكير
الواقع إلى إيش، لبرمجة، هل أحمد موجود عندي في
الورقة؟ مش موجود، روح سجل إيش، أحمد وهكذا أي واحد
مش موجود في الورق بسجنه فبقول له if I not in list2
list2
.append ال I بس مر على عناصر أي حد بتلاقيهاش في
list2 أضيفها فيه الآن مر على حاجة موجودة مسبقا مش
هيضيفها تمام بعد ما يخلص اللوب كلها تمام بنقول له
list إيش print
لست اتنين تعالى
نجرب الآن
هذه النتيجة اللي طلعت عندي دخلت أنا مجموعة أرقام
الناتج اللي طلع عندي المفروض أنه طلعها للأرقام بدون
تكرار يعني مثلا عندي أنا الستة مرتين طلعها مرة
واحدة تمام الخمسة مرتين طلعها مرة واحدة السبعة
برضه مرة واحدة والثمانية والواحد والتسعة والاثنين
هدول ما تكرروش أصلا فطلعهم طلعهم مرة واحدة طبعا
لازالوا هدول كنصوص صح ولا تمام إذا بدي أهم أرقام
نعملهم زي ما عملنا قبل شوية طبعا خلاص هي اللي مطلوب
سونا أن احنا إيش شلنا المكرر واضحة يا جماعة كيف
الفكرة طيب هيك يا جماعة احنا بكون غطينا موضوع ال
list واخذنا عليه أمثلة كثير الآن هنتقل إن شاء الله
لموضوع ثاني وهو ال string موضوع ال string يا جماعة
مشروع في chapter ثمانية في الكتاب تمام مشروع في
chapter ثمانية في الكتاب واحد طبعا أول سؤال هيتورد
لأنفسكوا أنت يا نديتنا شبطة العشرة ورجعتنا لشبطر
ثمانية اللي إيش اللخبطة هذه؟ سبب اللخبطة هذه لأنه
هنشوف كمان شوية أن ال string هي نوع من أنواع ال
list وأنا عشان أفهم كيف أتعامل مع ال string بدأ
أكون قبل فاهم ال list عشان هيك أنا غيرت إيش؟ غيرت
الترتيب طيب ال string إيش هي ال string؟ ببساطة هي
عبارة عن نص
كيف نعرف ال string؟ بنعرفها زي أي variable عادي
يعني بيعرف x و y اللي بديها كيف هيفرجها ال string
عن أي رقم مثلا بالقيمة اللي أنا بحطها فيها يعني
أنا مثلا لو أجيت quotation .. double quotation كتبت
hello world هيك فعليا أنا عملت نص وخزنته في
variable اسمه إيش؟ اسمه x ال x صارت إيش؟ صارت
string
الآن في طريقة ثانية لتعرف ال string من باب العلم
بس تمام؟ ممكن أنا أجي أعمل string y أعمل str تمام؟
وأكتبله مثلا إيش؟ وأكتبله أحمد تمام؟ هذه نفسها
تكافئ أن أحط quotations على طول تمام؟ ليش
بتعطينيها بس من باب العلم؟ تمام؟ عشان لو واحد
شافها مكتوبة في كتاب، هيقولش هذه ما أخذناها عشان
طيب اللي بعده، الآن
الـ String يا جماعة هي نوع خاص من أنواع ال list
بمعنى أنه أنا لما فعليا عملت variable وكتبت فيه
hello world فعليا في الذاكرة في ال RAM راح عمل
list تمام؟
وكل حرف من حروف النص اتخذ وين؟ في مكان في space
طبعا هنا في مكان مستقل هذا شكل ال variable يعني ال
X صح باين أنه variable لكن هو فعليا إيش؟ عبارة عن
list كاملة وهذه كلها ال list اسمها إيش؟ اسمها X
طبعا هذا شكل ال string كما هو موجود في الذاكرة طيب
إيش بستفيد أنا؟ ماشي يعني أنا أنت بجاعة بتقولي
كده في الذاكرة موجود إيش استفدنا احنا يعني؟ أنا
هستفيد في إيش؟ أنه مثلا ممكن أقوله اطبعلي اعملي
print x 0، إيش يعني x 0؟ اطبعلي أول حرف، صح ولا
لأ؟ اعملي print x لن ال x ناقص واحد، إيش يعني؟ آخر
حرف أه مش لإن طبعة X بينقصين لإن X نقص واحد هد عشان
تجيب آخر حرف اللي هي نفسها لما أعمل X ثاني ناقص واحد
تمام print X تلاتة زي ما بتعامل مع ال list بتعامل
مع إيش مع ال string تمام تعالى شوف ال natural طالع
عنده هي هذا أول character وهذا الآخر وهذا برضه
الأخر وهذا مثلا رقم لل index 7 و 3 اللي هي ال ال
الثاني تمام ففعليا ال string تماما زيها زي إيش زي
ال list نقطة نسيت أحكيها احنا ليش أصلا بندرس ال
string إيش الفائدة من الموضوع ده كله تمام مش احنا
قلنا في الأول لازم نفهم إيش الفائدة اللي احنا
بندرْسه إن كثير من البرامج بحتاج من خلالها التعامل
مع نصوص زي إيش مثلا أنا بدي أعمل برنامج بحث بدي
أبحث في نص موجود أعمل موقع web وعنده صفحات وبدي
أقوله دورلي على كلمة كده في الصفحة كل المواقع اللي
بتحط بحث عملية البحث واستخرج من نص هذا نوع من
أنواع التعامل مع النصوص بدي عند نص معين بدي أستبد
الكلمات موجودة فيه شيللي كلمة كده وحطلي بدلها
كلمة ثانية هذا برضه استبدال الأجزاء من الكلمات، نص
معين قطع ليه الأجزاء، خليليه كل جملة لحال، مثلا في
برامج للتعامل مع النصوص، هذا كل نوع من .. بنسميه
text processing، معالجة النصوص وفيه أدوات كثير
مستخدمة وعلم واسع، موضوع ال text processing أساسيات
text processing أنا لازم أتعلم كيف أتعامل مع النص
طيب نرجع لموضوعنا هاي أنا جاعة بوصل العناصر من
خلال الـ index نقطة تانية الـ
functions برضه اللي كنا نستخدمها مع الـ list ممكن
نستخدمها مع الـ string زي إيش مثلا خلينا نقول len
الـ X مش هذه كلها اللي استخدمها في الـ list برضه هنا
لما أقول len الـ X تمام هيطبع لي المفروض طول إيش؟ طول الـ
string كمان في عندنا الـ max X
و print من الـ X نفس الـ methods اللي كانت موجودة في
الـ list طب هنا الـ max و الـ min إيش هيطبع؟ بالظبط
على أصلي code ترتيب الأصلي code هو كالتالي من a
capital لـ z capital وبعدهم بيجي الـ a small لـ z
small يعني دائماً مثلاً الـ b capital اللي askي
اتبعها أكبر من الـ a capital صح؟ الـ a small اللي
askي اتبعها أكبر من الـ z capital
كيف .. اه z small أكثر أكثر حاجة فإني لما أقول له
max كأني بقول له هات لي الـ character اللي أكبر ..
أكبر أسكي لما أقول له min كأني بقول له هات لي ا .. ا
.. الـ character اللي أقل أسكي كله واضحة إيش يعني
max و min .. من الـ .. من الـ text تمام
هاي مثلاً اه .. مش اللي صار هنا لحظة اه طبع طبع في
space اه الآن طول الـ 11 طول الـ list أو الـ string
الـ character اللي له أكتر ASCII code هو إيش؟ الـ R
small O P Q R S T U R لأن أقل ASCII code هو إيش؟ الـ
space مش في space هنا تمام هذا أقل ASCII code
طيب أيضاً من الحاجات اللي ممكن تلزمني في الـ string
الـ slicing مش أخدمها في الـ list موجود في الـ string
برضه يعني مثلاً بدي مثلاً الكلمة الأولى من النص هذا
هتليها أو عندي مثلاً واحد اسمه محمد علي تمام؟ بدي
اسمه الأول بس، تمام؟ بقول له روح لي للـ X، تمام؟ و هات
من البداية لحد إيش؟ صفر، واحد، اثنين، ثلاثة،
أربعة، خمسة، ستة، سبعة، هنعملها، في سؤال، هناخده،
خلينا نتعلم الأساسيات، بعدين بنشوف التمرين، تمام؟
زميلتكم بتسأل، بقول أنا مش عارف قد إيش طول أول اسم،
هل في طريقة أن أجيب دائماً الأول اسم؟ اه في، هذا
واحد من الأسئلة اللي حلوة، لأنه بندور على أول مسافة
وين موجودة وبعدين بنقول له تعالى من الأول للمسافة
تمام؟ بس لسه احنا ما أخذناش كيف ندور على أول مسافة
وين موجودة صح ولا؟ طيب صفر واحد اثنين ثلاثة أربعة
خمسة ستة سبعة تمام؟ بحط ثمانية ليش؟ عشان يجيب لي
أول سبعة تمام؟ وهذه عملنا مالها print
تمام؟ هي طبع لي إيش؟ طبع لي محمد طيب
شوفنا الـ slicing في كمان عندي حاجة اسمها الـ .. الـ
concatenation إيش يعني؟ ربط النصوص مع بعض تمام؟
يعني مثلاً واحد الـ first name تبعه
أحمد واحد الـ last name تبعه
عمر تمام؟ بده يربطهم مع بعض بقول له full name يساوي
first name زائد last name هيك طبعاً هيربطهم مع بعض
ملزقين في بعض بيكونوا يعني لو طبعت أنا full name
تمام وعملت print عشان
هذا بحط زائد الـ concatenation دائماً عبارة عن إيش؟
زائد طيب
في عندنا كمان الـ repetition إيش يعني كلمة repeat
تكرار repeat يكرر repetition يعني تكرار هذه برضه
موجودة في الـ list مش عارف أنا نسيت أعطيكم إياها
لو قلنا مثلاً الـ list عندي فيها مثلاً 1,2 و 1,4
خليني أقول تمام؟ وبعدين قلت له list 2 يساوي list 1
ضرب 5 تمام؟
شايفين كيف؟ list 1 ضرب 5 هذا معناه أنه اروح على
list 1 أكررها خمس مرات وهذا يصبح list 2 يعني خليني
أشوف إيش الناتج هلجيت أعمل run مطبع ناشمه print
list
2 تمام
هاي الشكل إيش؟ صارت واحد أربعة واحد أربعة واحد
أربعة واحد أربعة واحد أربعة أربعة أربعة أربعة
أربعة أربعة أربعة أربعة أربعة أربعة أربعة أربعة
أربعة أربعة أربعة أربعة أربعة أربعة
تمام؟ بالصدفة لجيت أن هذا اسمه برضه الـ last name
أحمد اسمه أحمد أحمد بتحصل تمام؟ بدي أكرر هذا ممكن
أقول له full name يساوي الـ first name ضرب اثنين هذا
repetition تكرار بيعمل أحمد وجنبها أحمد تمام؟ I
print full name تمام؟
ضرب ثلاثة بتطلع إيش؟ تكرار، مكرر طيب هي للعلم،
يعني ممكن ما تلزمش كثير في الاستخدام طيب
البحث في النص، إزاي ما ببحث في النص؟ برضه ممكن ابحث
عن text إحدى طرق البحث .. إحدى .. في طرق كثير بحث
يعني في الـ list في أكثر من طرق البحث أولها أن أعمل
in صح؟ if x in list بتطلع ليها true أو false وفي
طريقة ثانية اللي هي index ما الـ index بتستخدم في
البحث ليش؟ إذا العنصر موجود بيجيب لي الـ index تبعه
إيش .. لما يقولنا list dot index إيش فائدتها؟ عطله
كلمة بيشوف الكلمة قاعدة بيجيب لي الـ index تبعها صح
ولا أين موجودة هذا يعتبر من طرق البحث يعني إذا لقى
الكلمة هيرجع لي index رقم معين ما لقاهاش ممكن يرجع لي
error أو ناقص واحد مثلاً نفس البحث في الـ string في
الـ list برضه موجود في النصوص بمعنى مثلاً هاي الـ
text my name is Ahmed I live in Gaza I study in IUG
بدنا
نشوف نقول له text if بدنا نبحث في النص هذا نطلب من
المستخدم إيش search keyword input
search for نقطتين وبعدين بنقول له if text if search
keyword in text اطبع له found بس يقول لي موجود أو
مش موجود إيش هذا الـ code بيعمل هاي نص موجود عندي و
بعدين هطلب من المستخدم يدخل إيش كلمة وبعدين كيف
بدي أفحص الكلمة الموجودة في النص ولا لأ بدي أقول
له if search keyword موجودة في الـ text اطبع لي إيش
اطبع لي found زي
الـ lesson تماماً هاي لأ أنا شغلت البرنامج هحطه هاي
بدي أحط الـ input تمام هاي Gaza تمام هاي اطبع لي إيش
اه found لو حطيت أي كلمة ثانية مش هاطبع لي حاجة ممكن
أحط اللي هنا إيش else
طب بعد ما نجينا قبل نعرف مكانها اه مش هيك أنتم
سألتوا حالكم هل لقيت؟ اه بنقول له print تمام؟ بنروح
للـ text وبنقول له إيش؟ عندنا index وبنقول له search
keyword صح ولا لأ؟ يعني إذا الكلمة موجودة اطبع لي
أنها found معايا أنتم ولا لأ يا جماعة؟ وهاي بده
كمان اختصر الـ printout تمام؟ أحط هنا found at
حد فاهم حاجة إيش عملت مرة ثانية هاي نص يا جماعة
طلبت من المستخدم يدخل لي الكلمة اللي بتبحث عنها تمام
وبعدين قلت له شوف لي الكلمة موجودة في النص ولا لأ
تمام إذا موجودة في النص طبعاً إذا اتنفذت هذه هيروح
يطبع لي found at موجودة فيه المكان تمام وبعدين
جيبنا text dot إيش dot index وحطينا الكلمة عشان
يجيب لي وين إيش وين موجودة وطبعت إيش هنا حولتها لـ
string عشان أنا جمعتها معاها دي else إيش not found
ده دي نجرب هاي
Gaza found at إيش index 28 إيش بيهمني أعرف أن
موجود في بعض البرامج لما تأخذ user interface
design ممكن أحتاج أعلم الكلمة وين موجودة بالأصفر
مثلاً مش هيك بعمل الـ word مثلاً لما نبحث بيعرف وين
موجودة بروح بعلمها تمام؟
أه تبدو يحولها لـ hyperlink مثلا طبعا الـ index هذه
بتجيبلي مكان أول ظهور للكلمة طبعا كيف الواحد بدو
يجيب كل الأماكن للظهور هذه هنشوفها من ضمن التمرين
اللي هناخدها احنا في الأول احنا إيش قلنا الترتيب
نفهم إيش فايدة الموضوع وبعدين إيش الأساسيات
بتاعته الـ functions وبعدين بناخد إيش تمرين عملية
طيب
خلّي النص هذا نحتاج نرجعله comparing الـ strings
ممكن أقارن بقول هو ممكن نُقارن ما بين strings يعني
مثلا قولتله name واحد يساوي محمد عليه name اتنين
هل هدول زي بعض؟ لأ مش زي بعض في هنا عندي E وهنا
عندي إيش A طبعا طيب لو قلتله اطبعلي أو كيف بدي
أفحص أنه يساوي بعض أو لا أكيد الـ F name واحد يساوي
هنا W يساوي طبعا name اتنين اطبعلي أنه هذا أو ممكن
على طول إيش نروح نعمل ممكن هذه نعملها إيش print
هتطبع ليها true أو false في الحالة هيطبع false هي
طبع ليه؟ طبع ليه false لأن في حرف H مختلف إيش
بيعملهو في المقارنة يا جماعة؟ بيبدأ يقارن من
البداية تمام؟ امتى بيوقف لحد ما يلاقي character
واحد مختلف؟ يعني في الأول هيلاقي الـ M زي الـ M،
سيبهم O زي الـ O، H و A، M، M، وبعدين وصل وين؟ الـ
E والـ A تمام؟ هدول مختلفين على طول هيطلعلي إيش؟
false، بيكملش إيش؟ الفحص للآخر زي ما فيه يساوي فيه
كمان إيش؟ ماشي لا يساوي مفهومة أكبر من أو أصغر من
تمام هذا باعتمد على إيش؟ على ask code نفس المقارن
ببدأ يقارن من البداية تمام؟ هيصل وين؟ عند الـ E والـ
A تمام؟ هل الـ ask بتاع الـ E أكبر من الـ ask بتاع
الـ A؟ صحيح تمام؟ يبقى هذا هتطلع إيش؟ true هيكمل
الباقي حتى لو فيه اختلافات بعد هيك هو مش معني طبعا
يعني أنا هو مش معنى إيش فيه بعد هيك ممكن يكون فيه
هنا Z مثلا طبعا أه هو له عند أول حرف مختلف طبعا
بيقرر هل الـ name واحد أكبر من name اتنين أو أصغر
طبعا وين أول حرف مختلف الـ E والـ A بناء عليهم يشوف
مين أكبر من الحرفين هدول بيقرر مين أكبر name واحد
أو name اتنين لأن الـ E أكبر من A بناء على أصلي كود
تمام؟ فهيطبع لي أنه true فعلا name واحد أكبر من
name اتنين لو كانت هذه E مثلا وهنا حطيت زيادة أو
خلي هذه عالية وهذه زيادة عشان نطلع نتيجة مختلفة في
الحالة ده ده كله يساوي بعض وهي أول إيش أول اختلاف
الـ Z أسكي تبعها أكبر من Z capital فهذا هيطلع إيش؟
False مفهوم الـ compare ما بين الكلمات بفيد أن أنا
أعرف مين بيجي في الترتيب قبل إيش؟ قبل التاني إذا
نام واحد أكبر من نام اتنين يبقى فعليا في الترتيب
نام واحد بتيجي بعد نام اتنين صح ولا يا جماعة
الأكبر هو اللي بيجي بعد صح؟ في سؤال؟
طيب نكمل الأساسيات بتاعة الـ string iterating
string إيش هن iterating؟ نعمل loop زي ما بعمل loop
على الـ list بعمل برضه loop على مين؟ على الـ string
بتعمل loop على الـ string هذه بقول 4 I in text أطبع
لمين؟ أطبع للـ I عشان يطبع character character تمام؟
تمام؟
هاي الناتج هذا لو بدي أجزء النص تبقى لإيش؟ آه لـ
character
في طريقة تانية كمان للـ loop for i in range لن الـ
text range
هذه
طريقة تانية للـ loop إيش بتخلف عن الطريقة الأولى
هذه الطريقة الأولى والثانية تمام هذه for i in
text
نفس النتيجة الاتنين نفس النتيجة
وقلت له for i and x كل character موجود في الـ text
بيحطه في الـ I وبطبعه طب التانية نفس الحاجة تماما
بس إيش التغيير أن الـ I أنا خليته يتغير بناء الـ
index تمام؟ وبعدين قلت له روح تكست الـ I أنا
هنا ما غيرتش تمام؟ أه طبعه بس واضحة؟ هذا أخذناه في الـ
list يا جماعة طريقتين للـ loop الطريقة الأولى أن
أنا بقرأ القيمة مباشرة وبقبعها الطريقة الثانية أن
أنا بعمل loop على الـ index ومن الـ index بجيبكوا
القيمة وبقبعها صح؟ احنا عادة بنستخدم الطريقة
الأولى بس امتى كنا نلجأ للطريقة الثانية اللي ما بده
يغير صح أو لا؟ اللي ما بده يغير صح؟ الطريقة الأولى
بقدرش أغير لما اتغير الـ I مش معناه .. معناه أنك الـ
.. الـ text ما تأثرتش لكن هنا لما اتغير text الـ I
كأنّا
غيرت في الـ lift نفسي واضحة يا جماعة هذه النقطة؟ طيب،
نقطة مهمة جدا في الفارق .. يعني هل فهمنا احنا أن
الـ text هي نوع من أنواع الـ list؟ لكن في فارق مهم
جدا بين الـ text والـ list وهو أن الـ text أو الـ
string is immutable إيش
هي كلمة immutable؟ immutable معناها غير
قابل للتغيير يعني
بيقول لي أنه أنت الـ string بتقدرش تغير محتوى عن
طريق الـ index تمام؟
كيف يعني السؤال هذا؟ الآن احنا اتفجنا افرض وأنا
مثلا بدي أغير كل character من هدولة أشفر النص هذا
أحطه نجوم طبعا كيف ممكن أحل السؤال هذا بسيطة ممكن
أروح أقوله مرلي على كل character وشيل القيمة وحط
مكانها إيش نجمة صح مش ممكن أعمل هيك طيب أتيت أنا
هي الـ loop الموجود عندي قولتله for I in range لن الـ
text وروح إيش لكل text I وحط مكانها إيش نجمة start
أنت معايا ولا لأ يا جماعة هذا الـ loop زي مثال الـ
list اللي حليناه لما حولنا الأرقام من نصوص لرقم
تمام كنا نستخدم الـ loop زي هيك هذا احنا مرّينه على
كل عنصر عن طريق الـ index تبعه وبعدين قلت له text
I حط فيها إيش نجمة هنا لو أنا عملت run تمام هذا
طلع ليه error إيش بيقول لي هنا؟ بيقول لي الـ star
object does not support item assignment يعني أنت
بتقدرش تعمل assignment على الـ string object
حتى لو كانت input أنا ما أقدرش بالمرة أغير محتوى الـ
string عن طريق الـ index أكيد هنا الواحد بتسأل طب
احنا المرات محتاجة نغير نستبدل كلمة زي ما حكيتنا
في الأول مش هذا تغيير اه انتبهوا معايا هل جيت الـ
string تحديدا فعليا يعني واحد برضه ممكن يجي يقولي
إيش يقول لي أنا ممكن أغير الـ text كلها أقول له حط
بدالها إيش علي مش هيك أنا غيرت المحتوى الـ variable
text هنا إيش بيصير فعليا في الـ memory هو بيقول لي
.. بيقول لي أنت لما تروح تغير قيمة متغير من نوع الـ
string فعليا هو إيش بيعمل؟ المتغير اللي في الأول
بحذفه وبنشغل متغير جديد لكن ما بيغيرش هالمحتوى نفس الـ
string هذا اللي بيصير في الذاكرة وعلى فكرة هذا
الحاجة موجودة في كل لغة برمجية، أن الـ String
دايماً لها تعامل خاص، لا يمكن تغييرها عن طريق
Index، هذه نقطة كثير ما يعرفوها ببرمجيين، ليش الـ
String دايماً Immutable أو غير قابلة للتغيير؟ من
نواحي الأمنية ليش الـ passwords عبارة عن إيش كلها
أصلا كلها عبارة عن text لو في إمكانية لاختراق الـ
passwords تمام وأن أنا أروح أدخل على characters وأبدلهم
هتصير الموضوع سايم تمام فبقول لك لأ الـ string
ما فيش إمكانية أنه يتعدل على محتوياته الداخلية ممكن
أنا أعرف value من جديد كامل تمام؟ لكن أن أغير على
characters معينة فيه لأ عن طريق الـ index يبقى الـ
string يا جماعة نقطة مهمة immutable هتأثر على الكلام
اللي هنحكيه كمان شوية تمام؟ واضح النقطة؟ واضح ليش
هذا خطأ؟ أنا ممنوع أغير في محتوى الـ string من خلال
الـ index تمام؟
في الـ list ممكن
طيب هذا هيترتب عليه بعض الحاجات لأن خلّيني الآن
نشوف يعني إحنا تناولنا بعض الـ functions اللي
يشترك فيها الـ string مع الـ list زي الـ len و الـ min
و الـ max و الـ in في البحث و الـ concatenation و الـ
repetition هذه كل الحاجات تشترك فيها الـ string مع
مين؟ مع الـ list لأن الـ string هي أصلاً list تمام؟
بس list غير متغيرة صح؟ طيب، في بعض الأمور الخاصة في
مين؟ في الـ String، تمام؟ ليش خاصة في الـ String؟
الـ String عبارة عن نص، النص اللي بتعامل خاص،
تمام؟ زي إيش مثلاً؟ في عندي مثلاً method، تمام؟ طبعاً
أنا أقصد الـ functions اللي هنتناولها كلها بنستدعيها
من خلال اسم الـ .. الـ string dot اسم الـ string dot
أول method اللي هنتناولها اليوم اسمها lower الـ
lower عادةً من اسمها بتحول النص لـ lower case بتحول
النص لـ lower case تعالوا نعمل print للـ text إيه
عملت أنا هنا أي text ورحت نفذّت lower وبعدين
طبعت الـ text وتعالوا نعمل run طبعاً لحظة بنشوف إيش
اللي .. اللي صار عندي، هاي النص اللي طالع عندي،
صار lower؟ لأ ماصارش lower، المفروض إنه يحول كل
حاجة لـ lower على أنا بدي .. على الـ .. على الـ ..
المكتوب قدام، طب ليش ماحولهاش لـ lower؟ بقول هنا
اتفقنا إحنا إن الـ text مانه Immutable يعني ممنوع
أغير على إيش؟ على الـ text نفسه، تمام؟ الـ lower
مستحيل يتغير عن نص نفسه، طب إيش بتعمل الـ lower؟
بيقول الـ lower فعليًا بتنشئ string جديدة بالتغييرات
تمام؟ الـ string الأصلية تظل إيش؟ كما هي هذا من باب
أن الـ string مالها immutable في الـ list هذا الكلام
ماكانش موجود يعني أنا لو عند list وكنت أعمل dot
sort إيش كان يعمل؟ كان يغير في الـ list كلها صح
ولا؟ أو لما كنت أعمل list dot append الـ append مش
موجودة في الـ string تمام؟
فعليًا text.lower لا تتغير في الـ text نفسه،
بيترجع لك نص جديد فيه تغيرات، تمام؟ يعني بمعنى
أننا نقول أنك بترجع نص جديد، لازم يكون عندك إيش؟
متغير وهذا الكلام هينطبق على كل الـ methods اللي
هنشوفهم بعد هيك، مافي ولا method بتغير على النص
الأصلي، ليش؟ لأن النص ماله immutable، تمام؟ طيب
text2 بتتطبع على الـ gate؟ بتتطبع مين؟ text2
text1 ماله ضال زي ما هو والدليل إنه هي أطبع الـ
print text تمام و تعالوا نعمل run وتعالوا نشوف
إيش صار هنا تمام هاي النص الأساسي ماتغيرش وهي النص
اللي نتج عن عيش عن تنفيذ ال lower شايفين كل الحروف
صارت إيش صارت صغيرة
طيب عند text3 يساوي text.upper وطبعه
لإيش؟ text3 وبنقوله كمان text4 يساوي text
.capitalize وبنقوله text5 يساوي text.title
طبعاً text1 text2 text3 text4 وهي text
5 نشوف إيش .. إيش معنى .. معنى كل واحدة لو عملت
run الآن شوف الناتج كيف هيختلف وإيش كل ناتج يعود
على إيش معنى هذا النص الأساسي واضح النص يا جماعة
ولا .. اه هاي النص الأساسية هذا النص الناتج عن lower
وهذا النص الناتج عن upper كله أصبح upper وهذا النص
الناتج عن capitalized إيش معنى capitalized؟ هذه
باستخدامها لما يكون عندي جملة متكاملة بدي أول حرف
الجملة بس يكون capital والباقي كله small وهذا اللي
صار في النص كله إنه أوله بس حطه capital والباقي
كله small title إيش معناه title؟ أول حرف في كل كلمة
بيكون capital إحنا في الـ .. في الـ reports اللي
بنكتبها باللغة الإنجليزية المتعارف عليه إنه أول
كلمة في أول حرف بيكون إيش؟ بيكون capital فإذا بدي
النص تابعي أستخدمه كـ title عشان أحطه مثلاً في أول
الصفحة بنفذ عليه إيش؟ عملية title طيب خلينا واحد
ممكن يسأل سؤال بيقول يا عم طيب إيش فايدة الـ lower
و الـ upper يعني هدول أستخدمهم أنا في الحياة يعني و
لا بس بتعطينا يوم هيك عشان أعبي وجد؟ لأ هدول مهمين
جداً بالذات في عملية الـ text processing كيف؟ خلينا
ناخد مثال عملي أنا هنا عندي نص طبعاً وبكرا من هنا
نبحث في ملفات نقرأ من ملفه ونبحث فيه طبعاً وبدي
أطلب من المستخدم أو أطيح له فرصة إيش إنه يبحث
ممكن تمام بس شوف المثال أنا أعطيك إياه عشان يبين إيش
فايدة الـ lower و الـ upper وغيره search keyword بدي
أطلب من المستخدم إيش يحط كلمة البحث search for عن
إيش بدك تبحث تمام المفروض الآن الكلمة اللي أنا
حطيتها في search keyword أشوفها موجودة في النص أو
لأ كيف بشوفها بقوله if search keyword in text صح؟
هيُطبع لي مثلاً found وبدي يقول لي وين موجودة text
.index
موجودة زي نفس الـ code اللي كتبناها قبل شوية search
keyword مش
موجودة بنقوله print not found عادي بحث عادي شوفوا
الـ code اللي كنت اكتبه قبل شوية أجيت وعملت run طبعاً
لسه أنا استخدمت هنا upper ولا lower لأ بدي
أفرجيكم أين ممكن تظهر عندي مشاكل أجي هو بدي أبحث
كتب الكلمة اللي بدي أبحث عنها Gaza بس كتبها بإيش الـ
G small اضغط enter كتب لي إيش not found أجي كتب لي
Gaza كلها capital CH4 Gaza كلها capital برضه قال
لي إيش قال لي not found ليش؟ لأن فعليًا فعلاً هي not
found الكلمة بنفس الـ .. الـ style مش موجودة طب كيف
أنا ممكن أحسن طريقة البحث اللي عندي بحيث إنه يلاقي
الكلمة سواء كانت موجودة capital أو small .. أو
small .. أو small .. أو small .. أو small .. أو
small .. أو small .. أو small .. أو small ..أه
إحنا مش عارفين كيف مكتوبة هذا ممكن احتمال حيال إن
بظبط بس إحنا الطريقة الأفضل إنه عشان إحنا نبحث
في النص نوحد أول حاجة حالة النص اللي بتبحث فيه وحالة
الكلمة اللي بتبحث عنها توحيد الحالة بين
الباحث والمبحوث فيه تمام؟ يعني مثلاً أنت بدك تبحث
عن كلمة في النص خل النص كله small والكلمة اللي
بتبحث عنها إيش small بغض النظر إيش ما الـ user
يدخلها خلّيها إيش small وبغض النظر إيش النص تبعك
كيف مكتوب خلّيه كله small هيك أنا لما أبحث small
في small بلاقي صح ولا إيه يا جماعة كيف .. إيش ما
يدخل الـ user مش أنا في النهاية أحول اللي هيدخله هو
small
ما أنا .. ما أنا المكتوب بالأصل بدي أحوله small ولا
أدخله .. يعني خليني آخذ مثال تمام؟ مش هذا النص
الأصلي تمام؟ بدي أقوله هنا copy text إيش هنا؟ ده
نسخة من النص تمام؟ بدي أقوله عبارة عن الـ text dot
إيش dot lower يعني حولت النص الأساسي مش حولته
أنشأت نسخة جديدة كلها lower تمام؟ وبعدين الـ user
دخل كلمة اللي هي الـ search keyword تمام؟ رحت هنا
لـ search keyword وقلت له search keyword
dot lower هاي lower وخزّنها برضه يا في .. ممكن
أخزّنها في نفسي إيش يعني هذا الكلام؟ أنا عدّلت مين؟
الـ string الأساسية هي نفسي أو ها حطّ نسخة جديدة search
keyword 2 إيش يعني إيش الـ search keyword 2
هيكون فيها النص الأساسي بس كله معمول إيش الـ small
لأن هذا صار كله small وهذا كله small هلقيت بطلت
خايف من إيش من اختلاف الحالة بقوله والله دور لي عن
search keyword 2 في copy text واضحة
هذا small وهذا small اه فش مشكلة بيلاقيه هلجأت طبعاً
بدا أقوله تدور لي برضه في copy text عن index main
عند index search keyword دي 2 مالهاش بطلع لي
إيش not found الآن الـ user بده يدخل الكلمة اللي
بده يبحث عنها هاي
نعمل run search
keyword حط جازة كلها small هاي طبع لي إيش طبع ليه
طبع لي found أنا هذا جبته بس ما طبعتوش هاي print
هاي
كمان run تمام احمد كلها capital مثلا او كتبها هو
مخربشة اشي capital اشي small تمام و هاي برضه إيش
لجأة بغض النظر عن كيف الـ user كتبها في النهاية
مدام أنا وحدوحدت حالة النص الأساسي والنص اللي بدها
ابحث عنه خلاص بيلاجيهم ان اعرف وين موجودة في النص
لان ممكن بعد هيك في برامج ان اعلمها احتاج اعلمها
بالأصفر مثلا مش لازم اعرف وين موجودة الكلمة
ما هو ماشي افرض انا في الموقع تبعي حاطط نص احطه كل
small عشان اريح حالي؟ لأ ما هو النص الموجود في
الصفحات لازم يكون اشي capital و اشي small و اشي ..
صح ولا؟ لكن لما اجي ابحث في الخلفية بعمل العملية
هذه، تمام؟
طيب نشوف برضه برضه بعض الـ methods تانية فيها
هنا method اسمها برضه swap case تابع لها دولة اللي
هو بس بيبدل حالة النص يعني مثلا text يساوي text
dot swap case هنا يا جماعة اشوف إيش بعمل أنا اتفجنا
انه انه اي method تابع للـ string بتغيرش في الـ
string بترجع الـ string جديدة هنا إيش عملت رجع الـ
string جديدة و الجديدة خزنتها تاني وين في الـ text
هيك انا بقدر اغير قيمة من الـ text و هي فعليا زي ما
قلنا بنشيه string جديدة و بحذف إيش الأولانية تمام
هتنطبع الـ text
كل الاسواق بس إيش عمل؟ swap للحالات تمام؟ اين ممكن
تلزم مش عارف، هاي عارفتوهم تمام؟ method تاني مهم
جدا تمام؟ ومستخدم بشكل كتير اللي هي إيش؟ replace
my
name is Ahmed I live in Israel تمام؟
الآن بدنا نروح إيش نعمل؟ IG is in Israel بدنا نبدل
.. هذا نصفي كلمة إسرائيل بدنا نبدل كل إسرائيل
بإيش؟ Palestine .. بنروح للـ text تبعنا text dot و
بنقوله replace .. بطلب الكلمة الجديدة و الكلمة
الجديدة .. تمام؟ هاي بنقوله إيش؟ إسرائيل .. تمام؟
وحط اللي بدالها إيش؟ Palestine تمام مرة تانية هذا
مش هيبدل وين في الـ text فبنعمل إيش text ونخزنها
بقى عشان الـ text الأولى خلاص بدناش نشوفها تمام
يعني أغير في النسخة الجديدة رجعتها خزنتها وين في
الـ text و بقى أجيب أطبع من الـ text
هيبدلهم كلهم replace كله ببدله طبعا هيتطلع هنا my
name is Ahmed I live in Palestine I study in IOG
IOG is in Palestine طبعا كل ظهور لإزرائيل بدلها
بإيش ب Palestine واحد
هيقول لي طب واحد هذه capital و هذه small و واحد
كاتب إزرائيل ممكن تكون إيش هذه زي هيك صح أو لأ؟
واحدة مكتوبة كلها capital والتاني small إيش هيعمل؟
هيبدل المطابقة بس، تمام؟ يعني هنا الأولى ضلت
والتاني عملها، بدلها لأنه لما ييجي يبحث، هذه
مالجععاش زي ما هي فإيش لازم نعمل؟ زي ما عملنا قبل
شوية، تمام؟ يعني إنه وحد الحلات وبعدين إيش بتعمل؟
بتبدل تعالوا هنا أقوله text يساوي زي ..
هنا نعمل سطر جديد نقول له text يساوي text dot إيش
dot lower حولته لا إيش اه لا lower كله وخزنته تاني
وين في الـ text وقوله استبدلي كل إيش خلاص مش صارت
النص الأساسي lower يبقى لأ لما استبدل بستبدل إيش
ببحث عن الـ lower و بقوله بدليها بإيش الـ plus لازم
توحد الحالة في الأول تمام
هي إيش؟ هي بدلي بس هنا إيش؟ يعني من سلبياتها أنه
حول كل النص لإيش؟ ل .. للورة
بنفعش،
بدها شغلة هادة، نقطع الكلمات و نغير هذه يعني ممكن
نشوف مثال عليها بعدين بس هذا كحال مبدئي مش الحال
طبعا؟ طب المهم replace إيش يعني؟ استبدل حاجة بحاجة
تانية طب نشوف كمان method تانية طبعا في عندنا
method اسمها strip طبعا
هذا
نص في عندي مسافات في الأول و في الآخر مالهو مش
لازمة بتنغيهم طبعا ممكن اقوله text.strip
طبعا هاي بدي أقوله new text و أطبعه لإيش طبعا
برجع للنص بدون أي مسافات طبعا بيشيل المسافات اللي
في الأول و في الآخر وين هذا بتلزم الـ strip دي يا
جماعة؟ هذا الـ strip تحديد يعني بتلزم لما أجي أتعامل
مع forms أطلب من المستخدم يعبي form طبعا ممكن
المستخدم هيك بتبتد فلسفة بروح بكتب اسمه بعمل
spaces بخربش بكتب كلام يعني واضح بعمل space ليش
بعمل spaces أذى طبعا كتب اسمه حط spaces طبعا أنا
لأ أنا لما أجيب اسمه بدي إيش كل حاجة مش لازمة
spaces إيش هعمل فيها أشيلها فبس جيبت عملت إيش هنا
strip بشيله كل حاجة زيادة عن النص اللي زي الـ spaces
هذه طيب
نشوف كمان في عندنا methods ممكن تفيد في
الـ search طلع معايا شوية
بس
المسافة في الأول والآخر
طيب اتطلعوا يا جماعة معاه احنا بدنا نبحث .. ها دي
بدنا
نبحث عن كلمة .. كلمة معينة في النص إيش بنستخدم N
صح FN اذا بدنا نعرف وين الكلمة موجودة ممكن نستخدم
إيش؟ index و الـ index هذه موجودة وين؟ في الـ list
يعني مثلا لو احنا طبعنا print text dot index أحمد
هيجيبلي
كلمة أحمد وين موجودة تحديدا هيطبعلي إيش هنا؟ 11 طب
لو كلمة أحمد مش موجودة في النص كله مثلا عمر مافيش
في النص كله عمر تمام؟
هذه موجودة برضه في الـ list هاي طبعة .. هاي طلع ل
air .. طلع ل error sub string not found طيب .. هذا
معناه أن الـ index فيها مشكلة أنه لو مالجاش النص
بتطلع ل error طب كيف أنا بدي عالج الـ error هذا؟
الصح إنك إذا بدك تستخدم index قبلها تحط fn وروح
تطبق الـ index واضح كيف؟ يعني إذا موجود روح جيبلي
الـ index زي ما عملنا قبل شوية ماشي يا جماعة؟ لكن
هو بيقول للـ string تحديدا أنا بجيبلك method تانية
بتريحك من الـ error هذا كيف؟ إن اسمها text اسمها
text.find الـ Find هذي زي الـ Index تماما، إيش
يعني؟ يعني بتجيبلك مكان العنصر وين موجود، بس إيش
بتختلف على الـ Index؟ إنه لو مش موجود النص، بترجع
ناقص واحد، لو النص مش موجود، بترجع ناقص واحد، إذا
موجود، بترجع الـ Index تبعه، مرة تانية، الـ Find
زي الـ Index، إيش بتفرج عنها؟ يعني كيف زي الـ
Index؟ يعني بترجعلي مكان النص اللي ببحث عنه في النص
الأصلي فإيش بتخلف الـ find على الـ index؟ ان الـ find
لو مالجتش العنصر بترجح ناقص واحد لكن لو .. لو الـ
index لو مالجتش العنصر بتطلع الـ error طبعا مثلا
هاي find أحمد وبنقبع
كمان find
عمر نشوف إيش هتطبع للـ find هاي
طبع ل 11 لأنه لجأ أحمد وطبع ل ناقص 1 لأنه ما لجأش
عمر ليش 11؟ صفر، واحد، لحظة، هاي واحد، اتنين،
تلات، اربع، خمسة، ستة، سبعة، تمانية، تسعة، عشر،
أحداشر أول character في أحمد إيش؟ أحداشر، مكان أول
character، تمام؟
يبقى أنا يا جماعة ممكن أستخدم الـ find لحالها للبحث
مش أنا قبل شوية كنت أستخدم الـ in عشان أبحث ممكن
أنا لو كنت أبحث عن كلمة أقوله على طول if text.find
الكلمة اللي بدي إياها يعني مثلا هنا أدخلها من الـ user
search keyword يساوي input أدخل أي كلمة بدك إياها و
بعدين قلت له if search keyword لا
يساوي ناقص واحد print found صح ولا لأ مش ممكن
أستخدمها دايمًا في البحث احنا ممنوعين نفرجيكوا أكثر
من طريقة البرمجة فما في اثنين ببرمجوا نفس الـ code كل
واحد بيفكر في طريقة هذه طريقة ثانية إذا قمت
بالإنجليزي في الـ text إذا نفذت find وطلع مش ناقص
واحد معناها فعلا إنه موجود هي نفسها لما أقول
if text in بس بطريقة ثانية تمام؟ في
كمان عرفنا أنها جات الـ find و index في عندي كمان
زي الـ find في واحدة اسمها R find
ماذا تفعل؟ هتجرب text.rfind هاي
أحمد نطبع
هذا الـ print احنا جايزنا نتعلم الـ methods و في
الآخر أيش هيكون في عليها تمرين فلازم يا جماعة هذا
الـ method ترجعوها كويس عشان لما نستحضر التمرين
بدنا نروح نتذكر أيش المناسب للتمرين واضح؟ فلازم تجي
مراجعين تمام؟
هنا جاب لنفس النتيجة أيش 11 أيش بتفرق الـ file؟
حاجة بسيطة جدا أن الـ R file معناها R يعني اختصار ل
right لأنه بيبدأ البحث من وين؟ من اليمين، من الآخر
تمام؟ أيش ممكن تفرق؟ يعني إذا أنا مثلا عندي شك أن
النص اللي بديه موجود في آخر حاجة تمام؟ أو مثلا أنا
عندي البيانات بتتنضف دايمًا وين؟ في الآخر فعشان أسرع
عملية البحث أنا عارف مثلا أن أنا عندي برنامج كل
الإضافات فيه بتتم وين؟ في الآخر و أنا بعمل عملية
بحث كتير طبعا فممكن أعمل عملية البحث بحيث أن التم
من آخر باب تسريع فقط يبقى الـ R و الـ R find و الـ
find نفس الحاجة بس الفرق أن هذا ببدأ من أول للأخر
و هذا ببدأ من آخر للأول
لأ الـ R-find عادي بتجيب للـ index بداية من صفر لل
.. لل لن اه بالظبط بس الفرق إن هي كيف بتشتغل
internally تمام؟ طبعا
ناقص واحد بتلجأ زيها زي الـ find تماما مافي اختلاف
بينهم بس هم بختلفوا داخليًا في طريقة العمل يا جماعة
تمام؟
في أن نفس الـ list الـ method count text dot count
أيش فايديتها؟ إن تعد الكلمة كم مرة كررت تمام؟ هاي
Palestine عد اللي كم مرة .. زي الـ list تماما يا
جماعة تمام؟ هاي run أو هاي طبع ليه؟ اثنين
فيه أنا كمان two methods ننهي فيهم الموضوع اسمهم
starts with أو ends with أيش starts with من اسمها
هل النص تبعي .. هذا طبعا starts with و ends with
.. with بترجع true أو false يعني فحصلة هل النص
تبعي يبدأ بكلمة معينة أو لا مثلا هنا start with ماي
كتبت، أيش هترجع؟ هترجع true هل النص ببدأ بماي؟
هيرجع لإيش؟ true هل النص تابع إيه؟ بنت إيه؟
بماي مثلا هيرجع لإيش؟ false يعني عشان أفحص البداية
والنهاية طبعا؟ واحد ممكن يسأل طب ما .. أيش هنستفيد
منها؟ يعني أيش هن .. هن .. هنطلع في الآخر لما نعرف
أيش الـ baby ده و أيش بنتي؟ في تطبيقات كتير بلزمني
أعرف إن الناس ببدأ بحاجة معينة أو لا مثال هناخد
المحاضرة الجاية، تمام؟ إيجي عندنا ناس بدأ أفحص هل
هو valid URL ولا لا؟ أيش هن الـ valid URL؟ هل هو
URL؟ Link يعني هل هو الـ link صحيح ولا لا؟ فبنقوله
يفحصه هل الـ link .. النص هذا بيبدأ بـ http و بينتهي
.. و بينتهي بـ .com أو .net أو .org أو .ps أو .. مش
عارف أيش إذا هذه الحدثة اتحققت بيكون النص ماله URL
صح ولا؟ ماشي
المرة الجاية نكمل إن شاء الله