الطباعة والمخرجات
اعرض النتائج بواسطة print()، ونسّق النص باستخدام f-strings، وتحكم فيما يظهر على الشاشة.
- استخدام print() لعرض القيم والرسائل
- تنسيق المخرجات باستخدام f-strings ومحددات التنسيق
- دمج قيم متعددة في استدعاء واحد داخل print()
إجابة محبوسة داخل الآلة
جرّب أن تحسب
بيدك كنت ستكتب الخطوات والجواب على الورق:
الحصول على الجواب لا يشكّل إلا نصف حلّ المسألة ، النصف الآخر هو توصيله. أعطِ الآن نفس التعبير إلى حاسوب. يحسب في طرفة عين ، ثم ينسى فورًا أن يخبرك. تبقى القيمة صامتة داخل الآلة، وما لم تطلب منها أن تخرج، لن تراها أبدًا.
ذلك الحساب غير المرئي هو المشكلة الجوهرية التي تحلّها هذه الدرس. يحتاج البرنامج إلى طريقة لكتابة نتائجه حيث يستطيع إنسان قراءتها ، وفي بايثون، هذه التعليمات هي print().
print() ، كشف قيمة
تأخذ print() قيمة وترسلها إلى الشاشة. أي قيمة تصلح: تحوّلها بايثون إلى نصّ أولًا.
print(13.4) # 13.4
print(42) # 42
print("hello") # helloلست مضطرًّا إلى طباعة عددٍ منتهٍ ، تقبل print() أي تعبير وتُقيّمه قبل الطباعة:
print((17 * 3 + 4**2) / 5) # 13.4النمط الذي تستحضره: احسب شيئًا ثم سلّمه إلى print(). لا منفذ للقيم خارج البرنامج وحدها؛ الطباعة هي المخرج.
عدد، وتسميته
نادرًا ما يُغني عددٌ مجردٌ عن شيء. على الورق لن تكتب وحده ، بل ستكتب “النتيجة: 13.4”. أعطِ print() أكثر من وسيطٍ، وسيضع مسافة بينها:
print("Score:", 87) # Score: 87الوسيط الأول هو التسمية؛ والثاني هو القيمة. يمكنك تكديس أي عددٍ تريده، وتتولى print() فصلها عنك.
عرض الأرقام التي تقصدها تحديدًا
هنا تبدأ الصعوبات: القيمة
تحمل جميع أرقامها معها طوال الوقت. لكن جدولًا يحتاج إلى ، وسطر طقسٍ يحتاج إلى 23.8°C لا إلى 23.7891°C. عدد الأرقام المعروضة خيارٌ في طريقة عرض العدد ، ولا يجوز أن يغيّر القيمة المخزّنة، وإلا فقدت الدقة إلى الأبد.
لذلك يجب أن يعيش التقريب في الطباعة، لا في الحساب. f-string يتيح لك أن تقرر وقت الطباعة: اكتب f"..." وضع التعبير داخل {...} وأضف محدد التنسيق بعد النقطتين:
price = 19.999
print(f"Total: ${price:.2f}") # Total: $20.00 (يظهر مقرّبًا)
print(price) # 19.999 (القيمة كما هي)
print(f"Double: {price * 2}") # 39.998 (أي تعبير يصلح)يجدر بك أن تفكّك ما يحدث داخل {price:.2f}:
{price}تعني ضع القيمة هنا ، يتولّى f-string التحويل إلى نصّ عنك.:.2fتعني اعرضها عددًا ذا فاصلة ثابتة بمنزلتين عشريتين ، يحدث التقريب في الصورة المعروضة فقط.
لا يقتصر دور محددات التنسيق على التقريب: فهي تحاذي أيضًا. عمودٌ من 7.5 و8.5 و87.5 يبدو غير منتظم؛ وامنح كل عنصرٍ نفس العرض فيصطف العمود:
print(f"{7.5:>6}") # " 7.5" محاذاة لليمين بعرض 6
print(f"{87.5:>6}") # " 87.5"مثالٌ محلول: عمودُ الأسعار
يريدُ إيصالُ متجرٍ التسمياتِ على اليسارِ والأرقامَ مصفوفةً على الكسورِ العشريةِ. اتجاهانِ للتنسيقِ يفعلانِ الأمرينِ:
print(f"{'item':<10}{'price':>7}")
print(f"{'coffee':<10}{3.5:>7.2f}")
print(f"{'croissant':<10}{2.95:>7.2f}")
# item price
# coffee 3.50
# croissant 2.95يُحاذي <10 التسميةَ يسارًا على عرضِ عشرةِ أعمدةٍ؛ ويُحاذي >7.2f الرقمَ يمينًا على سبعةٍ، محافظًا على منزلتينِ عشريتينِ. المحاذاةُ تنسيقٌ في الاتجاهِ الآخرِ فقط ، نفسُ {قيمة:مواصفة} التي تعرفها، والسهمُ يقولُ إلى أين يميلُ النصُّ. هذه بذرةُ كلِّ جدولٍ سيبنيه المقررُ: تسمياتٌ في جهةٍ، وأرقامٌ في الأخرى.
أخطاء شائعة
- لا عائد لـ
print(). تُظهرprint("hi")نصًّا لكنها تتحوّل إلىNone، لا يمكنك التقاط ما طبعته في متغير. الطباعة هي نهاية حسابٍ، لا خطوةٌ داخله. - خلط الأنواع مع
+. يرفعprint("Score: " + 87)خطأTypeError، لأن نصًّا وعددًا لا يُجمعان. وُجدت f-strings تحديدًا لاقتران تسمية بقيمة:print(f"Score: {87}"). - الفتاحةُ
{الحرفيةُ في f-string تطلب{{. تطبعf"{{x}}"القيمةَ{x}؛ فتقولُ الفتاحةُ المنفردةُ إنها بدايةُ تعبيرٍ. والمضاعفةُ هي منفذُ الهروب.
🧩 تحديات
🧩 تحدٍّ ، فكّر أولًا ثم أظهر
احسب على الورق، ثم اطبعها دون أن تكتب الجواب بنفسك ، دع الحاسوب يحسب ويطبع في خطوة واحدة.
💡 الجواب: print((2**5 + 9) / 5) ← 8.2. تعبيرٌ واحد مسلَّم مباشرةً إلى print(): تُقيّمه الآلة ثم تكتب النتيجة.
🧩 تحدٍّ ، فكّر أولًا ثم أظهر
مع temperature = 23.7891، اطبع "Today: 23.8°C" (منزلة عشرية واحدة) دون المساس بالقيمة المخزّنة.
💡 الجواب: print(f"Today: {temperature:.1f}°C") ← Today: 23.8°C. محدد :.1f يقرّب عند العرض فقط؛ ويبقى temperature = 23.7891.
🤔 أسئلة سقراطية
- لماذا تستخدم بايثون
print()كدالة (بأقواس) بدلًا من كونها تعليمة؟ ما الميزة التي يمنحك ذلك؟ - يطبع
print("A", "B", "C")الناتجA B Cبمسافات. كيف تطبعها دون مسافات؟ وكيف بفواصل بينها؟ - إذا كان
x = 3.14، فماذا تُنتجf"{x}"؟ وماذا عنf"{x:.0f}"؟ اشرح الفرق من حيث القيمة مقابل تمثيلها.
✅ فحص سريع
1. حُسبت معادلتك، لكن البرنامج لا يعرض شيئًا. لماذا؟
2. كيف تطبع 3.14159 مع إظهار منزلتين عشريتين، دون تقريب القيمة المخزّنة؟