قالب بندی خروجی در پایتون:
در مقالهی قبل از مجموعه آموزشهای مقدماتی پایتون در خصوص دستورات ورودی و خروجی در پایتون توضیح داده شد. اما، به عنوان یک برنامه نویس لحظات زیادی برای شما پیش خواهد آمد که میخواهید دادههای حاصل از پردازش برنامهتان را در خروجی چاپ کنید. لازم به ذکر است که نمایش دادهها همیشه در صفحه نمایش نیست بلکه میتواند یک فایل، چاپگر یا صفحهی وب باشد. صرفنظر از نوع خروجی آنچه برای برنامه نویسان اهمیت خواهد داشت نمایشی خوانا و کاربر پسند (human-readable) از دادههای پردازش شده است. در این مقاله با امکانات زبان برنامه نویسی پایتون برای نمایش دادهها به شکلی خوانا و و کاربر پسند آشنا خواهید شد.
فهرست محتوای این مقاله
قالب بندی خروجی در تابع ()print در پایتون
برنامه نویسان نیاز دارند بر روی چاپ دادههای خروجی مدیریت و کنترل داشته باشند. در قالب بندی خروجی دادهها روشهای زیر وجود دارد:
- بهکارگیری از اپراتور پیمانهای رشته ٪: این اپراتور همراه با کاراکترهای مشخصی به عنوان یک نگهدارنده برای نمایش دادهها در خروجی در داخل علامت کوتیشن قرار داده میشود.
- بهکارگیری ()str.format: با استفاده از این روش میتوان خروجی بسیار کاربر پسند ایجاد کرد.
- بهکارگیری متدهای رشتهای: در پایتون برای برش زدن و یا اتصال رشته، اپراتورهایی وجود دارد که توسط آنها میتوان خروجی کاربر پسند را ایجاد کرد. این اپراتورها padding یک رشته را تغییر میدهند تا در ستونها با فواصل مختلف قرار گیرند.
- بهکارگیری f-string: رشته-اف یک نحو جدیدی است که در سادهسازی قالب بندی رشتهها نقش مهمی دارد.
قالب بندی خروجی در پایتون با اپراتور پیمانهای رشته %
از اپراتور پیمانهای رشته % میتوان برای قالب بندی خروجی استفاده کرد. برخلاف سایر زبانهای برنامه نویسی مانند ++C، C و جاوا که برای چاپ دادهها در خروجی از تابع ()printf برای طرح بندی خروجی استفاده میشود، در پایتون از اپراتور پیمانهای % استفاده میشود. وقتی از این اپراتور استفاده میشود کلاس رشته در پایتون به منظور قالب بندی داده در خروجی بارگذاری میشود، تا داده به شکلی مناسب و مطابق دستور برنامهنویس در خروجی نمایش داده شود. به همین دلیل است که به کاراکتر % در پایتون اپراتور پیمانهای رشته ( string modulo operator ) میگویند. با فراخوانی این اپراتور میتوان طرح مناسبی را برای دادهها در خروجی در نظر گرفت.
برای آشنایی و درک بهکارگیری این اپراتور به مثال زیر توجه کنید:
# Python program showing how to use
# string modulo operator(%) to print
# fancier output
# print integer and float value
print("7learn: % 2d, Portal : % 5.2f" %(1, 05.333))
# print integer value
print("Total students : % 3d, Boys : % 2d" %(2400, 1200))
# print octal value
print("% 7.3o"% (25))
# print exponential value
print("% 10.3E"% (356.08977))
7learn : 1, Portal : 5.33
Total students : 2400, Boys : 1200
031
3.561E+02

نگهدارندهی طرح رشته
%[flags][width][.precision]type
شرح اجزای نگهدارندهی طرح رشته
- flags: نگهدارندهی قالب علامت یک عدد است.
- width: نگهدارندهی طول کامل عددی شامل علامت، بخش صحیح و بخش اعشاری عددی است که باید در خروجی چاپ شود.
- precision: نگهدارندهی بخش اعشاری عددی است که قرار است در خروجی چاپ شود. توجه کنید این بخش از طول کامل کم میشود.
- type: نگهدارندهی نوع عددی است که باید در خروجی چاپ شود. برای مثال برای اعداد اعشاری f و برای اعداد صحیح d و برای رشتهی s قرار میگیرد.
توصیف نگهدارندهی رشته با مثال
در مثال بالا دو عدد ۱ و ۰۵.۳۳ در تاپل (tuple) قرار گرفته است. این اعداد به ترتیب در نگهدراندهی قالب قرار میگیرند. عدد ۱ در نگهدارندهی قالب 2d% و عدد ۰۵.۳۳ در نگهدارندهی قالب 5.2f% قرار میگیرد.
- نگهدارندهی قالب عدد ۱ دارای طولی به اندازهی ۲ کاراکتر است و بخش اعشاری ندارد و نوع آن عدد صحیح است. بدیهی است که چون طول نگهدارندهی قالب از تعداد کاراکتر عدد بیشتر است و در نتیجه عدد یک در منتهیالیه سمت راست نگهدارنده قرار گرفته و به اندازهی یک کاراکتر سمت چپ آن خالی میماند. چنانچه طول نگهدارندهی قالب کمتر از تعداد کاراکترهای عدد باشد پایتون به طور اتوماتیک طول نگهدارنده را افزایش میدهد.
- نگهدارندهی قالب عدد ۰۵.۳۳ دارای طول ۵، بخش اعشاری ۲ و نوع آن اعشاری است. عدد ۰۵.۳۳ در مجموع شامل ۵ کاراکتر است. بنابراین بخش اعشاری شامل دو کاراکتر ۳۳، یک کاراکتر برای نقطه اعشار و یک کاراکتر هم برای عدد ۵ یعنی بخش صحیح عدد اختصاص داده میشود.
قالب بندی خروجی در پایتون با بهکارگیری روش format
در پایتون متدی به نام ()format وجود دارد. این متد در پایتون ۲.۶ به بعد اضافه شده است. با بهکارگیری این متد و استفاده از کروشه باز و بسته { } در ساختار رشته میتوان مقادیر متغیر را در مکانهای مورد نظر در رشته قرار داد. با بهکارگیری این متد میتوان قالب بندی خروجی را بر اساس موقعیتهایی که توسط کروشهها تعیین میشود در رشتهی خروجی نمایش داد. به مثال زیر توجه کنید:
# Python program showing
# use of format() method
# using format() method
print('I love {} for "{}!"'.format('7learn', 'applied education'))
# using format() method and refering
# a position of the object
print('{0} and {1}'.format('7learn', 'Portal'))
print('{1} and {0}'.format('7learn', 'Portal'))
I love 7learn for "applied education!"
7learn and Portal
Portal and 7learn
# Python program showing
# a use of format() method
# combining positional and keyword arguments
print('Number one portal is {0}, {1}, and {other}.'
.format('7learn', 'For', other ='https://7learn.ac'))
# using format() method with number
print("Geeks :{0:2d}, Portal :{1:8.2f}".
format(12, 00.546))
# Changing positional argument
print("Second argument: {1:3d}, first one: {0:7.2f}".
format(47.42, 11))
print("7learn: {a:5d}, Portal: {p:8.2f}".
format(a = 453, p = 59.058))
Number one portal is 7learn, For, and htps://7learn.ac.
7learn :12, Portal : 0.55
Second argument: 11, first one: 47.42
7learn: 453, Portal: 59.06

# Python program to
# show format () is
# used in dictionary
tab = {'7learn': 4127, 'for': 4098, '7learn.ac': 8637678}
# using format() in dictionary
print('7learn: {0[7learn]:d}; For: {0[for]:d}; '
'7learn: {0[7learn.ac]:d}'.format(tab))
data = dict(fun ="7learn", adj ="Portal")
# using format() in dictionary
print("I love {fun} computer {adj}".format(**data))
7learn: 4127; For: 4098; 7learn: 8637678
I love 7learn computer Portal
قالب بندی خروجی در پایتون با بهکارگیری متد string
# Python program to
# format a output using
# string() method
cstr = "I love 7learn.ac"
# Printing the center aligned
# string with fillchr
print("Center aligned string with fillchr: ")
print(cstr.center(40, '#'))
# Printing the left aligned
# string with "-" padding
print("The left aligned string is : ")
print(cstr.ljust(40, '-'))
# Printing the right aligned string
# with "-" padding
print("The right aligned string is : ")
print(cstr.rjust(40, '-'))
Center aligned string with fillchr:
############I love 7learn.ac############
The left aligned string is :
I love 7learn.ac------------------------
The right aligned string is :
------------------------I love 7learn.ac
قالب بندی خروجی در پایتون با بهکارگیری f-string
f'{price:.3}'
عبارات در رشته-اف
#!/usr/bin/env python3
bags = 3
apples_in_bag = 12
print(f'There are total of {bags * apples_in_bag} apples')
tag = 'skills'
print(f"{val} is a portal for {tag}.")
name = 'Loghman'
age = 30
print(f"Hello, My name is {name} and I'm {age} years old.")
7learn is a portal for skills.
Hello, My name is Loghman and I'm 30 years old.
رشته-اف چند خطی در پایتون
name = 'John Doe'
age = 32
occupation = 'gardener'
msg = (
f'Name: {name}\n'
f'Age: {age}\n'
f'Occupation: {occupation}'
)
print(msg)
Name: John Doe
Age: 32
Occupation: gardener
رشته-اف قالب بندی dattime
# Prints today's date with help
# of datetime library
import datetime
today = datetime.datetime.today()
print(f"{today:%B %d, %Y}")
رشته-اف نسبت به دو روش str.format و ٪ به لحاظ مکانیزم اجرا، سریعتر است.
استاد ملهم عزیز ، مثل تدریس دوران دانشگاه عالی بود مطلب . فقط خدایی امتحان فیزیک ۱ رو تکرار نکنید 😂