فرمتبندی رشته در پایتون
قالببندی رشته با f-string، متد format() و قالببندی اعداد
چرا فرمتبندی رشته؟
اغلب میخواهید متغیرها را داخل یک رشته قرار دهید. پایتون چند روش برای این کار ارائه میدهد.
روش ۱: f-string (بهترین روش!)
f-string (معرفی در پایتون ۳.۶) مدرنترین و سادهترین روش است. کافیست قبل از رشته حرف f بگذارید و متغیرها را داخل { } قرار دهید:
name = "علی"
age = 25
# f-string
print(f"اسم من {name} است و {age} سال دارم.")
# اسم من علی است و ۲۵ سال دارم.
عبارات داخل f-string
میتوانید محاسبات هم انجام دهید:
x = 10
y = 3
print(f"{x} + {y} = {x + y}") # 10 + 3 = 13
print(f"{x} × {y} = {x * y}") # 10 × 3 = 30
فرمتبندی اعداد
pi = 3.14159265
print(f"عدد پی: {pi:.2f}") # 3.14 (۲ رقم اعشار)
print(f"عدد پی: {pi:.4f}") # 3.1416 (۴ رقم اعشار)
# جداکننده هزارگان
big_number = 1000000
print(f"{big_number:,}") # 1,000,000
# درصد
ratio = 0.85
print(f"{ratio:.0%}") # 85%
ترازبندی
# عرض ثابت
print(f"{'نام':<15} {'سن':>5}")
print(f"{'علی':<15} {25:>5}")
print(f"{'مریم':<15} {30:>5}")
روش ۲: متد format()
قبل از f-string، از متد format() استفاده میشد:
name = "علی"
age = 25
# با موقعیت
print("اسم {} و {} سال دارم.".format(name, age))
# با شماره موقعیت
print("{0} {1} {0}".format("سلام", "دنیا")) # سلام دنیا سلام
# با نام
print("اسم {n} و سن {a}.".format(n=name, a=age))
روش ۳: الحاق ساده (+)
name = "علی"
age = 25
print("اسم " + name + " و " + str(age) + " سال دارم.")
با
+ باید اعداد را با str() به رشته تبدیل کنید، وگرنه خطا میدهد. به همین دلیل f-string بهتر است.روش ۴: عملگر % (قدیمی)
این روش از زبان C آمده و کمتر توصیه میشود:
name = "علی"
age = 25
print("اسم %s و %d سال دارم." % (name, age))
مقایسه روشها
| روش | خوانایی | سرعت | توصیه |
|---|---|---|---|
| f-string | ⭐⭐⭐⭐⭐ | سریعترین | ✅ بهترین |
| format() | ⭐⭐⭐ | متوسط | قبلی |
| + الحاق | ⭐⭐ | کند | ❌ نه |
| % عملگر | ⭐⭐ | کند | ❌ قدیمی |
فرمتبندی پیشرفته با f-string
اعشار ثابت
price = 99.5678
print(f"قیمت: {price:.2f} تومان") # قیمت: 99.57 تومان
عرض و پر کردن
# پر کردن با صفر
num = 42
print(f"{num:05d}") # 00042
# عرض ثابت
print(f"{num:10d}") # 42 (راستچین)
print(f"{num:<10d}") # 42 (چپچین)
print(f"{num:^10d}") # 42 (وسطچین)
اعداد علمی
big = 123456789
print(f"{big:e}") # 1.234568e+08
اعداد باینری، هگز
n = 255
print(f"باینری: {n:b}") # 11111111
print(f"هگز: {n:x}") # ff
print(f"اوکتال: {n:o}") # 377
چند مثال کاربردی
جدول قالببندیشده
students = [("علی", 18.5), ("مریم", 19.2), ("حسن", 17.8)]
print(f"{'نام':<10} {'میانگین':>10}")
print("-" * 22)
for name, avg in students:
print(f"{name:<10} {avg:>10.2f}")
نمایش قیمت
items = [("کتاب", 150000), ("مداد", 12000), ("دفتر", 45000)]
for name, price in items:
print(f"{name}: {price:>10,} تومان")
debug با f-string (پایتون ۳.۸+)
با اضافه کردن = بعد از متغیر، نام و مقدار هر دو چاپ میشوند:
x = 42
name = "علی"
print(f"{x=}, {name=}") # x=42, name='علی'
خلاصه
- f-string بهترین روش فرمتبندی است:
f"متن {متغیر}" - برای اعشار:
{x:.2f} - برای هزارگان:
{x:,} - برای عرض:
{x:10} - برای درصد:
{x:.0%}
این مبحث بخشی از دوره آموزش کامل پایتون است.