ورودی و خروجی
در این درس ورودی از کاربر با input میگیرید، آن را به عدد تبدیل میکنید و خروجی را با f-string و قالببندی دقیق اعداد شکل میدهید.
آنچه در این درس میآموزید
- با تابع input ورودی از کاربر بگیرید
- ورودی رشتهای را قبل از محاسبه به عدد تبدیل کنید
- خروجی را با f-string و قالببندی اعداد شکل دهید
فهرست مطالب
تا اینجا برنامههای شما یکطرفه حرف میزدند: دادهها از قبل داخل کد بودند و فقط خروجی میدیدید. برنامه واقعی با کاربر حرف میزند؛ ورودی میگیرد و خروجی را طوری شکل میدهد که خواننده راحت بفهمد. این درس این دو طرف ماجرا را کامل میکند.
گرفتن ورودی با input
تابع input برنامه را متوقف میکند، منتظر تایپ کاربر میماند و هر چه تایپ شد را به برنامه میدهد. متن داخل پرانتز، پیام راهنما (prompt) است که پیش از توقف چاپ میشود:
name = input("Your name: ")
print(f"Hello {name}!")Your name: Sara Hello Sara!
در این خروجی، بخش بعد از «نام شما: » را خود کاربر تایپ کرده است؛ برنامه فقط رشته تایپشده را در name ذخیره کرده و در جمله خوشآمد استفاده کرده است.
ورودی همیشه رشته است
مهمترین نکته این درس همین است: input هر چه کاربر تایپ کند، بدون استثنا به شکل رشته (str) برمیگرداند؛ حتی اگر کاربر فقط رقم تایپ کرده باشد:
a = input("First number: ") # user types 5
b = input("Second number: ") # user types 3
print(a + b)First number: 5 Second number: 3 53
جواب ۸ نیست؛ ۵۳ است. چون دو رشته داریم و + روی رشتهها یعنی چسباندن. این رفتار خطا هم نمیدهد و همین خطرناکترش میکند: برنامه درست به نظر میرسد ولی نتیجه غلط است.
تبدیل ورودی به عدد
راهحل همان تبدیل نوعی است که در درس انواع داده یاد گرفتید؛ int یا float را دور input بپیچید:
birth_year = int(input("Birth year: "))
age = 2026 - birth_year
print(f"About {age} years")Birth year: 1991 About 35 years
ترتیب اجرا از داخل به بیرون است: اول input رشته ورودی را میگیرد، بعد int آن را به عدد تبدیل میکند و فقط بعد از آن مقدار وارد محاسبه میشود.
قالببندی خروجی با f-string
f-string را در درسهای قبل دیدید؛ اما دو قابلیت قالببندی دارد که خروجی را از «درست» به «حرفهای» میرساند. جداکننده هزارگان با :, و محدود کردن اعشار با :.2f:
product = "pen"
price = 12500
count = 4
print(f"{product}: {price * count:,} toman")pen: 50,000 toman
دو نقطه بعد از نام متغیر یعنی «از این به بعد دستور قالببندی میآید». نمونه دوم با اعداد اعشاری:
pi = 3.14159
print(f"{pi:.2f}")
print(f"{pi:.4f}")3.14 3.1416
:.2f یعنی با دو رقم اعشار و :.4f با چهار رقم؛ در هر دو حالت گرد کردن انجام میشود. این قالبها بهخصوص وقتی مهم میشوند که نتیجه محاسبهای مثل 16.375000000000004 بیرون بیاید و خواننده فقط «۱۶٫۳۸» را لازم داشته باشد.
تمرینها
تمرین
تمرین ۱ — فاکتور فروشگاه
دو متغیر price = 900000 و count = 7 تعریف کنید و جمع کل را با جداکننده هزارگان در جملهای به شکل «جمع: 6,300,000 تومان» چاپ کنید.
# Write your code hereنمایش راهحل
price = 900000
count = 7
print(f"Total: {price * count:,} toman")Total: 6,300,000 toman
::: :::
تمرین
تمرین ۲ — ورودی واقعی
برنامهای بنویسید که دو عدد از کاربر بگیرد (ورودی را با float به عدد تبدیل کند) و جمع آنها را با یک رقم اعشار چاپ کند.
# Write your code hereنمایش راهحل
a = float(input("First number: "))
b = float(input("Second number: "))
print(f"Sum: {a + b:.1f}")First number: 2.5 Second number: 4 Sum: 6.5
::: :::
خلاصه
inputبرنامه را متوقف میکند، ورودی کاربر را میخواند و همیشه رشته برمیگرداند.- ورودی عددی را با
int(input(...))یاfloat(input(...))تبدیل کنید؛ وگرنه+بهجای جمع، چسباندن میکند. - در f-string، دو نقطه بعد از متغیر قالببندی را شروع میکند.
:,جداکننده هزارگان میگذارد و:.2fعدد اعشاری را دو رقمی و گرد میکند.
برنامه شما حالا ورودی میگیرد و خروجی تمیز میدهد؛ اما هنوز همیشه یک مسیر واحد را میرود. در درس بعدی با شرطها به برنامهتان قدرت تصمیمگیری میدهیم.