چاپ اعداد در پایتون با استایل دلخواه + ویدیو | آموزش کامل f-string و روشهای فرمتدهی عدد

وقتی میخواهیم گزارش بسازیم، لاگ بنویسیم، خروجی قابلخواندن برای کاربر چاپ کنیم یا حتی یک فاکتور ساده تولید کنیم، معمولاً مسئله اصلی «چاپ اعداد در پایتون» است نه صرفاً چاپ یک عدد خام. عددها باید با اعشار مشخص، گرد شده، همتراز، دارای جداکننده هزارگان یا حتی به شکل درصد و پول نمایش داده شوند. در پروژههای واقعی (مثل اسکریپتهای اتوماسیون، ابزارهای کوچک حسابداری، یا گزارشگیری از API) اگر فرمتدهی را درست انجام ندهیم، خروجی هم غیرحرفهای میشود و هم احتمال خطا بالا میرود. در این درس، قدمبهقدم از قالببندی ساده تا حرفهای با f-string و format جلو میرویم تا دقیقاً بدانید هر جا چه روشی مناسبتر است.
چاپ اعداد اعشاری در رشته پایتون
برای درک نحوه چاپ اعداد در پایتون کافیست ویدیو زیر را مشاهده فرمایید، در ضمن تمرین های متنوعی نیز در پایین ویدیو همراه با راه حل و کد ها برای شما عزیزام قرار دادم.
فصل ۱) نیت جستجو، ذهنیت درست و جایگاه فرمتدهی در مسیر یادگیری پایتون
در این موضوع، نیت کاربر معمولاً حل یک مشکل کاملاً عملی است: «چطور عدد را در پایتون دقیقاً همانطور که میخواهم نمایش بدهم؟» یعنی چاپ/نمایش عدد با قالب دلخواه (اعشار، گرد کردن، جداکننده هزارگان، درصد، پول، همترازسازی و…). سطح این درس از مبتدی تا متوسط است و جایگاه آن در مسیر یادگیری معمولاً بعد از یادگیری typeها، رشتهها (string)، تابع print و عملگرهاست.
در پروژهها، f-string رایجترین و تمیزترین روش برای فرمتدهی خروجی است. در کنار آن، format() هم همچنان برای سازگاری یا برخی موارد خاص کاربرد دارد و روش قدیمی درصدی (% style) را هم ممکن است در کدهای قدیمیتر ببینید.
فصل ۲) اصول پایه چاپ عدد و قرار دادن عدد داخل رشته
پایهایترین کار، چاپ مقدار عددی با print است؛ اما وقتی پای ساختن یک پیام خوانا وسط باشد، صرفاً چاپ خام عدد کافی نیست. اینجا دو نکته مهم داریم: یکی تبدیل نوع (مثلاً تبدیل عدد به رشته) و دیگری «قالببندی» (formatting) برای کنترل شکل نمایش.
تفاوت مهم: str() فقط عدد را به رشته تبدیل میکند، اما قالببندی به شما اجازه میدهد شکل نمایش را کنترل کنید (مثل تعداد اعشار، جداکننده هزارگان، عرض ستون، صفرهای پیشرو و…). یک خطای رایج هم این است که بخواهیم با + رشته و عدد را بچسبانیم؛ پایتون چنین کاری را بین str و int/float مجاز نمیداند. راه درست، استفاده از f-string یا format() (و در برخی کدهای قدیمی، روش درصدی) است.
فصل ۳) f-string در پایتون: syntax، specifierها و مثالهای کاربردی
f-string در پایتون به شما اجازه میدهد متغیر را مستقیم داخل رشته قرار دهید و با specifierها دقیقاً تعیین کنید عدد چگونه نمایش داده شود. مواردی که معمولاً در خروجیهای واقعی نیاز دارید شامل کنترل تعداد اعشار، گرد کردن در نمایش، جداکننده هزارگان، نمایش درصد، نمایش علمی برای اعداد خیلی بزرگ/کوچک، صفرپُر کردن، و تعیین width و align برای خروجیهای جدولی است.
با f-string میتوانید برای floatها از قالبهایی مثل :.2f استفاده کنید تا نمایش عدد به ۲ رقم اعشار محدود شود. برای جداکننده هزارگان معمولاً از , استفاده میشود و برای ترکیب هزارگان و اعشار از :,.2f. برای درصد هم specifier درصد (.2%) عددی بین 0 و 1 را به درصد 0% تا 100% تبدیل میکند. برای گزارشهای کنسولی، width و همترازسازی (چپچین/راستچین) باعث میشود خروجی مرتب و حرفهای باشد. همچنین برای شناسهها و شمارهها، صفرهای پیشرو با قالبهایی مثل :05d (برای int) بسیار رایج است.
فصل ۴) روشهای دیگر: format() و printf-style (%) و چه زمانی سراغشان برویم
علاوه بر f-string، دو روش دیگر هم رایجاند: format() و روش درصدی (% style). format() هنوز هم معتبر است و در برخی کدها یا موقعیتها به کار میرود. روش درصدی معمولاً در کدهای قدیمیتر دیده میشود. از نظر خوانایی و نگهداری کد، معمولاً f-string انتخاب بهتری برای کدهای جدید است؛ اما آشنایی با format() و % کمک میکند کدهای موجود را بهتر بخوانید و در صورت نیاز همان سبک را ادامه دهید.
فصل ۵) تمرینهای پروژهای در رابطه با چاپ اعداد در پایتون، اشتباهات رایج، FAQ و جمعبندی
برای مسلط شدن روی «چاپ اعداد در پایتون»، تمرینهای پروژهای بهترین راه هستند؛ چون دقیقاً با نیازهایی مثل گزارشگیری، چاپ جدولی، درصد، پول و شمارهگذاری سروکار دارید. در ادامه، تمرینها با جواب کامل آمدهاند. همچنین چند اشتباه رایج را مرور میکنیم تا در پروژه واقعی به خطا نخورید.
Code Examples
# مثال 1: قرار دادن عدد در رشته پایتون با f-string
learnlimoo_users = 12840
print(f"تعداد کاربران LearnLimoo: {learnlimoo_users}")
# مثال 2: چاپ عدد با اعشار در پایتون (کنترل اعشار)
price = 199_900.0
vat_rate = 0.09
final_price = price * (1 + vat_rate)
print(f"قیمت نهایی با مالیات: {final_price:.2f}")
# مثال 3: جداکننده هزارگان + اعشار
revenue = 12567890.5
print(f"درآمد ماه: {revenue:,.2f} تومان")
# مثال 4: درصد
conversion_rate = 0.03456
print(f"نرخ تبدیل: {conversion_rate:.2%}")
# مثال 5: همترازسازی برای خروجی جدولی (CLI report)
items = [
("Python Course", 12_000_000),
("Django Module", 4_500_000),
("Interview Prep", 2_250_000),
]
print(f"{'محصول':<16} | {'قیمت(تومان)':>14}")
print("-" * 33)
for name, amount in items:
print(f"{name:<16} | {amount:>14,}")
# مثال 6: صفرهای پیشرو برای شماره سفارش
order_id = 73
print(f"شناسه سفارش: {order_id:05d}") # 00073
# مثال 7: مقایسه با format()
score = 18.66666
print("نمره: {:.1f}".format(score))
# مثال 8: مقایسه با روش درصدی (% style)
pi = 3.14159265
print("pi with 3 decimals: %.3f" % pi)
# مثال 9: نمایش علمی برای اعداد خیلی بزرگ/کوچک
small = 0.0000001234
big = 9876543210000
print(f"small: {small:.3e}")
print(f"big: {big:.3e}")
Practical Exercises
تمرین ۱ (مبتدی): گزارش قیمت با اعشار ثابت
صورت مسئله: یک متغیر به نام unit_price برابر 34500.0 و count برابر 3 بسازید. قیمت کل را حساب کنید و خروجی را طوری چاپ کنید که:
- عدد با جداکننده هزارگان نمایش داده شود
- دقیقاً 2 رقم اعشار داشته باشد
راهحل تمرین ۱
unit_price = 34500.0
count = 3
total = unit_price * count
print(f"قیمت کل: {total:,.2f} تومان")
تمرین ۲ (متوسط): جدول ساده سفارشها با همترازسازی
صورت مسئله: یک لیست از سفارشها بسازید که هر آیتم شامل (نام، مبلغ) باشد. سپس مثل یک گزارش کنسولی چاپ کنید که ستون نام چپچین و ستون مبلغ راستچین باشد و مبلغها جداکننده هزارگان داشته باشند.
راهحل تمرین ۲
orders = [
("LearnLimoo Starter", 990000),
("LearnLimoo Pro", 2590000),
("Mentorship", 7800000),
]
print(f"{'عنوان':<18} | {'مبلغ(تومان)':>14}")
print("-" * 36)
for title, amount in orders:
print(f"{title:<18} | {amount:>14,}")
تمرین ۳ (نیمهپروژه): محاسبه تخفیف و نمایش درصد
صورت مسئله: قیمت اصلی original و قیمت بعد از تخفیف discounted را دارید. درصد تخفیف را حساب کنید و چاپ کنید:
- درصد تخفیف با 1 رقم اعشار
- قیمتها با جداکننده هزارگان و بدون اعشار (عدد صحیح)
اعداد نمونه:
– original = 12_500_000
– discounted = 9_875_000
راهحل تمرین ۳
original = 12_500_000
discounted = 9_875_000
discount_rate = (original - discounted) / original
print(f"قیمت قبل: {original:,} تومان")
print(f"قیمت بعد: {discounted:,} تومان")
print(f"درصد تخفیف: {discount_rate:.1%}")
تمرین ۴ (چالشی): تولید کد فاکتور با شماره سریال صفرپُر
صورت مسئله: برای 8 فاکتور پشتسرهم، شماره فاکتور را از 1 تا 8 بسازید، اما به شکل 6 رقمی با صفرهای پیشرو چاپ کنید (مثلاً 000001). کنار آن مبلغ را با جداکننده هزارگان چاپ کنید.
راهحل تمرین ۴
amounts = [125000, 980000, 45000, 7600000, 310000, 1200000, 875000, 640000]
for i, amount in enumerate(amounts, start=1):
invoice_no = f"{i:06d}"
print(f"فاکتور {invoice_no} | مبلغ: {amount:,} تومان")
Common Mistakes
- چسباندن رشته و عدد با +: به جای “متن” + 12 از f-string یا str() استفاده کنید. بهترین حالت: f”…{n}…”.
- فراموش کردن نوع فرمت: برای float معمولاً از f استفاده کنید (مثل :.2f). برای int از d (مثل :05d).
- انتظار تغییر مقدار متغیر با :.2f: این فقط نمایش را گرد میکند. اگر مقدار گردشده لازم دارید از round() یا Decimal استفاده کنید.
- سردرگمی در درصد: specifier درصد (.2%) عدد 0 تا 1 را به 0% تا 100% تبدیل میکند. اگر عدد شما 34.5 است و منظورتان 34.5% است، باید قبلش تقسیم بر 100 کنید.
- مشکل دقت float در پول: برای محاسبات مالی حساس، به جای float از Decimal استفاده کنید؛ float برای نمایش خوب است اما برای جمعزدنهای طولانی ممکن است خطای اعشاری بدهد.
- جداکننده هزارگان برای عددهای اعشاری: اگر هم اعشار میخواهید هم جداکننده هزارگان، ترکیب درست معمولاً :,.2f است.
FAQ
- چطور در پایتون عدد را با ۲ رقم اعشار چاپ کنم؟برای چاپ عدد با ۲ رقم اعشار از قالب f-string به شکل {x:.2f} استفاده کنید. این کار مقدار را فقط برای نمایش گرد میکند و خود متغیر را تغییر نمیدهد.
- چطور عدد را با جداکننده هزارگان در پایتون نمایش بدهم؟برای جداکننده هزارگان در f-string از {n:,} استفاده کنید. اگر عدد اعشاری است و هم جداکننده و هم اعشار میخواهید از {x:,.2f} استفاده کنید.
- چرا وقتی عدد را با رشته جمع میکنم در پایتون خطا میگیرم؟چون پایتون اجازه نمیدهد str و int/float را با + به هم بچسبانید. باید عدد را با f-string داخل متن قرار دهید یا با str() به رشته تبدیل کنید.
- چطور درصد را در پایتون درست چاپ کنم؟اگر مقدار شما بین 0 و 1 است، با {rate:.2%} آن را درصدی چاپ کنید. اگر مقدار شما خودش 34.5 است و منظور 34.5% است، ابتدا بر 100 تقسیم کنید و بعد با % چاپ کنید.
- بهترین روش چاپ اعداد در پایتون برای کدهای جدید چیست؟برای کدهای جدید معمولاً f-string بهترین انتخاب است چون خوانایی و قابلیت فرمتدهی بالایی دارد. روش format() هم هنوز معتبر است، اما در اغلب سناریوهای روزمره f-string سریعتر و تمیزتر از نظر کدنویسی است.
وقتی در یک اسکریپت واقعی (مثل گزارشگیری فروش، ابزار مانیتورینگ سرور، یا خروجی گرفتن از نتایج یک مدل) عددها را چاپ میکنیم، «صرفاً print کردن» کافی نیست. چاپ اعداد در پایتون یعنی بتوانیم عدد را دقیقاً با همان استایلی که کاربر انتظار دارد نمایش بدهیم: تعداد اعشار مشخص، جداکننده هزارگان، درصد، همترازی ستونها، یا حتی پر کردن با صفر. این مهارت هم برای یادگیری پایهای پایتون ضروری است و هم در پروژههای روزمره (از اتوماسیون تا خروجی CLI) دائم به کار میآید. در این درس، قدمبهقدم از سادهترین حالت تا حرفهایترین تکنیکها (بهخصوص f-string در پایتون) را یاد میگیریم تا فرمت دهی عدد در پایتون برایتان تبدیل به یک ابزار قابل اتکا شود.
1) نیت جستجو و جایگاه موضوع در مسیر یادگیری پایتون
کسی که عبارت «چاپ اعداد در پایتون» را جستجو میکند، معمولاً یک نیاز عملی دارد: میخواهد خروجی عددی برنامهاش خوانا، استاندارد و قابل ارائه باشد. این نیاز میتواند از یک پروژه ساده (نمایش قیمت یا درصد) تا یک خروجی جدولی در گزارشگیری و ابزارهای خط فرمان باشد. سطح مهارت مورد انتظار اغلب مبتدی تا متوسط است؛ یعنی کاربر print و متغیرها را بلد است، اما در نمایش دقیق عددها (اعشار ثابت، هزارگان، درصد، همترازی و صفرهای ابتدا) به مشکل خورده یا میخواهد حرفهایتر خروجی بگیرد.
از نظر مسیر یادگیری پایتون، این مبحث درست بعد از آشنایی با نوع دادههای عددی (int و float) و رشتهها (str) قرار میگیرد. در پروژههای واقعی، «نمایش» عدد بهاندازه «محاسبه» آن مهم است؛ چون خروجی برای انسان خوانده میشود و باید قابل اعتماد و منظم باشد.
2) مدل ذهنی فرمتدهی: عدد → متن (String) با کنترل کامل
فرمتدهی عدد یعنی تبدیل یک عدد به متن (String) طبق یکسری قانونها: چند رقم اعشار نشان داده شود، جداکننده هزارگان داشته باشد یا نه، درصد باشد، علمی (scientific) نمایش داده شود، در یک عرض مشخص همتراز شود، یا با صفر پر شود. نکته مهم این است که فرمتدهی معمولاً «فقط نمایش» را تغییر میدهد و لزوماً مقدار محاسباتی را عوض نمیکند.
در پایتون چند روش رایج برای فرمتدهی وجود دارد: f-string بهعنوان روش مدرن و خوانا، متد format بهعنوان گزینه مکمل و رایج در کدهای قدیمیتر، و روش درصدی (%). در این درس تمرکز اصلی روی f-string است، اما آشنایی با format و حالت درصدی هم کمک میکند کدهای مختلف را راحتتر بخوانید و نگهداری کنید.
3) f-string و format برای فرمت دهی عدد در پایتون (از پایه تا کاربردی)
در عمل، نیازهای اصلی فرمتدهی عدد معمولاً شامل این موارد است: اعشار ثابت، جداکننده هزارگان، درصد، نمایش علمی (scientific)، گرد کردن در نمایش، padding (پر کردن با کاراکتر مثل صفر)، همترازی خروجی، و ساخت خروجی جدولی. در بخش بعدی، «کدهای نمونه واقعی» همین حالتها را یکجا و قابل اجرا ارائه میکند تا بتوانید مستقیم در پروژههای خودتان استفاده کنید.
4) مثالهای واقعی پروژهای + تمرینهای مرحلهای با پاسخ کامل
برای اینکه موضوع صرفاً تئوری نماند، این درس علاوه بر نمونهکدها، سه تمرین مرحلهای هم دارد: (1) چاپ مبلغ با جداکننده و 2 رقم اعشار، (2) ساخت فاکتور جدولی با محاسبه جمع کل، (3) گزارش درصد رشد با مدیریت حالت تقسیم بر صفر. برای هر تمرین راهحل کامل و کد اجرایی ارائه شده است.
5) اشتباهات رایج + FAQ کوتاه و بهینه برای AI Overview
در کار واقعی، چند خطای پرتکرار باعث خروجیهای اشتباه یا گیجکننده میشود: قاطی کردن round و فرمتدهی، انتظار جداکننده فارسی از ,، استفاده نادرست از specهای d و f، قالببندی نوع داده اشتباه (str بهجای عدد)، و تکیه بر float برای محاسبات مالی. در بخش «اشتباهات رایج» این موارد را دقیقتر مرور میکنیم و راه اصلاحشان را میگوییم. همچنین در FAQ، چند سوال پرتکرار جستجویی را کوتاه و کاربردی پاسخ دادهایم.
کدهای نمونه واقعی
کدهای این درس داخل این بخش آمدهاند و شامل: اعشار ثابت، جداکننده هزارگان، درصد، scientific، همترازی جدولی، و padding با صفر هستند. تمام مثالها با نامهای LearnLimoo/learnlimoo قابل اجرا و قابل کپی در پروژههای واقعیاند.
تمرینهای عملی
این درس شامل 3 تمرین مرحلهای است: (1) چاپ مبلغ با جداکننده و 2 رقم اعشار، (2) ساخت فاکتور جدولی با محاسبه جمع کل، (3) گزارش درصد رشد با مدیریت حالت تقسیم بر صفر. برای هر تمرین راهحل کامل و کد اجرایی ارائه شد.
اشتباهات رایج
- قاطی کردن round و فرمتدهی: round معمولاً به مقدار عدد مربوط میشود، اما فرمتدهی روی نمایش تمرکز دارد.
- انتظار جداکننده فارسی از ,: استفاده از , جداکننده هزارگان را به شکل انگلیسی نمایش میدهد.
- استفاده نادرست از specهای d و f: برای عدد صحیح از d و برای float از f استفاده کنید؛ اشتباه در اینها باعث خروجی یا خطای نامناسب میشود.
- قالببندی نوع داده اشتباه (str بهجای عدد): اگر داده شما رشته است اما انتظار عدد دارید، قبل از فرمتدهی باید نوع داده درست باشد.
- تکیه بر float برای محاسبات مالی: برای پول، Decimal گزینه امنتری است و سپس میتوانید خروجی را با :,.2f چاپ کنید.
سوالات رایج (FAQ)
چطور تعداد اعشار را موقع چاپ عدد در پایتون ثابت کنم؟
برای ثابت کردن تعداد اعشار در چاپ، از قالببندی float استفاده کنید. رایجترین راه این است که با f-string بنویسید {x:.2f} تا دقیقاً 2 رقم اعشار نمایش داده شود. این کار فقط نمایش را تغییر میدهد، نه مقدار محاسباتی را.
چطور عدد را با جداکننده هزارگان در پایتون چاپ کنم؟
برای جداکننده هزارگان از , در format spec استفاده کنید. مثلاً {x:,.0f} برای بدون اعشار و {x:,.2f} برای دو رقم اعشار مناسب است. این جداکننده بهصورت انگلیسی نمایش داده میشود.
چطور درصد را درست چاپ کنم وقتی عدد من 0.25 است؟
اگر عدد شما نسبت است (مثل 0.25)، با فرمت % آن را به درصد تبدیل و چاپ میکنید. مثلاً {x:.1%} عدد را در 100 ضرب میکند و با یک رقم اعشار بههمراه علامت درصد نشان میدهد.
چرا موقع چاپ اعداد در پایتون بعضی وقتها 0.30000000000004 میبینم؟
این اتفاق بهخاطر نمایش دقیقنبودن برخی اعداد در نوع float و نحوه ذخیرهسازی دودویی آن است. برای خروجی، میتوانید با قالببندی مثل {x:.2f} نمایش را کنترل کنید. اگر دقت مالی/حسابداری مهم است، از Decimal استفاده کنید.
چطور یک عدد را مثل شماره فاکتور با صفرهای اول چاپ کنم؟
برای صفرهای ابتدا از padding با 0 و spec عدد صحیح استفاده کنید. مثلاً {n:06d} عدد را در عرض 6 کاراکتر با صفرهای سمت چپ چاپ میکند.
n = 42
print(f"LearnLimoo Invoice: {n:06d}")
اگر خروجی برنامه برای کاربر یا حتی برای خودتان در گزارشگیری و دیباگ مهم است، «چاپ اعداد در پایتون» را باید فراتر از print ساده ببینید. با f-string میتوانید تعداد اعشار، جداکننده هزارگان، درصد، همترازسازی و صفرهای پیشرو را دقیق کنترل کنید و خروجیهای حرفهای بسازید؛ همان چیزی که در اسکریپتهای واقعی، ابزارهای کوچک و گزارشها مدام به کارتان میآید.
در نهایت پیشنهاد می کنم دوره جامع آموزش پایتون 3 لرن لیمو رو هم مشاهده بفرمایید.
جلسه قبل از این دوره نیز با عنوان توابع ریاضی پایتون: به توان رساندن (pow)، قدر مطلق (abs) و روند کردن (round) با مثال و تمرین بود که همراه با ویدیو و مثال و کد خدمتتون ارائه شد.