آموزش پایتون, پایتون مقدماتی

دریافت اطلاعات از کاربر با تابع input در پایتون

دریافت اطلاعات از کاربر با تابع input در پایتون

🗓 آخرین به‌روزرسانی:

بیشتر برنامه‌های واقعی فقط اطلاعات نمایش نمی‌دهند؛ بلکه از کاربر سؤال می‌پرسند و براساس پاسخ او کار می‌کنند. تابع input() در پایتون ساده‌ترین راه برای دریافت متن از صفحه‌کلید است. با کمک آن می‌توان نام، سن، قیمت، تعداد کالا یا هر اطلاعات دیگری را از کاربر دریافت و داخل یک متغیر ذخیره کرد.

این مطلب، درس ششم از دوره رایگان آموزش پایتون از صفر است. در درس قبلی با انواع داده‌هایی مانند str، int، float و bool آشنا شدیم. اکنون یاد می‌گیریم چگونه داده را از کاربر دریافت و در صورت نیاز به نوع مناسب تبدیل کنیم.

تابع input در پایتون چیست؟

تابع input() اجرای برنامه را موقتاً متوقف می‌کند، منتظر می‌ماند کاربر چیزی تایپ کند و پس از زدن کلید Enter، مقدار واردشده را برمی‌گرداند.

name = input("نام شما چیست؟ ")
print("سلام", name)

نمونه اجرا:

نام شما چیست؟ مهران
سلام مهران

متن داخل پرانتز، پیام راهنما یا prompt است. بهتر است این پیام روشن و دقیق باشد تا کاربر بداند چه اطلاعاتی باید وارد کند.

مقدار input کجا ذخیره می‌شود؟

تابع input() یک مقدار برمی‌گرداند. برای استفاده بعدی، آن را داخل یک متغیر قرار می‌دهیم:

city = input("نام شهر خود را وارد کنید: ")
print("شهر انتخاب‌شده:", city)

اگر کاربر عبارت «استانبول» را وارد کند، همان متن داخل متغیر city ذخیره می‌شود.

خروجی input همیشه رشته متنی است

مهم‌ترین نکته درباره input() این است که نتیجه آن همیشه از نوع str است؛ حتی اگر کاربر فقط عدد وارد کند.

age = input("سن خود را وارد کنید: ")

print(age)
print(type(age))

اگر کاربر عدد 30 را وارد کند، خروجی نوع داده چنین خواهد بود:

<class 'str'>

یعنی مقدار ذخیره‌شده، متن "30" است و هنوز یک عدد صحیح محسوب نمی‌شود.

چرا جمع ورودی‌های عددی نتیجه اشتباه می‌دهد؟

کد زیر را بررسی کنید:

first_number = input("عدد اول: ")
second_number = input("عدد دوم: ")

print(first_number + second_number)

اگر کاربر عددهای 10 و 5 را وارد کند، خروجی به‌جای 15 برابر خواهد بود با:

105

علت این است که هر دو مقدار رشته هستند و عملگر + رشته‌ها را به هم متصل می‌کند. برای انجام محاسبه باید ورودی‌ها را به عدد تبدیل کنیم.

تبدیل ورودی به عدد صحیح با int

برای دریافت عدد صحیح، نتیجه input() را داخل تابع int() قرار می‌دهیم:

age = int(input("سن خود را وارد کنید: "))

print(age)
print(type(age))

اکنون مقدار age از نوع int است و می‌توان روی آن محاسبه انجام داد.

birth_year = 1995
current_year = 2026
age = current_year - birth_year

print("سن تقریبی:", age)

جمع دو عدد واردشده توسط کاربر

first_number = int(input("عدد اول را وارد کنید: "))
second_number = int(input("عدد دوم را وارد کنید: "))

result = first_number + second_number
print("حاصل جمع:", result)

نمونه اجرا:

عدد اول را وارد کنید: 10
عدد دوم را وارد کنید: 5
حاصل جمع: 15

تبدیل ورودی به عدد اعشاری با float

اگر ورودی ممکن است بخش اعشاری داشته باشد، از float() استفاده کنید:

height = float(input("قد خود را بر حسب متر وارد کنید: "))
print("قد ثبت‌شده:", height)

ورودی‌هایی مانند 1.75 یا 49.99 با float() قابل تبدیل هستند.

محاسبه قیمت سفارش

price = float(input("قیمت هر محصول: "))
quantity = int(input("تعداد محصول: "))

total_price = price * quantity
print("مبلغ کل:", total_price)

در این مثال، قیمت می‌تواند اعشاری باشد؛ اما تعداد کالا باید عدد صحیح باشد.

دریافت چند ورودی متنی

می‌توان چند بار از input() استفاده کرد و اطلاعات مختلف را در متغیرهای جداگانه ذخیره کرد:

first_name = input("نام: ")
last_name = input("نام خانوادگی: ")
city = input("شهر: ")

print("نام کامل:", first_name, last_name)
print("شهر:", city)

برای خروجی خواناتر می‌توان از f-string استفاده کرد:

print(f"{first_name} {last_name} در شهر {city} زندگی می‌کند.")

حذف فاصله‌های اضافی با strip

کاربر ممکن است پیش یا پس از متن چند فاصله ناخواسته وارد کند. متد strip() این فاصله‌ها را حذف می‌کند:

name = input("نام خود را وارد کنید: ").strip()
print(f"سلام {name}")

برای ورودی‌های متنی مانند نام، ایمیل، شهر و نام کاربری، استفاده از strip() معمولاً مفید است.

تبدیل حروف ورودی با lower و upper

گاهی لازم است شکل نوشتاری ورودی را یکدست کنیم. برای نمونه، پاسخ کاربر را به حروف کوچک تبدیل کنیم:

answer = input("آیا ادامه می‌دهید؟ yes/no: ").strip().lower()
print(answer)

اگر کاربر YES، Yes یا yes وارد کند، مقدار نهایی همواره yes خواهد بود.

متدهای رایج:

  • lower(): تبدیل حروف انگلیسی به کوچک
  • upper(): تبدیل حروف انگلیسی به بزرگ
  • title(): بزرگ‌کردن حرف اول کلمات انگلیسی
  • strip(): حذف فاصله ابتدا و انتهای متن

ورودی خالی چیست؟

اگر کاربر بدون تایپ چیزی Enter بزند، نتیجه input() یک رشته خالی است:

name = input("نام: ")
print(len(name))

در صورت ورودی خالی، مقدار len(name) برابر صفر است. می‌توان این وضعیت را بررسی کرد:

name = input("نام: ").strip()

if name == "":
    print("نام وارد نشده است.")
else:
    print("سلام", name)

ساختار if را در درس شرط‌ها کامل یاد می‌گیریم. فعلاً کافی است بدانید این کد بررسی می‌کند آیا متن خالی است یا خیر.

خطای ValueError هنگام تبدیل ورودی

اگر کاربر متنی وارد کند که قابل تبدیل به عدد نباشد، پایتون خطای ValueError ایجاد می‌کند:

age = int(input("سن: "))

اگر ورودی بیست یا abc باشد، تبدیل با int() ممکن نیست.

ValueError: invalid literal for int()

در برنامه‌های واقعی باید ورودی کاربر اعتبارسنجی شود. مدیریت حرفه‌ای این خطا با try و except انجام می‌شود که در درس مدیریت خطا بررسی خواهد شد.

نمونه ساده مدیریت خطا

try:
    age = int(input("سن خود را وارد کنید: "))
    print("سن ثبت شد:", age)
except ValueError:
    print("لطفاً سن را فقط به‌صورت عدد وارد کنید.")

اگر ورودی معتبر باشد، عدد نمایش داده می‌شود؛ در غیر این صورت، برنامه به‌جای توقف ناگهانی یک پیام مناسب نشان می‌دهد.

تفاوت int و float در تبدیل ورودی

تابع int() رشته‌ای مانند "25" را تبدیل می‌کند؛ اما رشته "25.5" را مستقیم نمی‌پذیرد:

number = int("25")      # معتبر
number = int("25.5")    # خطا

برای عدد اعشاری از float() استفاده کنید:

number = float("25.5")

اگر مطمئن نیستید ورودی اعشاری است یا صحیح، استفاده از float() انعطاف بیشتری دارد.

دریافت مقدار بولی از کاربر

نباید پاسخ متنی کاربر را مستقیماً با bool(input()) تبدیل کنیم؛ زیرا تقریباً هر رشته غیرخالی، حتی "False"، به True تبدیل می‌شود.

value = bool(input("True یا False: "))
print(value)

روش بهتر این است که متن را بررسی کنیم:

answer = input("آیا دانشجو هستید؟ بله/خیر: ").strip().lower()
is_student = answer == "بله"

print(is_student)

اگر کاربر «بله» وارد کند، مقدار is_student برابر True می‌شود؛ در غیر این صورت مقدار آن False خواهد بود.

دریافت دو مقدار در یک خط با split

در برخی برنامه‌ها می‌توان از کاربر خواست چند مقدار را در یک خط و با فاصله وارد کند:

first_name, last_name = input("نام و نام خانوادگی: ").split()

print("نام:", first_name)
print("نام خانوادگی:", last_name)

اگر کاربر بیش از دو کلمه یا کمتر از دو کلمه وارد کند، این کد خطا می‌دهد. بنابراین برای مبتدیان، دریافت جداگانه مقادیر معمولاً مطمئن‌تر است.

دریافت دو عدد در یک خط

first, second = input("دو عدد با فاصله وارد کنید: ").split()

first = int(first)
second = int(second)

print("جمع:", first + second)

نسخه کوتاه‌تر با map():

first, second = map(int, input("دو عدد: ").split())
print("جمع:", first + second)

روش map() را در مباحث بعدی دقیق‌تر بررسی خواهیم کرد.

نمایش پیام مناسب برای input

پیام ورودی باید دقیق باشد. این پیام ضعیف است:

value = input("وارد کنید: ")

نسخه بهتر:

age = int(input("سن خود را به عدد وارد کنید: "))

در ورودی‌های عددی، مشخص‌کردن واحد نیز مهم است:

weight = float(input("وزن خود را بر حسب کیلوگرم وارد کنید: "))

پروژه عملی: ساخت ماشین‌حساب سن

در این پروژه، نام و سال تولد کاربر را دریافت می‌کنیم و سن تقریبی او را محاسبه می‌کنیم:

current_year = 2026

name = input("نام خود را وارد کنید: ").strip()
birth_year = int(input("سال تولد میلادی خود را وارد کنید: "))

age = current_year - birth_year

print("--------------------")
print(f"نام: {name}")
print(f"سن تقریبی: {age} سال")

نمونه خروجی:

نام خود را وارد کنید: مهران
سال تولد میلادی خود را وارد کنید: 1990
--------------------
نام: مهران
سن تقریبی: 36 سال

این محاسبه تقریبی است؛ زیرا ماه و روز تولد را بررسی نمی‌کند.

پروژه عملی دوم: محاسبه مبلغ سفارش

product_name = input("نام محصول: ").strip()
unit_price = float(input("قیمت هر واحد: "))
quantity = int(input("تعداد: "))

total_price = unit_price * quantity

print("--------------------")
print(f"محصول: {product_name}")
print(f"تعداد: {quantity}")
print(f"مبلغ کل: {total_price}")

این پروژه ترکیبی از input()، متغیرها، تبدیل نوع، محاسبه و f-string است.

اشتباهات رایج هنگام استفاده از input

۱. فراموش‌کردن تبدیل ورودی عددی

age = input("سن: ")
print(age + 1)  # خطا

راه درست:

age = int(input("سن: "))
print(age + 1)

۲. استفاده از int برای عدد اعشاری

price = int(input("قیمت: "))

اگر کاربر 19.5 وارد کند، خطا رخ می‌دهد. برای چنین مقداری از float() استفاده کنید.

۳. پیام ورودی نامشخص

کاربر باید بداند چه نوع مقدار و با چه واحدی وارد کند. پیام‌های دقیق تعداد خطاها را کاهش می‌دهند.

۴. اعتماد کامل به ورودی کاربر

کاربر ممکن است ورودی خالی، متن به‌جای عدد یا عدد خارج از محدوده وارد کند. برنامه‌های حرفه‌ای همیشه ورودی‌ها را بررسی می‌کنند.

۵. تبدیل مستقیم پاسخ بله و خیر با bool

bool("خیر") نیز True است؛ زیرا رشته خالی نیست. برای پاسخ‌های بله و خیر، متن را مقایسه کنید.

تمرین‌های درس input

تمرین اول

نام و رشته تحصیلی کاربر را دریافت کنید و یک پیام معرفی کامل نمایش دهید.

تمرین دوم

طول و عرض یک مستطیل را به‌صورت اعشاری دریافت کنید و مساحت آن را نمایش دهید.

تمرین سوم

سه نمره را از کاربر دریافت کنید و میانگین آن‌ها را محاسبه کنید.

تمرین چهارم

قیمت محصول و درصد تخفیف را دریافت کنید و مبلغ نهایی را محاسبه کنید.

تمرین پنجم

دمای سانتی‌گراد را دریافت و با فرمول زیر به فارنهایت تبدیل کنید:

fahrenheit = celsius * 9 / 5 + 32

نمونه پاسخ تمرین میانگین

score_1 = float(input("نمره اول: "))
score_2 = float(input("نمره دوم: "))
score_3 = float(input("نمره سوم: "))

average = (score_1 + score_2 + score_3) / 3

print(f"میانگین نمرات: {average}")

📌 همچنین بخوانید: بازار کار پایتون در ایران، نصب و تنظیم پایتون در VS Code و برنامه‌نویسی پایتون با گوشی

پرسش‌های متداول

آیا input همیشه رشته برمی‌گرداند؟

بله. خروجی input() همیشه str است و برای محاسبات عددی باید آن را با int() یا float() تبدیل کنید.

چرا جمع دو ورودی 10 و 5 برابر 105 می‌شود؟

زیرا ورودی‌ها رشته هستند و عملگر + آن‌ها را به هم متصل می‌کند. پیش از جمع، هر دو مقدار را به عدد تبدیل کنید.

تفاوت int(input()) و float(input()) چیست؟

int(input()) برای عدد صحیح و float(input()) برای عدد اعشاری مناسب است.

چگونه ورودی خالی را تشخیص دهیم؟

پس از اجرای strip() بررسی کنید مقدار برابر رشته خالی "" است یا خیر.

چگونه جلوی توقف برنامه با ورودی اشتباه را بگیریم؟

از ساختار try و except برای مدیریت خطاهای تبدیل استفاده کنید.

جمع‌بندی

در این درس یاد گرفتیم تابع input() چگونه اطلاعات را از کاربر دریافت می‌کند و چرا خروجی آن همیشه رشته است. همچنین تبدیل ورودی با int() و float()، پاک‌سازی متن با strip()، یکدست‌کردن حروف، دریافت چند مقدار، مدیریت ابتدایی ValueError و ساخت برنامه‌های تعاملی ساده را تمرین کردیم.

در درس بعدی با عملگرهای ریاضی و مقایسه‌ای در پایتون آشنا می‌شویم و یاد می‌گیریم چگونه محاسبه و مقایسه را در برنامه‌ها انجام دهیم.


← درس قبلی: انواع داده در پایتون

درس بعدی: عملگرهای ریاضی و مقایسه‌ای در پایتون — در حال آماده‌سازی

مشاهده فهرست کامل دوره آموزش پایتون از صفر

ادامه مسیر یادگیری پایتون

برای یادگیری منظم، آموزش‌های مرتبط زیر را به‌ترتیب دنبال کنید:

می‌خواهی پیشرفتت ذخیره شود؟با ورود یا ثبت‌نام رایگان، درس‌های تمام‌شده را علامت بزن و درصد پیشرفتت را در حساب کاربری ببین.ورود / ثبت‌نام برای ذخیره پیشرفت
درس بعدی · دوره رایگان پایتون (مقدماتی) (7 از 16)عملگرهای ریاضی و مقایسه‌ای در پایتون؛ آموزش کامل برای مبتدیان ←
آموزش‌های تازه، کد آماده و رفع خطاهر هفته در کانال Dev Source؛ رایگان.
🧭 مسیر یادگیری پایتون از صفر
ماژول 2: متغیرها، داده‌ها و ورودی — درس 7 از 44

برای ذخیره پیشرفت در همه دستگاه‌ها و دریافت گواهی پایان مسیر، رایگان ثبت‌نام کن یا وارد شو.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *