2.2 تحويل الأنواع
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على:
- شرح كيف يستخدم المُفسِّر (interpreter) تحويل النوع الضمني (implicit type conversion).
- استخدام تحويل النوع الصريح (explicit type conversion) مع
int()،float()، وstr().
تحويل النوع الضمني
تُحدِّث العمليات الشائعة مُتغيِّرًا بحيث تحتاج أنواع بياناته إلى التغيير. مثال: يُسنِد نظام تحديد المواقع (GPS) أولاً القيمة 250 إلى distance، وهو عدد صحيح (integer). بعد منعطف خاطئ، يُسند نظام تحديد المواقع القيمة 252.5 إلى distance، وهو عدد عشري (float). يستخدم مُفسِّر (interpreter) بايثون تحويل النوع الضمني (implicit type conversion) لتحويل نوع بيانات (data type) من نوع إلى آخر تلقائيًا. بمجرد إسناد القيمة 252.5 إلى distance، يُحوِّل المُفسِّر distance من عدد صحيح إلى عدد عشري دون أن يحتاج المبرمج إلى تحديد التحويل.
مفاهيم تطبيقية
تحويل النوع الضمني عمليًا
تأمل المثال أعلاه.
تحويل النوع الصريح
غالبًا ما يحتاج المبرمج إلى تغيير أنواع البيانات لإجراء عملية معينة. مثال: يجب أن يقرأ برنامج قيمتين باستخدام input() ويجمع القيمتين. تذكر أن input() تقرأ القيم كسلاسل نصية (strings). يمكن للمبرمج استخدام تحويل النوع الصريح (explicit type conversion) لتحويل نوع بيانات (data type) من نوع إلى آخر.
- int() يحول نوع بيانات إلى عدد صحيح. يُزال أي جزء كسري. مثال:
int(5.9)ينتج5. - float() يحول نوع بيانات إلى عدد عشري. مثال:
float(2)ينتج2.0. - str() يحول نوع بيانات إلى سلسلة نصية. مثال:
str(3.14)ينتج"3.14".
مفاهيم تطبيقية
مثال: طلب البيتزا
تأمل المثال أعلاه.
مفاهيم تطبيقية
استخدام int()، float()، و str()
بافتراض أن x = 4.5 و y = int(x)، ما قيمة كل تعبير؟
جرّب بنفسك
متوسط الدرجات
يحسب البرنامج التالي متوسط ثلاث درجات امتحانات محددة مسبقًا ويطبع المتوسط مرتين. حسّن البرنامج لقراءة الدرجات الثلاث من الإدخال وطباعة المتوسط أولاً كعدد عشري، ثم كعدد صحيح، باستخدام تحويل النوع الصريح. تجاهل أي اختلافات تحدث بسبب التقريب.
جرّب بنفسك
أكواب الماء
يجب أن يقرأ البرنامج التالي كمية الماء بالأوقيات التي شربها المستخدم اليوم ويحسب عدد الأكواب التي شربها وعدد الأكواب المتبقية للشرب بناءً على هدف يومي. افترض أن الكوب يحتوي على 8 أوقيات. أصلح الشِفرة لحساب cups_drank و cups_left ومطابقة ما يلي:
ouncesهو عدد صحيح يمثل الأوقيات التي شربها المستخدم.cups_drankهو عدد عشري يمثل عدد أكواب الماء التي شربها.cups_leftهو عدد صحيح يمثل عدد أكواب الماء المتبقية للشرب (مقرّبة للأسفل) من الهدف اليومي البالغ 8 أكواب.
جرّب بنفسك
الناتج كعدد عشري
يقرأ البرنامج التالي عددين صحيحين كسلاسل نصية. احسب ناتج ضرب العددين الصحيحين، واطبع النتيجة كعدد عشري.