چاپ خروجی در پایتون و بررسی دقیق دستور print

بفرست برای دوستت
Telegram
WhatsApp
چاپ خروجی در پایتون و بررسی دقیق دستور print

فهرست مطالب

در درس ۱۲ ام آموزش رایگان پایتون می خواهیم در مورد چاپ خروجی در پایتون و بررسی دقیق دستور print صحبت کنیم.

 

خروجی با استفاده از تابع ()print

تابع ()print در پایتون پیام را در صفحه نمایش یا هر دستگاه خروجی استاندارد دیگری چاپ می‌کند. در این مقاله در دیتایاد، در مورد تابع ()print در پایتون و همچنین عملیات‌های مختلف آن بحث خواهیم کرد.

 

سینتکس (نوشتار صحیح) تابع ()print در پایتون

Syntax : print(value(s), sep= ‘ ‘, end = ‘\n’, file=file, flush=flush)

 

پارامترها:

  • value(s): هر مقداری، و به هر تعدادی که دوست دارید. این مقادیر به رشته تبدیل شده و چاپ می‌شوند.
  • sep=’جداکننده’: (اختیاری) مشخص می‌کند اشیاء مورد نظر برای چاپ چطور از هم جدا شوند. پیش‌فرض: ‘ ‘
  • end=’پایان’: (اختیاری) مشخص می‌کند در انتها چه چیزی چاپ شود. پیش‌فرض: ‘\n’
  • file: (اختیاری) یک شیء با متد write. پیش‌فرض: sys.stdout
  • flush: (اختیاری) یک بولین، مشخص می‌کند خروجی پاک‌سازی شود (True) یا در حافظه نگهداری شود (False). پیش‌فرض: False

نوع بازگشت دستور:

  • خروجی را به صفحه نمایش برمی‌گرداند.

 

گرچه لازم نیست آرگومان‌ها را در تابع ()print وارد کنید، اما نیاز به یک پرانتز خالی در انتها دارید که این پرانتز به پایتون می‌گوید تابع را اجرا کند، نه اینکه نام آن فراخوانی شود. اکنون، بیایید آرگومان‌های اختیاری را که می‌توان با تابع ()print استفاده کرد را، بررسی کنیم.

مثال:

در این مثال، ما سه متغیر integer، string و float ایجاد کرده‌ایم و تمام متغیرها را با تابع ()print در پایتون چاپ می‌کنیم.

name = "John"
age = 30
height = 1.78
print("Name:", name)
print("Age:", age)
print("Height:", height)

 خروجی:

Name: John
Age: 30 
Height: 1.78

 

چگونگی کارکرد تابع ()print در پایتون

شما می‌توانید متغیرها، رشته‌ها، اعداد یا انواع داده‌های دیگر را به عنوان یک یا چند پارامتر هنگام استفاده از این تابع، وارد آن کنید. سپس، این پارامترها به وسیله توابع ()str مربوطه به عنوان رشته‌ها نمایش داده می‌شوند. برای ایجاد یک رشته خروجی واحد، رشته‌های تبدیل شده با فاصله‌های بین آن‌ها به هم پیوسته می‌شوند.

در این کد، ما دو پارامتر name و age را به طور همزمان وارد تابع print می‌کنیم.

name = "Alice"
age = 25

print("Hello, my name is", name, "and I am", age, "years old.")

 خروجی:

Hello, my name is Alice and I am 25 years old.

 

رشته‌های حرفی (راهنما) در پایتون

رشته‌های حرفی در دستور print پایتون عمدتاً برای فرمت‌بندی یا طراحی نحوه نمایش یک رشته خاص هنگام چاپ با استفاده از تابع ()print به کار می‌روند.

  • n\: این رشته حرفی برای افزودن یک خط خالی جدید هنگام چاپ یک عبارت استفاده می‌شود.
  • “”: یک نقل قول خالی (“”) برای چاپ یک خط خالی استفاده می‌شود.

مثال:

این کد از n\ برای چاپ داده‌ها در خط جدید استفاده می‌کند.

print("Datayad \n is the best for DSA Content.")

 خروجی:

Datayad
is the best for DSA Content.

 

  کلیدواژه‌های پایتون - بخش دوم

پارامتر “end” در تابع ()print پایتون

کلمه کلیدی end برای مشخص کردن محتوایی که قرار است در انتهای اجرای تابع ()print چاپ شود، استفاده می‌شود. به صورت پیش‌فرض، روی “n\” تنظیم شده است که باعث رفتن به خط بعد پس از اجرای دستور ()print می‌شود.

مثال

در این مثال، ما از تابع ()print با پارامتر end و بدون پارامتر end استفاده می‌کنیم.

# This line will automatically add a new line before the
# next print statement
print ("Datayad is the best platform for DSA content")

# This print() function ends with "**" as set in the end argument.
print ("Datayad is the best platform for DSA content", end= "**")
print("Welcome to DTY")

 خروجی:

Datayad is the best platform for DSA content
Datayad is the best platform for DSA content**Welcome to DTY

 

مثال:

در اینجا، می‌توانیم یک عبارت چاپ را با هر کاراکتر یا رشته‌ای با استفاده از این پارامتر به پایان برسانیم.

# ends the output with a space
print("Welcome to", end = ' ')
print("datayad", end= ' ')

 خروجی:

Welcome to datayad

 

 

مثال:

یک برنامه دیگر برای نمایش عملکرد پارامتر end.

# ends the output with '@'
print("Python", end='@')
print("datayad")

 خروجی:

Python@datayad

 

مثال:

تابع ()print از پارامتر sep برای جداسازی آرگومان‌ها استفاده می‌کند و بعد از آخرین آرگومان به پایان می‌رسد.

print('D','T', sep='', end='')
print('Y')
#\n provides new line after printing the year
print('09','12','2023', sep='-', end='\n')

print('Red','Green','Blue', sep=',', end='@')
print('datayad')

 خروجی:

DTY
09-12-2023
Red,Green,Blue@datayad

 

استفاده از end برای اتصال رشته‌ها

در این مثال، ما از پارامتر end برای اتصال دو عبارت چاپ به یک خط خروجی تکی استفاده می‌کنیم. پارامتر end برای اولین عبارت چاپ به یک کاراکتر فاصله (” “) تنظیم شده است، بنابراین عبارت چاپ دوم بر روی همان خط آغاز می‌شود و عبارات توسط یک کاراکتر فاصله از یکدیگر جدا می‌شوند.

پارامتر end یک ویژگی مفید از تابع print در پایتون است که می‌توان از آن برای کنترل قالب‌بندی خروجی به روش‌های مختلف استفاده کرد.

name = "Alice"
age = 30
print("My name is", name, "and I am", age, "years old.", end=" ")
print("Nice to meet you!")

 خروجی:

My name is Alice and I am 30 years old. Nice to meet you!

چاپ رشته‌های ادغام شده

در این مثال، ما در درون تابع ()print در پایتون، رشته‌ها را به هم متصل می‌کنیم.

print('Datayad is a Wonderful ' + 'Website.')

 خروجی:

Datayad is a Wonderful Website.

 

فرمت‌بندی خروجی

در این مثال، ما خروجی خود را با استفاده از تابع ()str.format برای زیباتر نشان دادن آن فرمت‌بندی می‌کنیم.

a,b,=10,1000
print('The value of a is {} and b is {}'.format(a,b))

 خروجی:

The value of a is 10 and b is 1000

 

ورودی پایتون

در این مثال، ما از توابع print و input در پایتون برای گرفتن ورودی کاربر و چاپ آن در خروجی استفاده می‌کنیم.

n = input('Enter the Number: ')

print('Number Entered by User:',n)

print(type(n))

 خروجی:

Enter the Number: 20
Number Entered by User: 20
<class 'str'>

 

  گرفتن ورودی در پایتون و انواع حالات آن

پارامتر “flush” در تابع print پایتون

ورودی/خروجی‌ها در پایتون به طور کلی دارای بافر هستند، به این معنا که به صورت بلوکی استفاده می‌شوند. اینجاست که flush مورد استفاده قرار می‌گیرد، زیرا به کاربران کمک می‌کند تا تصمیم بگیرند آیا می‌خواهند محتوای نوشته شده بافر شود یا نه.

مقدار آن به طور پیش‌فرض، روی false تنظیم شده است.

اگر به آن true بدهیم، خروجی به صورت یک توالی از کاراکترها، یکی پس از دیگری نوشته خواهد شد. اما این فرآیند کند خواهد بود، زیرا نوشتن به صورت بلوکی به جای نوشتن یک کاراکتر در هر زمان، راحت‌تر است.

برای درک مورد استفاده از آرگومان flush در تابع ()print، بیایید یک مثال را بررسی کنیم.

مثال:

تصور کنید که شما در حال ساخت یک تایمر شمارش معکوس هستید که زمان باقی‌مانده را هر ثانیه به همان خط اضافه می‌کند. ظاهر آن مانند زیر خواهد بود:

۳>>>۲>>>۱>>>start

کد اولیه برای این مثال به شکل زیر خواهد بود:

import time

count_seconds = 3
for i in reversed(range(count_seconds + 1)):
	if i > 0:
		print(i, end='>>>')
		time.sleep(1)
	else:
		print('Start')

پس، کد بالا متن را بدون خط جدید در پایان اضافه می‌کند و سپس بعد از هر بار افزودن متن، یک ثانیه مکث می‌کند. در انتهای شمارش معکوس، “Start” چاپ شده و خط به پایان می‌رسد.

اگر کد را همینطور که هست اجرا کنید، برنامه ابتدا ۳ ثانیه صبر می‌کند و بعد تمام متن را یکجا نشان می‌دهد. این به خاطر بافر شدن متن است و ۳ ثانیه تلف می‌شود. برای دیدن خروجی به تصویر زیر مراجعه کنید.

چاپ درپایتون

 

گرچه بافر کردن مفید است، اما گاهی اثرات ناخواسته‌ای می‌تواند داشته باشد، مانند مثال بالا. برای حل این مشکل، از آرگومان flush در تابع print استفاده می‌کنیم. حالا آرگومان flush را true کنید و نتایج را دوباره ببینید.

import time

count_seconds = 3
for i in reversed(range(count_seconds + 1)):
	if i > 0:
		print(i, end='>>>', flush = True)
		time.sleep(1)
	else:
		print('Start')

 خروجی:

چاپ در پایتون بدون بافر

 

 

پارامتر “sep” در تابع ()print پایتون

جداکننده بین آرگومان‌ها در تابع print در پایتون به طور پیش‌فرض فاصله (softspace feature) است، که می‌توان آن را تغییر داد و به هر کاراکتر، عدد یا رشته‌ای به دلخواه ما تبدیل کرد. پارامتر ‘sep’ برای دستیابی به همین هدف استفاده می‌شود و تنها در پایتون 3 و نسخه‌های جدیدتر آن وجود دارد. این پارامتر همچنین برای قالب‌بندی رشته‌های خروجی نیز استفاده می‌شود.

 

تابع print می‌تواند هر تعداد آرگومان‌های موقعیتی را بپذیرد. برای جدا کردن این آرگومان‌های موقعیتی، آرگومان کلیدی “sep” استفاده می‌شود.

توجه: چون sep، end، flush و file آرگومان‌های کلیدی هستند، موقعیت آن‌ها نتیجه کد را تغییر نمی‌دهد.

مثال:

این کد نشان می‌دهد که چگونه می‌توانیم از آرگومان sep برای چندین متغیر استفاده کنیم.

a=12
b=12
c=2022
print(a,b,c,sep="-")

 خروجی:

12-12-2022

 

مثال:

آرگومان‌های موقعیتی نمی‌توانند بعد از آرگومان‌های کلیدی ظاهر شوند. در مثال زیر، ۱۰، ۲۰ و ۳۰ آرگومان‌های موقعیتی هستند، در حالی که sep=’ – ‘ یک آرگومان کلیدی است.

print(10, 20, sep=' - ', 30)

 خروجی:

  File "0b97e8c5-bacf-4e89-9ea3-c5510b916cdb.py", line 1
    print(10, 20, sep=' - ', 30)
                            ^
SyntaxError: positional argument follows keyword argument

 

  بررسی دقیق مجموعه‌ ها در پایتون

مثال:

در این کد، از تابع print برای چاپ رشته‌ها با جداکننده‌های مختلف استفاده می‌شود. در مثال اول، کاما به عنوان جداکننده استفاده می‌شود، در مثال دوم، نقطه و کاما استفاده می‌شود و در مثال سوم، علامت سوال استفاده می‌شود.

# using a comma separator 
print('apples', 'oranges', 'bananas', sep=', ') 
# output: apples, oranges, bananas 

# using a semicolon separator 
print('one', 'two', 'three', sep=';') 
# output: one;two;three 

# using an emoji separator 
print('????', '????', '????', sep='????') 
# output: ???????????????????? 

خروجی:

apples, oranges, bananas
one;two;three
????????????????????

 

پارامتر “file” در تابع ()print پایتون

بر خلاف تصور رایج، تابع print پیام‌ها را به متن روی صفحه تبدیل نمی‌کند. این کار توسط لایه‌های پایین‌تر کد انجام می‌شود که می‌توانند داده‌ها (پیام) را به صورت بایت‌ها بخوانند. تابع print یک رابط بر روی این لایه‌ها است که چاپ واقعی را به یک جریان یا شیء شبیه‌فایل واگذار می‌کند. به طور پیش‌فرض، تابع print از طریق آرگومان file به sys.stdout متصل است.

 

با ماژول IO

این کد یک فایل ساختگی (موقت) را با استفاده از ماژول io در پایتون ایجاد می‌کند. سپس پیامی با مضمون “!!Hello Geeks” را با استفاده از تابع print به فایل اضافه می‌کند و پارامتر file را به عنوان فایل ساختگی مشخص می‌کند.

import io

# declare a dummy file
dummy_file = io.StringIO()

# add message to the dummy file
print('Hello Geeks!!', file=dummy_file)

# get the value from dummy file
print(dummy_file.getvalue())

 خروجی:

Hello Geeks!!

 

نوشتن در یک فایل با تابع ()print پایتون

این کد داده‌های موجود در تابع ()print را در یک فایل متنی می‌نویسد.

print('Welcome to datayad Python world', file=open('Testfile.txt', 'w'))

 در این حالت چیزی در خروجی چاپ نمی‌شود، بلکه عبارت نوشته شده در یک فایل متنی نوشته می‌شود. رجوع به تصویر زیر.

چاپ در فایل با پایتون

 

توجه:

لطفاً کد زیر را اجرا کنید، و نتیجه آن را ببینید. اجرای آن یک سایت جالب را به شما نشان می‌دهد.

#import the below module and see what happens 
import antigravity 
#NOTE - it wont work on online ide 

 

نکته پایانی

پیچیدگی زمانی:

پیچیدگی زمانی تابع print با O(n) نمایش داده می‌شود، که در آن n تعداد کل کاراکترهایی است که باید چاپ شوند. با این حال، پیچیدگی زمانی مشخص کردن جداکننده O(1) است، زیرا یک عملیات ثابت است.

پیچیدگی فضایی:

پیچیدگی فضایی کد نیز O(n) است، که در آن n تعداد کل کاراکترهایی است که باید چاپ شوند. این به این دلیل است که تابع print نیاز به تخصیص حافظه برای ذخیره رشته‌ها و جداکننده‌ها قبل از چاپ آن‌ها دارد.

در کل، کد دارای پیچیدگی زمانی ثابت برای مشخص کردن جداکننده و پیچیدگی زمانی و فضایی خطی برای چاپ رشته‌ها و جداکننده‌ها است.

Rating 3.50 from 4 votes

لیست دروس دوره

آموزش پیشنهادی و مکمل

اگر سوالی در مورد این درس دارید، در کادر زیر بنویسید.

guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
سبد خرید

دوره جامع متخصص علم داده و یادگیری ماشین

برای دیدن نوشته هایی که دنبال آن هستید تایپ کنید.
×