القائمة الرئيسية

الصفحات

بايثون الدرس الاول دالة الطباعة Print - كورس برمجة بايثون بالعربي

بسم الله الرحمن الرحيم


بايثون الدرس الاول دالة الطباعة Print من سلسلة دروس بايثون بالعربي

دالة الطباعة (print):

تجدها فى كل لغات البرمجة هي تستخدم بكثرة فى اى برنامج او سكربت والهدف منها طباعة النصوص او العمليات الحسابية او التحدث مع المستخدم وطباعة رسائل الخطا واحياناً يستخدمها المبرمج لمعرفة سبب المشكلة بين سطور الكود.


بيثون هي لغة بسيطة جدا، ولها بنية بسيطة جدا. أبسط توجيه في بيثون هو "الطباعة" - وهو يستخدم لطباعة نص او اى قيمه

ملاحظه :
  1. علامة الـــ ( # ) تستخدم لوضع تعليق للقراءه البشريه فقط ولا يعمل مع البرنامج
  2. جميع الاكواد الاخرى سوف نتطرق اليها فى دروس قادمه فقط ركز على print 
  3. يمكنك تجربة الكود والتعديل عليه عن طريق محرر التجربه

جملة طباعة نص في بايثون:

# طباعه نص على الشاشه
print("وقل رب زدني علمًا")

والنتيجة كالتالي :


وقل رب زدني علمًا

تجربه طباعة نص فى لغة بايثون:

print("hello world")
print('welcome in codear.top')

 

احيانا ترغب في عرض رسالة للمستخدم تخبره بشىء ما لذالك قد تحتاج الي دالة الطباعة print.



print('جاري تحميل البرنامج من فضلك انتظر قليلا')


وهذا ما سيؤدي لطباعة الجمله كما هي للمستخدم كالاتي:



جاري تحميل البرنامج من فضلك انتظر قليلا


طباعة متغير في بايثون

يمكن ايضا اضافة هذه الرساله في متغير وطباعتها عن طريق المتغير:


msg = 'جاري تحميل البرنامج من فضلك انتظر قليلا'
print(msg)


وسوف تكون نتيجة الطباعة كما بالمثل السابق ولكن يمكننا استخدام متغير الرساله msg في اكثر من مكان داخل الكود وبذالك اختصرنا الكثير من الحروف في ثلاثة حروف فقط وهما اسم المتغير بدلاً من كامل الرسالة.



جاري تحميل البرنامج من فضلك انتظر قليلا


طباعة بيانات النظام في بايثون

كما يمكنك ايضا طباعة اسم مستخدم النظام عبر مكتبة os .


import os
print('welcome ' + os.getlogin())

والنتيجة كالتالي

welcome root

الطباعة المنسقة في بايثون

يمكن ايضا الطباعة بتنسيق f لطباعة مرتبة ومنسقة.

import os
msg = 'www.codear.top'
print(f'hello {os.getlogin()} welcome in {msg}')

لتكون النتيجة كالتالي:


hello root welcome in www.codear.top


من مميزات الطباعة بتنسيق f هو انك لا تحتاج لتحويل الانواع الغير نصية الي نص فهي سوف تقوم بذالك بالنيابة عنك.

في الدروس القادمة سوف نشرح انواع البيانات في بايثون مثل int, str, bool والمزيد من الانواع.

ولكن الان دعونا نوضح دالة الطباعة اكثر علي سبيل المثال اذا حاولنا طباعة متغير نصي مع متغير رقمي بالشكل التالي:

name = 'ahmed'
age = 22
print('name: ' + name + ' age: ' + age)

بعد تنفيذ الكود السابق سوف يحدث الخطا التالي:

Traceback (most recent call last):
  File "e:/AppServ/www/codeschool/print.py", line 4, in <module>
    print('name: ' + name + ' age: ' + age)
TypeError: can only concatenate str (not "int") to str

كما تري في السطر الاخير نوع الخطا انه يمكن فقط الجمع بين النصوص وليس نصوص وارقام, ولحل هذا الخطا علينا تحويل النوع الرقمي الي نوع نصي كالتالي:

تحويل نوع البيانات الرقمي الي نصي اثناء الطباعة

name = 'ahmed'
age = 22
print('name: ' + name + ' age: ' + str(age))

لاحظ اننا قمنا بتحويل قيمة المتغير الرقمي age من نوع رقمي الي نوع نصي اثناء الطباعة وسوف ينتج عن هذا الكود السطر التالي:

name: ahmed age: 22

لذالك فان تنسيق f يبعدنا عن مثل هذا الخطا ويوفر علينا التحويل بين الانواع كما بالمثال التالي:

name = 'ahmed'
age = 22
print(f'name: {name} age: {age}')

لاحظ اننا لم نقم بتحويل القيمة الرقمية الي قيمة نصية وسوف تتم الطباعة بدون اي مشاكل او اخطاء كالتالي:

name: ahmed age: 22

والسبب ان تنسيق f يتولي ذالك.

في الامثله السابقة قمنا بطباعة قيم نصية ورقمية والتالي مثال علي طباعة الانواع الاخري من البيانات.

مثال علي طباعة انواع مختلفة من البيانات

print('welcome')
print(23)
print(5.54)
print(2 + 4j)
print(True)
print([2, 4, 6])
print((2, 4, 6))
print({'blue', 'green', 'red'})
print({'name': 'ahmed', 'age': 22})

والنتيجة كالتالي:

welcome
23
5.54
(2+4j)
True
[2, 4, 6]
(2, 4, 6)
{'red', 'green', 'blue'}
{'name': 'ahmed', 'age': 22}

لحظ انه حتي القيم الفارغة null يتم طباعتها ولكن يتم طباعة نص None بدلاً من القيمة الغير موجودة

يمكن ايضاً طباعة سطر فارغ عن طريق دالة الطباعة print.


print(1)
print()
print(2)

والنتيجة كالتالي:


1

2

طباعة متعددة الاطراف

لاحظ ايضاً ان دالة الطباعة تقبل طباعة اكثر من طرف في ان واحد وذالك بضم كل الاطراف معاً كالتالي:


name = 'osama'
age = 32
print('my name is', name, 'and I am', age)

والنتيجة كالتالي:


my name is osama and I am 32

كما تري تم جمع الاجزاء الاربع مع واضافة مسافة فارغة واحدة بين كل جزء وايضاً تم تحويل القيمة الرقمية الي قيمة نصيه.

طباعة اطراف متعددة مع تحديد المسافات بينهم باستعمال sep 

يمكن تحديد عدد المسافات الفارغة عن طريق sep او اضافة رموز بدلا عنها كالتالي:

name = 'osama'
age = 22
# الافتراضي وهي مسافة واحدة
print('my name is', name, 'and I am', age, sep=None)
# الافتراضي وهي مسافة واحدة
print('my name is', name, 'and I am', age, sep=' ')
# بدون اي مسافات
print('my name is', name, 'and I am', age, sep='')
# اضافة 4 مسافات فارغة
print('my name is', name, 'and I am', age, sep='    ')
# اضافة رموز بدل المسافة
print('my name is', name, 'and I am', age, sep=' -> ')

والنتيجة كالتالي:

my name is osama and I am 22
my name is osama and I am 22
my name isosamaand I am22
my name is    osama    and I am    22
my name is -> osama -> and I am -> 22


الطباعة علي اسطر متعددة

كما يمكن ايضا الطباعة علي سطور متعددة باستخدام رمز سطر جديد \n.


name = 'osama'
age = 22
# طباعة علي اسطر متعددة
print('my name is', name, 'and I am', age, sep='\n')

وسوف تكون النتيجة كالتالي:


my name is
osama
and I am
22

يمكن ايضاً الاستفادة من تعليمة sep في طباعة شىء مثل مسارات الملفات.


print('home','user','root', sep='/')

والنتيجة تكون:

home/user/root

لاحظ ان الفاصل ياتي بين العناصر وليس حولها لذالك عليك تعديلها حسب رغبتك كالتالي.


print('/home','user','root', sep='/')

/home/user/root

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


print('','home','user','root', sep='/')

/home/user/root

كما تلاحظ بالمثال الاول قمنا باضافة الشرطة المائلة / يدويا لاول عنصر وفي المثال الثاني قمنا باضافة عنصر فارغ.

دمج وطباعة عناصر قائمة او مجموعة او array.

يمكن دمج وطباعة مصفوفة مباشرتا باستخدام دالة الطباعة print باستخدام دالة join او عامل التشغيل النجمي *.

الدمج باستخدام دالة join.

arr = ['my name', 'is', 'osama']
print(' '.join(arr))

والنتيجة كالتالي:

my name is osama

ولكن كن حذراً اثناء الدمج باستخدام دالة join لانها لن تستطيع الدمج بين انواع مختلفة من البيانات .

arr = ['my name', 'is', 'osama', 'and I am', 32]
print(' '.join(arr))

كما تلاحظ يوجد بين عناصر المصفوفة عنصر رقمي لذالك سوف يحدث الخطا التالي:


Traceback (most recent call last):
  File "e:/AppServ/www/codeschool/print.py", line 2, in <module>
    print(' '.join(arr))
TypeError: sequence item 4: expected str instance, int found

دمج وطباعة المصفوفة باستخدام عامل التشغيل النجمي *.


arr = ['my name', 'is', 'osama', 'and I am', 32]
print(*arr)

هذا الاسلوب يعتبر الاكثر امانا في فك ودمج عناصر المصفوفة حيث انه يقوم بدمج العناصر بمختلف انواع بياناتها سواء نصية او رقمية والناتج كالتالي.

my name is osama and I am 32

يمكن ايضا كتابة الكود السابق كالتالي:

print(*['my name', 'is', 'osama', 'and I am', 32])

وسوف يؤدي نفس الوظيفة.

طباعة اسطر متعددة علي سطر واحد باستعمال تعليمة end.

عند طباعة اجزاء من ملف يتم طباعة كل سطر علي سطر منفصل.


print('line1\nline2\nline3')

لاحظ وجود رمز سطر جديد \n بين النص وبسبب هذا الرمز سوف يتم الطباعة علي سطور متعددة كالتالي:


line1
line2
line3

وفي بعض الحالات نرغب في طباعتهم علي سطر واحد وهنا ياتي دور تعليمة end حيث تقوم بتعطيل السطر الجديد والطباعة علي نفس السطر.


print('welcome in ', end='')

print('codear')

علي الرغم من ان الطباعة الاولي منفصله عن الثانية ويفترض طباعتهما علي اسطر متتالية الا ان وبفعل تعليمة end يتم طباعتهما علي نفس السطر.


welcome in codear

كما هو الحال مع تعليمة sep يمكن الربط باستخدام اي رمز في تعليمة end.

print('welcome in ', end=': ')
print('our site ', end=': ')

print('codear')

والنتيجة هي دمج الثلاثة اسطر في سطر واحد مع الفصل بالرمز المطلوب:


welcome in : our site : codear

الطباعة باستعمال sep و end معاً

يمكن ايضا المزج بين التعليمتين sep & end للحصول علي كتله من النصوص علي سطر واحد مفصولة باي رموز.


print('we','are','programmers', sep=', ', end=': ')
print('and','we can','read', sep=', ', end=': ')
print('and write','any','code', sep=', ')

حتي نحصل علي النتيجة التالية:


we, are, programmers: and, we can, read: and write, any, code

يمكن ايضا استخدام تعليمة end للطباعة علي اسطر متعددة مع اضافة رمز للسطر:


print('we','are','programmers', end='\n > ')
print('and','we can','read', end='\n > ')
print('and write','any','code')

لنحصل علي شكل الطباعة التالي:


we are programmers
 > and we can read
 > and write any code

طباعة محتوي ملف

لاحظ انه عند طباعة محتوي ملف عبر حلقة تكرار علي الاسطر سوف ينتج عن ذالك سطر جديد مكرر.

حتي نقوم بتلك التجربة علينا انشاء ملف جديد باسم newfile.txt او اي اسم مع تعديلة في الكود ثم كتابة عدد من الاسطر داخل الملف.

علي سبيل المثال سوف نكتب التالي في ملف newfile.

  newfile.txt  
line1
line2
line3

ثم فتح الملف وعمل حلقة تكرار سطر بسطر علي الملف وطباعة كل سطر.


with open('newfile.txt') as File:
    for line in File:
        print(line)

بعد تنفيذ الكود السابق سوف تلاحظ انه تم طباعة سطر جديد مكرر كما بالشكل التالي:

line1

line2

line3

ولحل تلك المشكلة يمكننا الاستعانة بدالة rstrip() ووظيفتها هي ازالة الاحرف الزائدة من النص والوضع الافتراضي لها هو ازالة المسافة الفارغة المكررة.

ويمكننا تطبيقها علي الكود السابق كالتالي:

with open('newfile.txt') as File:
    for line in File:
        print(line.rstrip())

وسوف ينتج عن هذا الكود طباعة الاسطر بشكل متتالي بدون تكرار الاسطر الفارغة كما بالشكل التالي:


line1
line2
line3

الطباعة مع ازالة الحروف المكررة

كما ذكرنا سابقاً بان دالة rstrip() تزيل الحروف المتكررة وان الوضع الافتراضي لها هو المسافة الفارغة فيمكنك تحديد الحروف المتكرره المراد ازالتها من النص كما يلي:

x = "codear.top.,www.,.,."
print(x.rstrip(".,w"))

والنتيجة كالتالي:
codear.top

ويمكنك ايضا استخدام الوسيطة end السابق ذكرها للاحتفاظ بالسطر الجديد مع حذف المكرر كما يلي:

with open('newfile.txt') as File:
    for line in File:
        print(line, end='')

والنتيجة كالتالي:
line1
line2
line3

كل هذا ومازال هناك الكثير لتعرفة عن دالة الطباعة print()

الطباعة بدون دالة الطباعة print()

والمثير للدهشه انه يمكنك الاستغناء عن دالة الطباعة print() عبر استخدام احد التدفقات القياسية std التي يوفرها النظام عبر مكتبة sys.

import sys
sys.stdout.write('hello world')



طباعة رقم او عملية حسابية :


# طباعة رقم او عمليه حسابيه
print(6)

# طباعة عمليه حسابيه
print(5 * 6)

# طباعه داخل دالة التكرار
print("طباعة داخل دالة التكرار")
for i in range(1, 6):
   print("---+")
   print(5 * i)

# هذا السطر يتم تنفيذه بعد الخروج من دالة التكرار  
print("---+")

المسافة الفارغة :

بايثون تستخدم المسافات في تحديد الشروط والنواتج وما الي ذلك علي عكس اللغات الأخري التي تستخدم الأقواس في نفس العمليات، ولكن المسافة البادئة القياسية تتطلب أربع مسافات. فمثلا:

x = 1
if x == 1:
    # اربع مسافات بدايه
    print("اكس = واحد")

تمارين بايثون

الاختبار الاول استخدام لغة البرمجة بايثون لـ طباعة نصوص, وارقام .

استخدم المحرر التالي لطباعة الاتى :

1 - جملة "ربي زدني علما والحقني بالصالحين!"
2 - ناتج 125 + 2511
3 - نص "@&%#&%$"



- فى الدرس التالي سوف نتعرف على المتغيرات (variables) وكيفية استخدامها فى لغة برمجة بايثون وما الحاجة اليها وانواعها. 

الانتقال الى الدرس الثانى: المتغيرات والانواع


تعليقات

8 تعليقات
إرسال تعليق
  1. لو سمحت ممكن رابط تحميل برنامج البايثون

    ردحذف
  2. روان محمد حميد الشمري

    ردحذف
  3. رياض المالكي والتخصص علوم وبارك الله فيك

    ردحذف
  4. แทงบอล offers a wide range of wagering games on sports. They are very famous with bettors who bet on sports because of their many wagering choices. You can browse roulette, blackjack, and soccer betting. You can likewise play live gambling club games on the web. You can likewise play live games wagering. You can play baccarat, poker, or Baccarat. You can pick from various games.

    ردحذف
  5. الردود
    1. جاري اضافة المزيد من الدروس والاختبارات الرائعة

      حذف

إرسال تعليق

التنقل السريع