Table of Contents
چرا باید ورودی را به عدد تبدیل کنیم؟
تابع input() همیشه مقدار را به صورت رشته (str) برمیگرداند؛ حتی اگر کاربر عدد وارد کند.
اما برای انجام محاسبات (جمع، تفریق، مقایسهٔ عددی و …) به عدد واقعی (int یا float) نیاز داریم.
بنابراین باید ورودی را از رشته به عدد تبدیل کنیم.
نمونهٔ مشکل:
age = input("سن خود را وارد کنید: ")
print(age + 1) # این کد خطا میدهد
اینجا age یک رشته است و + 1 روی رشته معنی ندارد.
تابعهای اصلی برای تبدیل به عدد
تبدیل به عدد صحیح با `int()`
اگر ورودی یک عدد بدون اعشار باشد، میتوانیم از int() استفاده کنیم.
age_text = input("سن خود را وارد کنید: ")
age = int(age_text) # تبدیل رشته به عدد صحیح
print("سال بعد، سن شما میشود:", age + 1)
میتوانیم تبدیل را مستقیماً روی input() انجام دهیم:
age = int(input("سن خود را وارد کنید: "))
print("سال بعد، سن شما میشود:", age + 1)نکتهها:
int()فقط روی چیزهایی کار میکند که مثل عدد صحیح نوشته شده باشند، مثل"0","25","-7".- روی
"12.5"یا"سلام"خطا میدهد.
مثالهای معتبر برای int():
"10"→10"-3"→-3"0"→0
مثالهایی که خطا میدهند:
"10.5"" 8.2 ""سه"
تبدیل به عدد اعشاری با `float()`
اگر ورودی میتواند عدد اعشاری باشد، باید از float() استفاده کنیم.
height_text = input("قد خود را به متر وارد کنید (مثلاً 1.75): ")
height = float(height_text)
print("قد شما:", height, "متر است.")یا کوتاهتر:
height = float(input("قد خود را به متر وارد کنید: "))
print("قد شما:", height, "متر است.")
مثالهای معتبر برای float():
"10"→10.0"10.5"→10.5"-3.14"→-3.14" 2.5 "→2.5(فاصلهٔ اول و آخر معمولاً مشکلی ندارد)
اگر کاربر چیز غیرعددی بنویسد، مثل "سلام"، باز هم خطا رخ میدهد.
تفاوت `int` و `float` در تبدیل ورودی
int()فقط عدد صحیح میپذیرد، اعشار را قبول نمیکند.float()هم عدد صحیح و هم اعشاری را میپذیرد.
مثال:
x = int("5") # نتیجه: 5
y = float("5") # نتیجه: 5.0
z = float("5.25") # نتیجه: 5.25
اگر مطمئن هستید که ورودی همیشه یک عدد صحیح است (مثلاً سن، تعداد، تعداد کتابها)، از int() استفاده کنید.
اگر ورودی ممکن است اعشاری باشد (قد، وزن، دما، قیمت)، از float() استفاده کنید.
مثالهای کاربردی
جمع دو عدد ورودی
a = int(input("عدد اول را وارد کنید: "))
b = int(input("عدد دوم را وارد کنید: "))
result = a + b
print("جمع دو عدد:", result)اگر بخواهیم اعشاری باشند:
a = float(input("عدد اول را وارد کنید: "))
b = float(input("عدد دوم را وارد کنید: "))
result = a + b
print("جمع دو عدد:", result)محاسبهٔ میانگین سه نمره
score1 = float(input("نمرهٔ اول را وارد کنید: "))
score2 = float(input("نمرهٔ دوم را وارد کنید: "))
score3 = float(input("نمرهٔ سوم را وارد کنید: "))
average = (score1 + score2 + score3) / 3
print("میانگین نمرهها:", average)استفاده از تبدیل چندگانه در یک خط
میتوان ورودی را گرفته، تبدیل کرد و استفاده کرد؛ همه در یک خط:
age_next_year = int(input("سن خود را وارد کنید: ")) + 1
print("سال بعد، سن شما:", age_next_year)فضاهای خالی و تبدیل به عدد
تابعهای int() و float() معمولاً فضاهای خالی در ابتدا و انتهای رشته را نادیده میگیرند:
x = int(" 10 ") # نتیجه: 10
y = float(" 3.14 ") # نتیجه: 3.14اما اگر وسط عدد کاراکتر اضافهای باشد، خطا رخ میدهد:
int("10 سال") # خطا
float("3,14") # در پایتون پیشفرض خطا، چون از نقطه استفاده میشود نه ویرگولخطای تبدیل و نیاز به ورودی معتبر
اگر مقدار وارد شده قابل تبدیل به عدد نباشد، پایتون خطای ValueError میدهد.
در این فصل فقط بدانید:
- اگر کاربر به جای عدد، متن غیرعددی بدهد، تبدیل با
int()یاfloat()شکست میخورد. - برای برنامههای واقعی باید مطمئن شویم ورودی واقعاً عدد است (مثلاً با راهبردهایی که در فصل خطاها و اشکالزدایی با جزئیات بیشتر خواهید دید).
نمونهٔ خطای تبدیل:
age = int(input("سن خود را وارد کنید: ")) # اگر کاربر 'ده' بنویسد، خطا رخ میدهدترکیب تبدیل عدد و قالببندی خروجی
تبدیل ورودی به عدد اغلب همراه با قالببندی خروجی استفاده میشود تا نتیجه خواناتر باشد.
price = float(input("قیمت هر واحد کالا را وارد کنید: "))
count = int(input("تعداد کالا را وارد کنید: "))
total = price * count
print("مبلغ قابل پرداخت:", total, "تومان")در فصل مربوط به قالببندی خروجی، روشهای زیباتر چاپ اعداد (مثلاً با تعداد رقم اعشار مشخص) را خواهید دید؛ در اینجا تمرکز فقط روی تبدیل ورودی به عدد است.
جمعبندی
input()همیشه رشته برمیگرداند.- برای کار با اعداد باید از
int()یاfloat()استفاده کنیم. int()برای اعداد صحیح،float()برای اعداد اعشاری (و صحیح) است.- اگر ورودی قابل تبدیل به عدد نباشد، خطا ایجاد میشود.
- معمولاً تبدیل را مستقیم روی نتیجهٔ
input()انجام میدهیم، مثلint(input(...)).