Python للمبرمجين

P

السلام عليكم

بصورة سريعة سنتحدث عن لغة بايثون والفروقات بينها وبين اللغات التي لها 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)

الى هنا سنصل الى نهاية هذا الجزء ارجو ان تكون الامثلة واضحة وبسيطة
سيتم تحديث هذا المقال بشكل دوري ان شاء الله لاضافة اجزاء جديدة

عن الكاتب

أحمد مجدي

Full Stack Software Developer , Geek

أضف تعليقاً

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.