السلام عليكم
بصورة سريعة سنتحدث عن لغة بايثون والفروقات بينها وبين اللغات التي لها Syntax يشبه لغة C مثل c# , java , etc..
– لغة Python تمتاز بانها strongly and dynamically typed اي انه يمكن تغير نوع المتغير في وقت ال runtime لكن المتغير يكون له خصائص ونوع حسب مايحتويه.
– لا يوجد semi colon “;” في نهاية كل جملة برمجية
– يمكنك استخدام single quotes ‘ ‘ او double quotes ” ” لتخزين القيمة النصية string
– null تكتب None
– التعليقات في بايثون لسطر واحد نستخدم رمز #
#Single Line of Comment
– لمتعددة الاسطر نستخدم ”’ ثلاث علامة single quote
''' This is Multi Line Comment '''
الـ Logical Operators في Python
&& تكتب and
|| تكتب or
! تكتب not
باقي الoperators كما هي
==
!=
>
<
ال input و output في بايثون
لاخراج جملة على الشاشة نستخدم كلمة print
print("What Ever you want")
لطباعة الكلمة مرات متكررة
print("Ahmad "*3)
هذا سيطبع اسم احمد ثلاث مرات متكررة على الشاشة
لاخذ مدخلات من المستخدم على الشاشة في Python نستخدم input()
input()
او
input("Enter a value") # ستطبع على الشاشة الجملة مابين القوسين ثم يدخل المستخدم مابها
مثال بسيط للعمليتين
print("Enter your name") name = input() print("Hello mr "+ name)
ايضا للتحويل من قيمة لاخرى نستخدم
للتحويل الى string نستخدم str()
للتحويل ل Integer نستخدم int()
للتحويل لfloat نستخدم float()
مثال بسيط اضافة للمثال السابق:
print("Enter your name") name = input() print("Enter your Age") age = int(input()) print("Hello mr "+ name + " Your BirthYear is "+str(2016 - age))
أخدنا من المستخدم العمر كقيمة نصية وقمنا بتحويلها لقيمة رقمية باستخدام int()
ارجعناها مرة اخرى بعد القيام بطرحها من 2016 لقيمة نصية باستخدام str()
يمكن أيضا ان تكون بهذا الشكل
print("Enter your name") name = input() print("Enter your Age") age = int(input()) print("Hello mr {0} Your BirthYear is {1}".format(name,(2016 - age)))
لاحظ اننا استخدمنا دالة format مع args داخل النص كما يحدث في لغات البرمجة المشتقة من C
شكل النص اصبح افضل واوضح والدالة format قامت بتحويل int الى string بدون الحاجة لكتابتها
يمككنا ايضا استخدامها بدون كتابة الرتب
print("Hello mr {} Your BirthYear is {}".format(name,(2016 - age)))
لحذف “destroy” اي كائن في Python
del objectName
يمكننا تبديل قيم متغيرين مع بعضهما البعض ببساطة :
name,age = age,name
في هذا المثال name سياخذ قيمة age و age سيأخذ قيمة name
المصفوفات في Python تدعى List وهي ديناميكية تستطيع تغييرها بسهولة في وقت التنفيذ runtime
لتعريف مصفوفة من الاسماء مثلا
arr = ["Ahmad" , "Ali" , "Ibrahim"]
لاضافة عنصر للlist نستخدم دالة append
arr.append("Magdy") #اضفنا Magdy للقائمة
الان اصبحت
["Ahmad" , "Ali" , "Ibrahim" , "Magdy"]
أيضا يمكننا استخدام دالة insert لتحديد مكان معين للادراج كمالتالي
arr.insert(2,"Magdy") #اضفنا Magdy في الرتبةالثانية
اي عند العنصر الثالث
يمكننا الوصول للعناصر
arr[0]
ليوصلنا لاول عنصر وهكذا
دالة Remove لحذف عنصر باسمه
arr.remove("Ahmad")
ستحذف Ahmad من ال list
دالة Sort لترتيب العناصر تصاعديا او حسب الترتيب الابجدي
arr.sort() arr.sort(reverse= True) #لكي يعكس طريقة الترتيب
دالة index لكي ترجع لنا رتبة العنصر
arr.index("Ahmad")
ستعيد لنا رتبة 1
أيضا يمكننا التحقق من توافر عنصر معين في الlist
فمثلا انا اود التحقق اني اسمي موجود في هذه الlist
ساقوم بالتالي
print("Ahmad" in arr)
ستعود لي بـ True او False حسب ماهو متوفر ام لا
أيضا يمكننا التحقق من عدم توافر عنصر معين في الlist
print("Ahmad" not in arr)
ستعود لي بـ True او False حسب ماهو متوفر ام لا
معرفة Length لشئ معين
نستخدم len
فمثلا لدينا متغير يحتوي على اسم
name = "Ahmad" print(len(name))
ستطبع لنا طول هذا النص
ايضا يمكننا استخدامها في ال list
names = ["Ahmad" , "Ali" , "Ibrahim" , "Magdy"] print(len(names))
لطباعة طول هذه الlist
الـ Dictionary في Python
يتكون من زوج من key ,value وله نفس الاسم في ال.net
user_dic = {'FirstName': 'Ahmad', 'LastName': 'Magdy', 'Age': 20}
يمكننا الوصول لاي عنصر عن طريق كتابة اسم الKey او عن طريق get
print(user_dic['FirstName']) print(user_dic.get('FirstName'))
في حالة كتابة الkey اذا كان غير موجود سيظهر رسالة خطأ وفي حال استخدام get سيرجع None
سيكون الناتج بالتأكيد Ahmad
لإضافة قيمة في الDictionary نستخدم setdefault
user_dic.setdefault('Country', 'Egypt')
سيضيف key باسم Country و value بEgypt
لحذف عنصر يوجد طريقتين
استخدام دالة pop “كالتي في Stack Data Structure 🙂 ”
وترجع العنصر قيمة العنصر بعد حذفه بمعنى
user_dic.pop('Age') #ستحذف العنصر وترجع قيمته print(user_dic.pop('Age')) #ستحذف العنصر وترجع قيمته ونطبقعها
وعند ارجاع القيمة حينها نستطيع طباعته كما فعلت او اسناده لمتغير
يمككنا ايضاً استخدام del
del user_dic['FirstName']
لارجاع جميع قيم الkeys نستخدم keys ول values ايضا values
print(user_dic.keys()) print(user_dic.values())
يمكننا عمل Loop لجميع العناصر
في حالة اردة الوصول للkeys فقط نستخدم
for x in user_dic: print(x) #key only print(user_dic[x]) #access element by key
وفي حالة اردت ارجاع key و value لكل عنصر نستخدم
for i, v in user_dic.items(): print(i, ' ', v)
أول عنصر يرجعه i هو key و v هي value
ولمعرفة عدد عناصره نستخدم len
len(user_dic)
الـ Flow Controls
الـ For loop
جمعينا من الممكن ان يكون معتاداً على الصيغة
for(int i=0; i < 10; i++) { }
حسناً في Python الموضوع مختلف قليلا
لابد من اعطائها مجموعة من القيم لتدور حولها
فمثلا لو اردنا تطبيق نفس النمط السابق في بايثون يجب علينا ان نعطيها مدى “مجموعة” من الارقام
ونعبر عنها في بايثون عن طريق range()
من الممكن ان يكون range(1,10) ستعطينا مصفوفة من الارقام من 1 الى 9 , لاحظ 10 ليست معنا
ايضا صيغة اخرى range(10) ستعطينا مصفوفة من الارقام من 0 الى 9
** بدلا من الاقواس الخاصة بال for {}
سنقوم باضافة مسافة للداخل في for وايضا بعد انتهاء سطر ال for نضيف ” : “
for i in range(10): print(i)
لا بد من المحافظة على المسافة بعد for لتطبيقها
للاستكمال بعد انتهاء for نرجع المسافة “tab” التي كنا قد تقدمناها
for i in range(10): print(i) print("The End")
سيكون الناتج
0
1
2
3
4
5
6
7
8
9
The End
كما نلاحظ من 0 الى 9 , 10 ليست مضمنة
يمكننا عمل loop ببداية غير الـ0 مثلا
for i in range(1,4): print(i)
1
2
3
سيبدأ من 1 ال 3 و 4 ليست من ضمن ماسيطبع
while صيغتها العامة تقريبا نفسها
while condition: do whatever
ومتوفر لدينا الكلمات continue و break
الـ IF Statement
الفرق
الاقواس ليست الزامية ()
ولا يوجد {} ويحل محلها ” : ” بعد الشرط مع مسافة لكتابة ماسيتم
else if تكتب elif
مثال
if name.lower() == "ahmad": print ("Cool!, its my name") elif name.lower() == "magdy": print("i like this name") else: print("nice to meet you mr. "+name)
الى هنا سنصل الى نهاية هذا الجزء ارجو ان تكون الامثلة واضحة وبسيطة
سيتم تحديث هذا المقال بشكل دوري ان شاء الله لاضافة اجزاء جديدة