تحويل الأنواع

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 من عدد صحيح إلى عدد عشري دون أن يحتاج المبرمج إلى تحديد التحويل.

نقطة تحقق

مثال: تقييمات الكتب

مفاهيم تطبيقية

تحويل النوع الضمني عمليًا

تأمل المثال أعلاه.

1.
ما نوع بيانات book_rating' في السطر 7؟
  1. عدد عشري
  2. عدد صحيح
2.
ماذا سيكون نوع بيانات book_rating' إذا كانت update = 1.0 بدلاً من 0.5؟
  1. عدد عشري
  2. عدد صحيح
3.
ما نوع بيانات x بعد تنفيذ الشِفرة التالية؟
x = 42.0
x = x * 1
  1. عدد عشري
  2. عدد صحيح

تحويل النوع الصريح

غالبًا ما يحتاج المبرمج إلى تغيير أنواع البيانات لإجراء عملية معينة. مثال: يجب أن يقرأ برنامج قيمتين باستخدام input() ويجمع القيمتين. تذكر أن input() تقرأ القيم كسلاسل نصية (strings). يمكن للمبرمج استخدام تحويل النوع الصريح (explicit type conversion) لتحويل نوع بيانات (data type) من نوع إلى آخر.

  • int() يحول نوع بيانات إلى عدد صحيح. يُزال أي جزء كسري. مثال: int(5.9) ينتج 5.
  • float() يحول نوع بيانات إلى عدد عشري. مثال: float(2) ينتج 2.0.
  • str() يحول نوع بيانات إلى سلسلة نصية. مثال: str(3.14) ينتج "3.14".

نقطة تحقق

مثال: طلب البيتزا

مفاهيم تطبيقية

مثال: طلب البيتزا

تأمل المثال أعلاه.

4.
أي دالّة تحول عدد الشرائح المُدخل إلى نوع بيانات يمكن استخدامه في الحساب؟
  1. float()
  2. input()
  3. int()
5.
كيف يمكن تغيير السطر 3 لتحسين البرنامج بشكل عام؟
  1. استخدم float() بدلاً من int().
  2. أضف 1 إلى نتيجة int().
  3. أضف str() حول int().

مفاهيم تطبيقية

استخدام int()، float()، و str()

بافتراض أن x = 4.5 و y = int(x)، ما قيمة كل تعبير؟

6.
y
  1. 4
  2. 5
7.
str(x)
  1. 4.5
  2. "4.5"
8.
float(y)
  1. 4.0
  2. 4.5

جرّب بنفسك

متوسط الدرجات

يحسب البرنامج التالي متوسط ثلاث درجات امتحانات محددة مسبقًا ويطبع المتوسط مرتين. حسّن البرنامج لقراءة الدرجات الثلاث من الإدخال وطباعة المتوسط أولاً كعدد عشري، ثم كعدد صحيح، باستخدام تحويل النوع الصريح. تجاهل أي اختلافات تحدث بسبب التقريب.

جرّب بنفسك

أكواب الماء

يجب أن يقرأ البرنامج التالي كمية الماء بالأوقيات التي شربها المستخدم اليوم ويحسب عدد الأكواب التي شربها وعدد الأكواب المتبقية للشرب بناءً على هدف يومي. افترض أن الكوب يحتوي على 8 أوقيات. أصلح الشِفرة لحساب cups_drank و cups_left ومطابقة ما يلي:

  • ounces هو عدد صحيح يمثل الأوقيات التي شربها المستخدم.
  • cups_drank هو عدد عشري يمثل عدد أكواب الماء التي شربها.
  • cups_left هو عدد صحيح يمثل عدد أكواب الماء المتبقية للشرب (مقرّبة للأسفل) من الهدف اليومي البالغ 8 أكواب.

جرّب بنفسك

الناتج كعدد عشري

يقرأ البرنامج التالي عددين صحيحين كسلاسل نصية. احسب ناتج ضرب العددين الصحيحين، واطبع النتيجة كعدد عشري.