به کمک تابع پرینت در پایتون میتوانیم متن یا هر چیزی را در خروجی نمایش دهیم. استفاده از print بسیار ساده و البته کاربردی است؛ اما در عین سادگی دارای پیچیدگیها و ترفندهای مختلفی است. در این مقاله نحوه کار با تابع print پایتون را بررسی کرده و ترفندهای کاربردی آن را میآموزیم.
تابع پرینت یکی از توابع پر استفاده و مفید در پایتون است. برای دیدن نتیجه کار، دادن یک خروجی به کاربر یا حتی دیباگ کردن (Debug) از آن استفاده میشود.
این تابع یکی از توابع داخلی (یا به اصطلاح Built-in) بوده و برای استفاده از آن نیاز به وارد کردن کتابخانه یا ابزار خاصی نداریم. آن را به صورت print()
نوشته و مقداری که میخواهیم در خروجی چاپ شود را به آن میدهیم. مثلاً:
print("winlearn")
خروجی کد بالا، چاپ متن در کنسول برنامه خواهد بود.
ویژگیها و نحوه استفاده از تابع پرینت در پایتون نسخه ۲ و ۳ شبیه هم هستند. تنها تفاوت اصلی آنها در نحوه صدازدن تابع است. در نسخه ۲ تابع را بدون پرانتز (به صورت print
) نوشته و در نسخه ۳ باید برای تعریف آرگومانهای ورودی از پرانتز (print()
) استفاده کنیم.
تابع پرینت در پایتون
اگر در محیط شِل پایتون (Python Shell) کدهایی را نوشته باشید، پس از اجرای هر خط، بلافاصله خروجی چاپ میشود.
همانطور که در تصویر زیر میبینید، پس از نوشتن هر خط، در خط بعدی نتیجه نمایش داده شده است.
حال بیایید یک فایل پایتون به نام run.py
ایجاد کرده و همین کدها را در آن قرار دهیم.
"Hello World!"
7 + 22
"wimlearn"
اگر این فایل با یکی از روشهای اجرای کد پایتون اجرا کنیم، هیچ چیزی در خروجی نخواهیم دید!
برای اینکه خروجی هر کدام از خطهای کد بالا در خروجی نمایش داده شود، میبایست برای هر کدام از دستور print()
استفاده کنیم.
print("Hello World!")
print(7 + 22)
print("winlearn")
چاپ با print در پایتون چگونه انجام میشود ؟
وقتی یک شئ یا متغیری به تابع پرینت پایتون داده میشود، پایتون ابتدا سعی میکند آن را تبدیل به رشته کرده و سپس آن را در خروجی نمایش میدهد.
در مجموع، ورودی (های) تابع print باید به صورت رشته پایتون باشند. اگر رشته نبودند، ابتدا تبدیل به رشته شده و سپس چاپ میشوند.
اجازه دهید با یک مثال ادامه دهیم. وضعیت رشتههای متنی که مشخص است! فرض کنید میخواهیم یک محاسبه ریاضی را در خروجی چاپ کنیم. کد زیر را برای این کار مینویسیم:
print( (147 / 28) + 6)
اگر این کد را اجرا کنیم، نتیجه دلخواهمان به دست نخواهد آمد! اجرای این خط کد به ما عدد 11.25 را در کنسول میدهد. این عدد همان نتیجه تقسیم و جمع نوشته شده است.
دلیل این اتفاق چیست؟
مقدار ورودی تابع به صورت رشته نیست. پس پایتون سعی میکند آن را به رشته تبدیل کند. در فرآیند تبدیل یک فرمول محاسباتی به رشته، تا حد ممکن مقدار آن محاسبه شده و نتیجه نهایی تبدیل به رشته میشود.
برای رفع این مشکل، میبایست فرمول محاسباتی را درون علامت کوتیشن ("
) قرار دهیم. به این صورت ما به تابع پرینت یک رشته تحویل دادهایم که باید مستقیماً چاپ شود.
چاپ متغیر در پایتون
برای چاپ مقدار متغیر در خروجی فقط کافی است آن را درون تابع print()
قرار دهیم.
فرض کنید دو متغیر x
و s
در اختیار داریم. اولی از نوع عددی و دیگری از نوع رشته است.
x = 27
s = "Omid"
برای چاپ این دو متغیر در پایتون به صورت زیر عمل میکنیم.
print(x)
print(s)
تابع پرینت در پایتون میتواند به تعداد نامحدودی ورودی بگیرد. اگر همه این ورودیها از نوع رشته یا چیزی باشند که تبدیل به رشته متنی شوند، مثل این است که برای هر کدام از ورودیها به صورت جداگانه یک print()
نوشتهایم.
در نتیجه به جای دو خط کد بالا، میتوان هر دو متغیر را با استفاده از یک دستور در خروجی چاپ کرد.
print(x ,s)
تابع پرینت پایتون میتواند بینهایت ورودی گرفته و تمام آنها را تک به تک در خروجی چاپ کند.
چاپ نوعهای دادهای مختلف با print
در مثال فرمول ریاضی دیدیم که در تابع print ابتدا، ورودی به رشته تبدیل شده و سپس چاپ میشود.
اکثر نوعهای دادهای در پایتون دارای یک تابع برای تبدیل شدن به رشته هستند. این تابع به طور پیشفرض روی تمام اشیاء تعریف میشود.
فرض کنید یک لیست پایتون داریم که در آن اسم چهار نفر وجود دارد.
اگر متغیر لیست را مستقیماً به تابع بدهیم، خروجی مشابه خط چهارم کد زیر خواهد شد:
names = ["Mina", "Ehsan", "Nazanin", "Omid"]
print(names)
# Result:
# ['Mina', 'Ehsan', 'Nazanin', 'Omid']
گفتیم که پایتون سعی میکند مقدار غیر رشتهای را به رشته تبدیل کند. این کار با استفاده از تابعstr()
یا متد__str__
انجام میشود.
با دادن هر متغیر یا مقداری به تابع str()
، مقدار رشتهای آن را به عنوان خروجی خواهیم داشت.
در برنامه نویسی شئگرای پایتون، با تعریف متد __str__
در شئ، میتوان نحوه نمایش شئ در تابع print()
یاstr()
را مشخص کرد. در صورت عدم تعریف این متد، به طور پیشفرض مقدار id شئ بازگردانده میشود.
ترفندهای پرینت در پایتون
گاهی اوقات لازم است تا چند مقدار یا متغیر را تبدیل به رشته کرده و کنار یکدیگر در خروجی نمایش دهیم.
برای این کار معمولاً متغیرها را به کمک تابع str()
به رشته تبدیل کرده و سپس به کمک عملگر +
آنها را به یکدیگر متصل میکنیم.
برای مثال، در کد زیر سعی میکنیم یک متغیر عددی را به دو رشته ثابت دیگر متصل کنیم.
age = 25
name = "Elham"
print(name + " have " + age + " years old!")
پس از اجرای کد بالا، خطای زیر را دریافت میکنیم:
تصحیحشده کد بالا به صورت زیر خواهد بود:
age = 25
name = "Elham"
print(name + " have " + str(age) + " years old!")
راهحل دیگر، تبدیل ورودی فعلی به چند ورودی مختلف است. برای این کار میبایست متغیر age که رشتهای نیست را به صورت یکی ورودی جداگانه به تابع پرینت در پایتون بدهیم.
age = 25
name = "Elham"
print(name + " have" ,age ,"years old!")
برای تابع print()
در پایتون چهار آرگومان دیگر وجود دارد که استفاده از آنها اختیاری است. به عبارتی، این تابع به صورت زیر تعریف میشود:
print( object(s), sep=separator, end=end, file=file, flush=flush )
چهار ورودی دلخواه تعریفشده در خط بالا عبارتاند از:
- جداکننده (sep) : اگر چند رشته برای چاپ به تابع داده شود، آنها را با استفاده از مقدار این متغیر جدا میکند.
- کاراکتر پایانی (end) : کاراکتری که در پایان خط پرینت شده قرار میگیرد. به طور پیشفرض
\n
(خط جدید) است. - فایل (file) : به جای چاپ متن در خروجی، آن را در یک فایل مشخص ذخیره میکند.
- فلاش (flush) : یک مقدار 0 یا 1 است که مشخص میکند خروجی به صورت flushed است یا buffered. (پیشفرض از نوع دوم است)
کار با جداکننده sep در پرینت پایتون
فرض کنید میخواهیم نام سه نفر را در خروجی نوشته و با کاراکتر , از یکدیگر جدایشان کنیم.
یکی از راهحلها برای انجام این کار، تعریف آرگومان sep در تابع پرینت پایتون است. به قطعه کد زیر توجه کنید:
print("Mitra", "Iman", "AliReaz", sep=",")
# Result:
# Mitra,Iman,AliReaz
مقدار ورودی sep میتواند یک کاراکتر یا یک رشته طولانی باشد! مثلاً در قطعه کد زیر، برای نمایش یک آدرس فرضی از علامت ->
استفاده کردهایم.
print("Rahmat Blvd.", "Iman St.", "No. 2", sep=" -> ")
# Result:
# Rahmat Blvd. -> Iman St. -> No. 2
کاراکتر پایانی متن با آرگومان end در پایتون
وقتی از دستور print()
استفاده میکنیم، بهطور پیشفرض و پس از پرینت نتیجه، به ابتدای خط بعدی میرود.
برای مثال، در قطعه کد زیر، سه بار از تابع استفاده کردهایم. همانطور که میبینید پس از هر بار اجرا، به خط جدید رفته است:
print("Test")
print("New")
print("Line")
# Result:
# Test
# New
# Line
پایتون در انتهای پرینت متن در کنسول، یک کاراکتر خط جدید (/n
) قرار میدهد.
با تعریف آرگومان end میتوانیم این کاراکتر را تغییر دهیم. کاراکتر تعریفی میتواند هر چیزی باشد! در قطعه کد زیر، از یک فاصله (space) استفاده شده است.
print("Test", end=" ")
print("New", end=" ")
print("End", end=" ")
# Result:
# Test New End
دقت کنید که در انتهای نتیجه بالا، یک فضای خالی نیز ایجاد شده است. این space اضافی، همان کاراکتر انتهایی مربوط به دستور پرینت end در خط سوم است.
اگر دنبال ترفندهای بیشتری در کار با تابع پرینت هستید، پیشنهاد میکنم به این سایت انگلیسی مراجعه کنید.
جمعبندی: آموزش پرینت و چاپ متن در پایتون
در این مقاله با تابع پرینت در پایتون آشنا شدیم. این تابع در نسخه سوم به صورت print()
و در نسخه دوم پایتون به صورت print
تعریف میشود.
در سادهترین حالت، با دادن یک ورودی میتوان آن را در خروجی کنسول برنامه نمایش داد. همچنین آموختیم که مقادیر تعریف شده به عنوان ورودی این تابع، چگونه به رشته تبدیل میشوند.
در همین حال، با تابع جانبی str()
و متد __str__
آشنا شدیم که کار تبدیل شئ یا مقدار به رشته را انجام میدهند. دیدیم که دستور print در پایتون دارای چهار آرگومان ورودی دلخواه دیگر نیز هست.
آرگومان sep برای تعریف مقدار جداکننده در هنگام چاپ چند رشته و آرگومان دستور end برای تعریف کاراکتر پایانی چاپ رشته دو آرگومان پرکاربرد این تابع هستند.