python _1
python _1
المتغيرات
واستخداماتها
تستخدمها في برنامجك ،أي تعد حاويات للبيانات التي ستتعامل معها في برنامج.
ً
حيحا في سيغطي هذا الفصل بعض أساسيات المتغ يرات ،وكيفي ة اس تخدامها اس تخدامً ا ص
.1فهم المتغيرات
من الناحية الفنية ،يُ َّ
خصص للمتغير مساحة تخزيني ة في ال ذاكرة توض ع القيم ة المرتبط ة ب ه
فيها .يُ ستخدم اسم المتغير لإلشارة إلى تلك القيمة المُ َّ
خزنة في ذاكرة البرنامج التي هي جزء من
ذاكرة الحاسوب .المُ تغيِّ ر أشبه بعنوان ُتلصقه على قيمة مُ َّ
عينة:
من إع ادة كتاب ة ه ذا الع دد الطوي ل ك ل م رة ،ل ذلك سنس تخدم ش يًئ ا يُ س ِّهل ت ُّ
ذكره ،مثل
المتغير :my_int
my_int = 103204934813
ً
أيضا باسم "عالمة المساواة" (=) معامل اإلسناد ،المعروف •
ُأ
القيمة التي س ِن َدت إلى اسم المتغير ()103204934813 •
تش كل ه ذه األج زاء الثالث ة معً ا التعليم ة ال تي ُتس نِد على المتغ ير my_intالقيم ة العددي ة
الصحيحة . 103204934813
اس تخدام ذل ك المتغ ير ب داًل من القيم ة .في ب ايثون ،ال يل زم التص ريح عن المتغيِّ رات قب ل
اس تخدامها كم ا ه و الح ال في بعض لغ ات البرمج ة األخ رى ،إذ يمكن ك الب دء في اس تخدام
ً
مباشرة. المتغير
)print(my_int
والمخرجات هي:
103204934813
اس تخدام المتغ يرات يس هل علين ا إج راء العملي ات الحس ابية .في المث ال الت الي ،سنس تخدم
)print(my_int - 813
وسينتج لنا:
103204934000
في هذا المثال ،يج ري ب ايثون العملي ة الحس ابية ،ويط رح 813من المتغ ير ، my_intويعي د
القيمة .103204934000
يمكن ضبط المتغيرات وجعلها تساوي ناتج عملية حس ابية .دعن ا نجم ع ع ددين معً ا ،ونخ ِّزن
x = 76 + 145
يشبه المثال أعاله إحدى المعادالت التي تراها في كتب الجبر .في الج برُ ،تس تخ َدم الح روف
والرم وز لتمثي ل األع داد والكمي ات داخ ل الص يغ والمع ادالت ،وبش كل مماث ل ،المتغ يرات أس ماء
لنطبع :x
)print(x
والمخرجات:
221
َّ ُأ
ألنه سنِد إلى المتغير xمجموع 76و .145 أعادت بايثون القيمة 221
يمكن أن تحوي المتغيِّ رات أي نوع من أنواع البيانات ،وليس األعداد الصحيحة فقط:
إذا طبعت أيًّ ا من المتغيِّ رات الم ذكورة أعاله ،فس تعيد ب ايثون قيم ة المتغيِّ ر .على س بيل
وسينتج لنا:
لق د مرَّ رن ا القيم ة [' 'item_1و ' 'item_2و ' 'item_3و ' ]'item_4إلى
المتغير ،my_listثم استخدمنا الدالة )( printلطباعة تلك القيمة باستدعاء .my_list
تلك المساحة.
في الحسبان:
يجب أن تكون أسماء المتغيرات من كلمة واحدة فقط (بدون مسافات) •
يجب أن تتكوَّ ن أسماء المتغيرات من األحرف واألرقام والشرطة السفلية (_) فقط •
باتباع القواعد المذكورة أعاله ،دعنا نلقي نظرة على بعض األمثلة:
من األم ور ال تي يجب أخ ذها في الحس بان عن د تس مية المتغ يرات ،ه و َّ
أنه ا حساس ة لحال ة
اس تخدام أس ماء متغيِّ رات متماثل ة لض مان أال يح دث خل ط عن دك أو عن د المتع اونين مع ك ،س واء
أخ يرًا ،ه ذه بعض المالحظ ات ح ول أس لوب التس مية .من المتع ارف علي ه عن د تس مية
المتغيرات أن تبدأ اسم المتغير بحرف ص غير ،وأن تس تخدم الش رطة الس فلية عن د فص ل الكلم ات.
ِّ
يفض ل بعض األش خاص اس تعمال تنس يق س نام الجم ل ً
أيض ا ،وق د الب دء بح رف كب ير مقب ول
أقل شهرة.
الخي ار األهم ال ذي علي ك التمس ك ب ه ه و االتس اق .إذا ب دأت العم ل في مش روع يس تخدم
تنسيق سنام الجمل في تسمية المتغيرات ،فمن األفضل االستمرار في استخدام ذلك التنسيق.
يمكنك مراجعة توثيق تنس يق الش يفرات البرمجي ة في ب ايثون في موس وعة حس وب للمزي د
من التفاصيل.
القدرة على إع ادة إس ناد القيم مفي دة للغاي ة ،إذ ق د تحت اج خالل أط وار برنامج ك إلى قب ول
ً
أيض ا في ال برامج الكب يرة ال تي ق د تحت اج خالله ا إلى سهولة إع ادة إس ناد المتغ يرات مفي دة
ً
صحيحا ،ثم نعيد إسناد سلسلة نصية إليه: س ُنسند إلى المتغير xأواًل عد ًدا
وسينتج لنا:
76
Sammy
يوضح المث ال أعاله أن ه يمكنن ا أواًل إس ناد قيم ة عددي ة إلى المتغ ير ،xثم إع ادة إس ناد قيم ة
نصية إليه.
x = 76
"x = "Sammy
)print(x
Sammy
ق د تك ون إع ادة إس ناد القيم إلى المتغ يرات مفي دة في بعض الح االت ،لكن علي ك أن تبقي
ً
واضحا قدر اإلمكان. عينك على مقروئية الشيفرة ،وأن تحرص على جعل البرنامج
ً
الحق ا ،أو من خالل ً
دة ،وال تي يمكن ك إع ادة إس نادها تهيئ ة ع َّدة متغ يرات دفع ًة واح
مدخالت المستخدم.
يمكن ك من خالل اإلس نادات المتع ددة إس ناد قيم ة واح دة إلى ع َّدة متغ يرات (مث ل المتغ ير
x = y = z = 0
)print(x
)print(y
)print(z
الناتج سيكون:
0
0
0
عرفنا في هذا المثال ثالثة متغيرات ( xو yو ،)zوأسندنا إليها القيمة .0
ً
أيضا بإسناد ع َّدة قيم لع َّدة متغيِّ رات ض من الس طر نفس ه .ه ذه القيم يمكن تسمح لك بايثون
وهذه هي المخرجات:
shark
2.05
15
في المث ال أعالهُ ،أ س ن َدت السلس لة النص ية " "sharkإلى المتغ ير ،jوالع دد العش ري 2.05
إس ناد ع دة متغ يرات بع دة قيم في س طر واح د يمكن أن يختص ر الش يفرة ويقل ل من ع دد
حساباتك .يشير نطاق المتغ ير إلى المواض ع ال تي يمكن الوص ول منه ا إلى المتغيِّ ر داخ ل الش يفرة،
َّ
ألنه ال يمكن الوص ول إلى جمي ع المتغ يرات من جمي ع أج زاء البرن امج ،فبعض المتغ يرات عامة
دئياُ ،تع رَّ ف المتغ يرات العام ة خ ارج ال دوال؛ أمَّ ا المتغ يرات
( ،)globalوبعض ها محلي ( .)localمب ًّ
def var_function():
إنشاء متغير محلي داخل دالة #
"lcl_var = "local
)print(lcl_var
المخرجات الناتجة:
local
global
يُ س نِد البرن امج أعاله سلس لة نص ية إلى المتغ ير العم ومي glb_varخ ارج الدال ة ،ثم يع ِّرف
قيمته .ينتهي البرنامج باستدعاء الدالة )( ،var_functionوطباعة قيمة المتغير .glb_var
لمَّ ا ك ان glb_varمتغ يرًا عامًّ ا ،فيمكنن ا الوص ول إلي ه داخ ل الدال ة )(.var_function
"glb_var = "global
def var_function():
"lcl_var = "local
)print(lcl_var
طباعة glb_varداخل الدالة print(glb_var) #
)(var_function
)print(glb_var
المخرجات:
local
global
global
لقد طبعنا المتغير العام glb_varمرتين ،إذ ُطبع داخل الدالة وخارجها.
"glb_var = "global
def var_function():
"lcl_var = "local
)print(lcl_var
)print(lcl_var
دعنا ننظر إلى مثال آخر ،حيث سنستخدم االسم نفسه لمتغير عام وآخر محلي:
def my_function():
استخدام نفس اسم المتغير num1 = 10 # num1
num2 = 7 تعيين متغير محلي #
الناتج:
10
7
5
أن num1
محلي ا داخ ل إح دى ال دوال ،فس نرى َّ
ً ص ِّرح عن ه
ألن المتغ ير المحلي ُ num1
نظ ًرا َّ
يس اوي القيم ة المحلي ة 10عن د اس تدعاء الدال ة .عن دما نطب ع القيم ة العام ة للمتغ ير num1بع د
من الممكن الوص ول إلى المتغ يرات العام ة واس تعمالها داخ ل دال ة باس تخدام الكلم ة
المفتاحية :global
def new_shark():
جعل المتغير عاما #
global shark
"shark = "Sammy
أن المتغ ير المحلي sharkعُ يِّ ن داخ ل الدال ة )( ،new_sharkإال َّ
أنه يمكن الوص ول إلي ه رغم َّ
من خارج الدالة بسبب الكلمة المفتاحية globalالمستخدمة قبل اسم المتغير داخل الدالة.
َ
بسبب استخدام ،globalفلن يُ طلق ُّ
أي خطأ عندما نستدعي ) print(sharkخ ارج الدال ة.
عن د التعام ل م ع المتغ يرات ،يك ون ل ك الخي ار بين اس تخدام المتغ يرات العام ة أو المحلي ة.
يُ َّ
فض ل في العادة استخدام المتغيرات المحلية ،ولكن إن وجدت نفسك تس تخدم نفس المتغ ير في
عدة دوال ،فقد ترغب في جعله عامً ا .أمَّ ا إن كنت تحتاج المتغير داخل دالة أو ص نف واح د فق ط،
.6خالصة الفصل
لق د مررن ا في ه ذا الفص ل على بعض ح االت االس تخدام الش ائعة للمتغ يرات في ب ايثون .3
مثل حاض ً
نة لمختل ف أن واع البيان ات في ب ايثون وال تي المتغيرات هي لبنة مهمة في البرمجة ،إذ ُت ِّ
ُت ِّ
صنف بايثون البيانات ( )dataإلى أن واع ،كم ا ه و الح ال في جمي ع لغ ات البرمج ة .ه ذا مهم
ألن نوع البيانات الذي تستخدمه سيقيِّ د القيم التي يمكن تعيينها لها ،وما الذي يمكن فعله بها (بم ا
َّ
اء
لية لب ايثون .ه ذا ليس استقص ً
س نتعرَّ ف في ه ذا الفص ل على أهم أن واع البيان ات األص َّ
شاماًل ألنواع البيانات ،ولكنَّه سيساعدك على التعرف على الخيارات المتاحة لك في بايثون.
.1خلفية عامة
أن واع البيان ات في ب ايثون مش ابهة إلى ح د م ا ألن واع البيان ات ال تي نس تخدمها في الع الم
الحقيقي .من أمثلة أنواع البيانات في العالم الحقيقي األعداد ،مث ل :األع داد الص حيحة الطبيعي ة
( ،)... ،2 ،1 ،0واألعداد الصحيحة النسبية ( ،)... ،1 ،0 ،1- ،...واألعداد غير النسبية (.)π
يمكننا عادة في الرياضيات جمع أعداد من أنواع مختلفة مثل إضافة 5إلى :π
5 + π
يمكنن ا إمَّ ا االحتف اظ بالمعادل ة ِبع ِّدها إجاب ة ،وس تكون النتيج ة ع د ًدا غ ير نس بي (irrational
نجمع العددين:
ولكن ،إذا حاولن ا إض افة ع دد إلى ن وع بيان ات آخ ر ،مث ل الكلم ات ،فستص بح األم ور مربك ة
hsoub + 8
ً
مختلف ا تمامً ا ،مث ل الكلم ات بالنسبة إلى الكلمة ،hsoubيمكن ع ُّد كل نوع من أنواع البيان ات
في العمليات.
.2األعداد
ً
راحة عن ن وع فسر كل عدد ُتدخله إلى بايثون على َّ
أنه عدد؛ ليس مطلوبًا من ك اإلعالن ص سي َّ
ُ
كم ا ه و الح ال في الرياض يات ،األع داد الص حيحة ( )integerفي البرمج ة هي أع داد كامل ة،
ً
أيضا باسم .int يمكن أن تكون موجبة أو سالبة أو معدومة ( .)... ،1،0،1- ،...ويُ عرف هذا النوع
كما هو الحال مع لغات البرمجة األخرى ،يجب أال تستخدم الفواصل في األع داد المؤلف ة من أربع ة
)print(-25
وسينتج:
-25
أو يمكننا اإلعالن عن متغير ،والذي هو في هذه الحال ة رم ٌز للع دد ال ذي نس تخدمه أو نتعام ل
معه ،مثال:
my_int = -25
)print(my_int
وسينتج لنا:
-25
ً
مباشرة مثل: يمكننا أن نجري العمليات الحسابية على األعداد الصحيحة في بايثون
المخرجات:
48
يمكن استخدام األع داد الص حيحة بع دة طرائ ق في ب رامج ب ايثون ،وم ع اس تمرارك في تعلم
المزي د عن ه ذه اللغ ة ،س تتاح ل ك الكث ير من الف رص الس تخدام األع داد الص حيحة والتعام ل معه ا
األع داد العش رية هي أع داد حقيقي ة ،مم ا يع ني أن ه يمكن أن تك ون أع دا ًدا جذري ة أو غ ير
نسبية .لهذا الس بب ،يمكن أن تحت وي األع داد العش رية على ج زء كس ري ،مث ل 9.0أو .-116.42
)print(17.3
وسينتج لنا:
17.3
ِّ
متغير يحوى عد ًدا عشريًا ،مثال: ً
أيضا أن نعلن عن يمكننا
my_flt = 17.3
)print(my_flt
الناتج:
17.3
وكم ا ه و الح ال م ع األع داد الص حيحة ،يمكنن ا أن نج رى العملي ات الحس ابية على
األعداد العشرية:
الناتج:
929.24
ألن 3عدد
أن َّ ،3.0 ≠ 3
تختلف األعداد الصحيحة واألعداد العشرية عن بعضها عمومً ا ،إذ َّ
.3القيم المنطقية
هناك قيمتان فقط لنوع البيانات المنطقية ( ،)Booleanوهما Trueو ُ .Falseتستخدم القيم
ع ادة م ا يب دأ اس م البيان ات المنطقي ة ب الحرف ،Bإش ارة إلى اس م ع الم الرياض يات George
التساوي •
)print(my_bool
False
.4السالسل النصية
السلسلة النص ية ( )stringهي عب ارة عن تسلس ل من مح رف واح د أو أك ثر (مح ارف وأع داد
ورم وز) ،ويمكن أن تك ون ثابت ة أو متغ يرة .تح اط السالس ل النص ية إم ا بعالم ات االقتب اس
المفردة ' أو عالمات االقتباس المزدوجة " ،ل ذلك إلنش اء سلس لة نص ية ،ض ع سلس لة من األح رف
يمكنك استخدام عالمات االقتب اس المف ردة أو عالم ات االقتب اس المزدوج ة ،المهم أن تك ون
ً
متسقا في برنامجك.
البرن امج البس يط "! "Hello, Worldيوض ح كي ف يمكن اس تخدام السالس ل النص ية في
)"!print("Hello, World
كما هو الحال مع أنواع البيانات األخرى ،يمكننا تخزين السالسل النصية في المتغيرات:
مث ل األع داد ،هن اك العدي د من العملي ات ال تي يمكن إجراؤه ا على السالس ل النص ية من أج ل
تحقي ق النت ائج ال تي نس عى إليه ا .السالس ل النص ية مهم ة لتوص يل المعلوم ات إلى المس تخدم،
.5القوائم ()Lists
رتب قاب ل للتغي ير ( .)mutableوكم ا ُتع رَّ ف السالس ل
القائمة ( )listعب ارة عن تسلس ل م َّ
النصية باستخدام عالمات االقتباس ،يتم تعريف القوائم باستخدام األقواس المعقوفة [].
َّ
ً
صحيحة: مثاًل ،هذه قائمة تحوي أعدا ًدا
ِّ
سنسمي قائمة السالسل النصية خاصتنا باالسم :sea_creatures في المثال التالي،
)print(sea_creatures
الق وائم هي ن وع بيان ات م رن للغاي ة ،ألنه ا قابل ة للتغي ير ،حيث يمكن إض افة قيم إليه ا ،أو
بي د َّ
أنه غ ير قاب ل للتغي ير ،ويُ س مى إزالت ه ،أو تغييره ا .هن اك ن وع بيان ات آخ ر مش ابه لق وائمْ ،
الصف (.)tuple
.6الصفوف ()Tuples
يُ ستخدم الصف ( )tupleلتجميع البيانات ،وهو تسلسل ثابت من العناصر وغير قابل للتغيير.
الصفوف تشبه القوائم إلى حد كبير ،لكنها تس تخدم األق واس () ب داًل من األق واس المعقوف ة []،
َّ
وألنها غير قابلة للتغيير ،فال يمكن تغيير أو تعديل قيمها.
والمخرجات هي:
كما هو الحال في أنواع البيان ات األخ رى ،تطب ع ب ايثون الص فوف تمامً ا كم ا كتبناه ا ،إذ تطب ع
.7القواميس ()Dictionaries
اتيح ب القيم المقابل ة له ا في
ُ القاموس ( )dictionaryهو ن وع مُ ض مّ ن في ب ايثون ،إذ ُترب ط مف
ش كل أزواج ،ه ذه األزواج مفي دة لتخ زين البيان ات في ب ايثون .يتم إنش اء الق واميس باس تخدام
س تالحظ أن ه باإلض افة إلى األق واس المعقوص ة ،توج د عالم ات النقط تين الرأس يتين
( )colonsداخ ل الق اموس .الكلم ات الموج ودة على يس ار النقط تين الرأس يتين هي المف اتيح.
أي نوع بيانات غير قابل للتغيير .المفاتيح في القاموس أعاله هي:
المفاتيح قد تكون َّ
الكلم ات الموج ودة على يمين النقط تين هي القيم .يمكن أن تت ألف القيم من أي ن وع من
والمخرجات هي:
إذا أردت الحص ول على الل ون ( )colorالخ اص بـ ،Sammyفيمكن ك القي ام ب ذلك عن طري ق
print(sammy['color']) # blue
على سبيل المثال ،قد نحتاج إلى ضم ( )concatenateالقيم العددية إلى سالسل نصية.
سيرشدك هذا القسم إلى كيفية التحويل بين األعداد والسالسل النصية والص فوف والق وائم،
العش رية .س تعمل في بعض األحي ان على ش يفرة برمجي ة كتبه ا ش خص آخ ر ،وق د تحت اج إلى
ً
حيحا في تحوي ل ع دد ص حيح إلى ع دد عش ري ،أو العكس ،أو ق د تج د َّ
أنك تس تخدم ع د ًدا ص
ال وقت ال ذي تحت اج إلى أع داد عش رية .يت وفر في ب ايثون تواب ع مض مّ نة ُتس ِّهل علي ك تحوي ل
يح وّ ل الت ابع )( floatاألع داد الص حيحة إلى أع داد عش رية .الس تخدام ه ذه الدال ة ،ض ع
ً
صحيحا بين القوسين: عد ًدا
)float(57
في هذه الحالة ،سيحوَّ ل العدد الصحيح 57إلى العدد العشري .57.0
ً
أيض ا اس تخدام ه ذه الدال ة م ع المتغ يرات .ل ُنس نِد القيم ة 57إلى المتغيِّ ر ،fثم نطب ع يمكن ك
f = 57
))print(float(f
الناتج سيكون:
57.0
يمكننا باستخدام الدالة )( floatتحويل األعداد الصحيحة إلى أعداد عشرية.
تملك بايثون دالة أخرى مضمَّ نة لتحويل األعداد عشرية إلى أعداد صحيحة :وهي )(.int
تعمل الدالة )( intبشكل مشابه للدالة )( :floatيمكنك إضافة عدد عشري داخل القوسين
)int(390.8
وأن c
َّ أن bيس اوي ،125.0 ً
أيض ا اس تخدام ه ذه الدال ة م ع المتغ يرات .لنص ِّرح َّ يمكن ك
b = 125.0
c = 390.8
))print(int(b
))print(int(c
والمخرجات ستكون:
125
390
عن د تحوي ل األع داد العش رية إلى أع داد ص حيحة بواس طة الدال ة )( ،intتقتط ع ب ايثون
وتبقي القيمة الص حيحة؛ ل ذلك ،لن ُتح ِّول الدال ة )( intالع دد 390.8
األجزاء العشرية من العدد ُ
إلى .391
في بايثون ،3عند تقسيم ع دد ص حيح على آخ ر ،س ينتج ع دد عش ري على خالف ب ايثون .2
a = 5 / 2
)print(a
وسينتج لنا:
2.5
بينما في بايثون ،2ستحصل على ناتج صحيح ،أي .2 = 5/2يمكن ك الحص ول على ع دد
a = 5 // 2
)print(a
وسينتج لنا:
2
ارج ع إلى فص ل «إص دارات ب ايثون :ب ايثون 2مقاب ل ب ايثون »3لالطالع على المزي د من
السالسل النصية عبارة عن سلسلة مؤلفة من محرف واحد أو أك ثر (المح رف يمكن أن يك ون
ً
حرف ا ،أو ع د ًدا ،أو رم ًزا) .السالس ل النص ية هي إح دى األش كال الش ائعة من البيان ات في ع الم
البرمجة ،وقد نحتاج إلى تحويل السالسل النصية إلى أعداد أو أعداد إلى سالسل نص ية في كث ير
ً
خاصة عندما نعمل على البيانات التي ينشئها المستخدمون. من األحيان،
يمكنن ا تحوي ل األع داد إلى سالس ل نص ية ع بر الت ابع )( .strيمكنن ا أن نم ِّرر إمَّ ا ع د ًدا أو
دعنا ننظر أواًل في تحويل األعداد الصحيحة .لتحويل العدد الصحيح 12إلى سلسلة نص ية،
)str(12
عند تنفيذ ) str(12في سطر أوام ر ب ايثون التف اعلي م ع األم ر pythonفي ناف ذة الطرفي ة،
''12
ً
حيحا ،ولكنَّه أص بح اآلن تشير عالمات االقتباس المحيطة بالعدد 12إلى أنه لم يع د ع د ًدا ص
سلسلة نصية.
سيص بح باس تخدام المتغ يرات تحوي ل األع داد الص حيحة إلى سالس ل نص ية أك ثر فائ دة.
الشيفرة البرمجية التي كتبها .نود أن نعرض ذلك على المستخدم ،وذلك بطباع ة السالس ل النص ية
"user = "Sammy
lines = 50
سي َ
طلق الخطأ التالي: عند تنفيذ الشيفرة أعالهُ ،
يتع ذر علين ا ض مُّ ( )concatenateاألع داد إلى السالس ل النص ية في ب ايثون ،ل ذلك يجب
"user = "Sammy
lines = 50
إذا أردن ا تحوي ل ع دد عش ري إلى سلس لة نص ية ب داًل من تحوي ل ع دد ص حيح إلى سلس لة
نصية ،فعلينا تتبع نفس الخطوات والص ياغة الس ابقة .عن دما نم ِّرر ع د ًدا عش ريً ا إلى الت ابع )(،str
ُ
ستعاد سلسلة نصية .يمكننا استخدام قيمة العدد العشري نفسها ،أو يمكننا استخدام متغيِّ ر:
))print(str(421.034
f = 5524.53
))print(str(f
وسينتج لنا:
421.034
5524.53
f = 5524.53
وهذا هو الناتج:
يمكن تحوي ل السالس ل النص ية إلى أع داد باس تخدام الت ابعين )( floatو )( .intإذا لم
يكن في السلس لة النص ية من ازل عش رية ،فاألفض ل أن تحوله ا إلى ع دد ص حيح باس تخدام
التابع )(.int
دعنا نستخدم مثال تتبع عدد أس طر الش يفرة ال ذي أوردن اه أعاله .ق د ت رغب في التعام ل م ع
ولكن ه ذه القيم
َّ ه ذه القيم باس تخدام الحس ابات الرياض ياتية لتق ديم نت ائج أدق للمس تخدم،
"lines_yesterday = "50
"lines_today = "108
)print(lines_more
الناتج هو:
دعن ا نع ِّدل الش يفرة لتض مين الت ابع )( intال ذي س يحول السالس ل النص ية إلى أع داد
ص حيحة ،ويس مح لن ا بالقي ام بالعملي ات الرياض ياتية على القيم ال تي ك انت سالس ل نص ية
في األصل.
"lines_yesterday = "50
"lines_today = "108
)print(lines_more
وهذه هي المخرجات:
58
أيضا تحويل األعداد في المثال أعاله إلى قيم عشرية باستخدام التابع )( floatبداًل
ً يمكننا
من الت ابع )( .intوب دالً من الحص ول على الن اتج ،58سنحص ل على الن اتج ،58.0وه و
عدد عشري.
ً
نقاطا على شكل قيم عشرية: سيكسب المستخدم Sammy
"total_points = "5524.53
"new_points = "45.30
)print(new_total_points
الناتج:
5524.5345.30
ً
الحة ،لكن ه سيض م في هذه الحالة ،يع ُّد استخدام المعامل +م ع سلس لتين نص يتين عملي ًة ص
النص يتين ب داًل من جم ع القيم تين الع دديتين؛ ل ذلك ،س يبدو الن اتج غ ير م ألوفَّ ،
ألنه ّ السلس لتين
ً
بعضا. نتيجة لصق القيمتين إلى جانب بعضهما
سنحتاج إلى تحويل هذه السالسل النص ية إلى أع داد عش رية قب ل إج راء أي عملي ات عليه ا،
"total_points = "5524.53
"new_points = "45.30
)print(new_total_points
وسينتج عن ذلك:
5569.83
اآلن ،وبع د أن حوَّ لن ا السلس لتين النص يتين إلى ع ددين عش ريين ،سنحص ل على النتيج ة
إذا حاولنا تحويل سلسلة نصية ذات منازل عشرية إلى عدد صحيح ،فسنحصل على خطأ:
"f = "54.23
))print(int(f
المخرجات:
إذا مرّ رنا عد ًدا عشريً ا موضوعً ا في سلسلة نص ية إلى الت ابع )( ،intفسنحص ل على خط أ ،إذ
ي تيح لن ا تحوي ل السالس ل النص ية إلى أع داد تع ديل ن وع البيان ات ال ذي نعم ل علي ه بس رعة
حتى نتمكن من إجراء عمليات على قيم عددية مكتوبة على شكل سالسل نصية.
يمكن ك اس تخدام الت ابعين )( listو )( tupleلتحوي ل القيم المُ م رَّ رة إليهم ا إلى قائمة أو
الص ف عب ارة عن تسلس ل م رتب ث ابت (غ ير قاب ل للتغي ير) من العناص ر الموض وعة بين •
الهالليين ().
َّ القوسين
ِّ
يحس ن تحوي ل قائم ة إلى ص ف أداء نظ ًرا لك ون الص فوف غ ير قابل ة للتغي ير ،فيمكن أن
ال برامج تحس ينًا كب يرًا .عن دما نس تخدم الت ابع )( ،tupleفس وف يُ عي د القيم ة المُ م رَّ رة إلي ه على
هيئة صف.
المخرجات:
أن العناص ر موض وعة اآلن بين قوس ين ،ب داًل من
أن الص ف ق د ُطب ع في المخرج ات ،إذ َّ
ن رى َّ
القوسين المربعين.
))print(tuple(sea_creatures
سينتج:
))'print(tuple('Sammy
المخرجات:
لمَّ ا ك ان باإلمك ان الم رور ( )iterateعلى مح ارف السالس ل النص ية ،فيمكنن ا تحويله ا إلى
صفوف باستخدام التابع )( .tupleأمَّ ا أنواع البيانات غير القابلة للتك رار ،مث ل األع داد الص حيحة
))print(tuple(5000
والناتج سيكون:
في حين أن ه من الممكن تحوي ل ع دد ص حيح إلى سلس لة نص َّية ،ومن ثم تحوي ل السلس لة
َّ
المعقدة. البرمجية
يمكن أن يك ون تحوي ل القيم ،وخاص ة الص فوف ،إلى ق وائم مفي ًدا عن دما تحت اج إلى نس خة
تس تخدم األق واس ،تأك د من تض مين أق واس الت ابع )( ،listوك ذلك األق واس الخاص ة
بالدالة )(:print
المخرجات هي:
الدالة )(.list
لجعل الشيفرة سهلة القراءة ،يمكننا إزالة أحد أزواج األقواس باستخدام متغيِّ ر:
)list(coral
))'print(list('shark
الناتج:
ِّ
يوفر لنا نسخة قابلة للتغيير من القيمة األصلية. ُح ِّو َلت هنا السلسلة sharkإلى قائمة ،وهذا
.9خالصة الفصل
في هذه المرحلة ،يُ ف ترض أن يك ون ل ديك فهم جي د لبعض أن واع البيان ات الرئيس ية المتاح ة
أنواع بيانات أخرى ،وذلك باستخدام التوابع المُ ضمّ نة .يوفر تحويل أنواع البيان ات في ب ايثون ل ك
ً
إضافية في مشاريعك البرمجية .يمكنك التعرف على المزيد من التفاص يل عن ه ذه األن واع ً
مرونة