Table of Contents
چرا باید متن و متغیر را ترکیب کنیم؟
خیلی از برنامهها باید پیامی برای کاربر نشان بدهند که هم متن ثابت دارد، هم اطلاعاتی که از متغیرها میآید. مثلا:
- «سلام علی! امروز ۳۵ ساله شدی.»
- «جمع دو عدد ۴ و ۷ برابر است با ۱۱»
در این بخش یاد میگیرید چطور متن (str) را با مقادیر متغیرها (عدد، متن و …) ترکیب کنید تا خروجیهای خوانا و مرتب بسازید.
در این فصل روشهای رایج زیر را میبینیم:
- استفاده از
+برای چسباندن رشتهها - تبدیل نوع با
str()هنگام ترکیب با اعداد - استفاده از
f-string(روش پیشنهادی در پایتونهای جدید) - استفاده از
format()به شکل مقدماتی - استفاده از
sepوendدر تابعprint()برای کنترل فاصله و پایان خط
چسباندن رشتهها با عملگر `+`
اگر چند تکه متن داشته باشیم، میتوانیم آنها را با + به هم بچسبانیم:
name = "علی"
message = "سلام " + name + "!"
print(message)خروجی:
سلام علی!
اینجا هر سه بخش یک «رشته» (str) هستند:
"سلام "name"!"
به همین دلیل + بدون مشکل کار میکند.
اگر بخواهیم از این روش بیشتر استفاده کنیم:
first_name = "مینا"
last_name = "رحیمی"
full_name = first_name + " " + last_name
print("نام کامل:", full_name)مشکل ترکیب رشته با عدد و راهحل آن
اگر تلاش کنید رشته و عدد را مستقیم با + ترکیب کنید، خطا میگیرید:
age = 20
text = "سن شما " + age + " است."
این کد خطای TypeError میدهد، چون:
"سن شما "و" است."رشته هستندageعدد صحیح (int) است
و پایتون نمیتواند مستقیماًstrوintرا با+جمع کند.
تبدیل عدد به رشته با `str()`
برای حل این مشکل باید عدد را تبدیل به رشته کنیم:
age = 20
text = "سن شما " + str(age) + " است."
print(text)خروجی:
سن شما 20 است.چند مثال دیگر:
a = 4
b = 7
result = a + b
message = "جمع " + str(a) + " و " + str(b) + " برابر است با " + str(result)
print(message)f-string: روش ساده و خوانا برای ترکیب متن و متغیرها
از پایتون 3.6 به بعد، f-string یکی از بهترین و راحتترین روشهاست.
شکل کلی f-string
- قبل از رشته حرف
fمیگذاریم. - داخل
{}نام متغیر یا عبارت مینویسیم.
name = "سارا"
age = 25
message = f"سلام {name}! سن شما {age} سال است."
print(message)خروجی:
سلام سارا! سن شما 25 سال است.مزایا:
- لازم نیست
str()بنویسید؛ خودش مقدار را به رشته تبدیل میکند. - کد خواناتر میشود.
استفاده از عبارتها داخل f-string
فقط نام متغیرها را نمیتوان گذاشت؛ میتوانیم محاسبه هم انجام دهیم:
a = 4
b = 7
print(f"{a} به علاوهٔ {b} میشود {a + b}")خروجی:
4 به علاوهٔ 7 میشود 11مثال دیگر:
price = 12000
tax = 0.09
print(f"قیمت نهایی: {price * (1 + tax)} تومان")ترکیب متن فارسی و f-string
first_name = "حمید"
last_name = "کاظمی"
age = 30
print(f"نام: {first_name} {last_name} - سن: {age}")متد `format()` به شکل مقدماتی
روش دیگری برای ترکیب متن و متغیرها، استفاده از متد format() روی رشتههاست.
جاینگهدار `{}`
در متن، هر جا {} بگذارید، مقادیر متغیرها به همان ترتیب جایگزین میشوند:
name = "لیلا"
age = 28
message = "سلام {}! شما {} ساله هستید.".format(name, age)
print(message)خروجی:
سلام لیلا! شما 28 ساله هستید.مشخص کردن ترتیب با شماره
میتوانید شمارهٔ داخل {} بگذارید:
a = 5
b = 3
text = "a = {0}, b = {1}, جمع = {2}".format(a, b, a + b)
print(text)استفادهٔ ساده از `print()` برای ترکیب متن و متغیرها
بدون f-string و بدون +، خود تابع print() میتواند چند چیز را با هم چاپ کند.
جدا کردن با ویرگول
اگر در print() چند چیز را با ویرگول بنویسید، پایتون بینشان یک فاصله میگذارد:
name = "رضا"
age = 22
print("نام:", name, "- سن:", age)خروجی:
نام: رضا - سن: 22
اینجا نیازی نیست خودتان " " اضافه کنید؛ print() خودش بین هر دو قسمت یک فاصله میگذارد.
تنظیم فاصلهها با `sep` در `print()`
آرگومان sep مشخص میکند بین آیتمهای داخل print() چه چیزی قرار بگیرد (به طور پیشفرض یک فاصله است).
print("سلام", "دنیا")
print("سلام", "دنیا", sep="-")
print("سلام", "دنیا", sep="***")خروجی:
سلام دنیا
سلام-دنیا
سلام***دنیامثال کاربردی:
year = 2025
month = 1
day = 5
print(year, month, day, sep="-") # 2025-1-5کنترل پایان خط با `end` در `print()`
به طور پیشفرض، print() در انتهای متن یک کاراکتر خط جدید (\n) میگذارد و از خط بعدی ادامه میدهد.
با آرگومان end میتوانید این رفتار را عوض کنید.
print("اولین بخش", end=" - ")
print("دومین بخش")خروجی:
اولین بخش - دومین بخشمثال:
for i in range(1, 6):
print(i, end=" ")
# خروجی: 1 2 3 4 5 چند تمرین پیشنهادی
برای تمرین ترکیب متن و متغیرها (بدون حل):
- برنامهای بنویسید که نام و سن کاربر را بگیرد و این متن را با f-string چاپ کند:
سلام [نام]! شما [سن] سال دارید. - دو عدد از کاربر بگیرید و عبارتی مثل این چاپ کنید:
جمع 4 و 7 برابر است با 11
(میتوانید یکیبار با+وstr()و یکبار با f-string انجام دهید.) - از کاربر نام، نام خانوادگی و شهر محل سکونت بگیرید و در یک خط اینطور چاپ کنید:
نام کامل: ... - شهر: ...
با استفاده ازprint()و ویرگول و تنظیمsep. - با استفاده از حلقه (بعداً کامل یاد میگیرید)، اعداد ۱ تا ۵ را در یک خط با فاصله چاپ کنید (با
end=" ").
در ادامهٔ فصلها، از این مهارت برای ساخت خروجیهای خوانا و برنامههای تعاملیتر استفاده میکنیم.