مقدمه

اکثر برنامه‌ها به تعامل با کاربر نیاز دارند و بنابراین، باید بتوانند از کاربر ورودی دریافت کنند و پردازش‌های لازم را روی آن انجام دهند. در پایتون، یک تابع بسیار مفید با نام input() داریم که این کار را انجام می‌دهد. در این درس، نحوه‌ی استفاده از این تابع را خواهیم دید و در درس بعد، با معرفی حلقه‌ی تکرار while خواهیم دید که چطور می‌توانیم با استفاده‌ی ترکیبی از حلقه‌ها و تابع input() میزان تعامل‌پذیری برنامه را افزایش دهیم.

تابع input()

تابع input() برای دریافت ورودی از کاربر کاربرد دارد. این تابع، ورودی را دریافت کرده و آن را به صورت یک رشته برمی‌گرداند.

Copy Icon input_function.py
print("Hello everybody!")

name = input("Your name is: ")
print(f"Hello {name}")

وقتی برنامه به تابع input() می‌رسد، متوقف می‌شود و منتظر می‌ماند تا کاربر عبارتی را وارد کند و کلید Enter را فشار دهد. در مثال بالا، ورودی کاربر در متغیری به نام name ذخیره می‌شود. در ضمن، آرگومانی که به تابع input() می‌دهیم، قبل از توقف برنامه، نمایش داده می‌شود. بنابراین، این آرگومان باید یک مقدار متنی مناسب باشد که از کاربر درخواست ورودی می‌کند.

اگر بخواهیم ووردی کاربر در یک خط جدید وارد شود، می‌توانیم مانند زیر از کاراکتر گریز \n استفاده کنیم.

Copy Icon input_function.py
print("Hello everybody!")

name = input("Ehat's your name?\n")
print(f"Hello {name}")

تبدیل نوع ورودی

گفتیم که مقداری که به عنوان ورودی از کاربر دریافت می‌شود، از نوع str در نظر گرفته می‌شود؛ حتی اگر کاربر یک مقدار عددی وارد کند. مثال زیر را ببینید.

Copy Icon input_function.py
print("Hello everybody!")

age = input("Please enter your age: ")
print(f"You're {age} years old.")

در اینجا از کاربر خواسته شده تا سنش را وارد کند و سپس، مقدار ورودی در متغیری به نام age ذخیره شده است. متغیر age فارغ از اینکه چه مقداری دریافت کند، از نوع str خواهد بود. این موضوع برای این مثال مشکلی به بار نمی‌آورد؛ چون مقدار متغیر age فقط چاپ شده است. اما حالا به کد زیر نگاه کنید.

Copy Icon input_function.py
age = input("Please enter your age: ")

if age >= 18: 
  print("Yes, you can access the cpntent.") 
else: 
  print("No, you can't access the content.")

این بار ما از ورودی کاربر به عنوان یک مقدار عددی استفاده کرده‌ایم و بنابراین، با اجرای این کد و وارد کردن یک عدد به عنوان سن، پیغام خطای زیر را دریافت خواهیم کرد.

TypeError: '>=' not supported between instances of 'str' and 'int'

این پیغام خطا می‌گوید که عملگر >= نمی‌تواند یک مقدار str را با یک مقدار int مقایسه کند. پس، ورودی کاربر در هر صورت، از نوع str فرض می‌شود. مشکل مثال بالا را می‌توانیم با یک تبدیل نوع صریح حل کنیم. این تبدیل نوع را می‌توانیم مانند زیر در زمان مقایسه انجام دهیم.

Copy Icon input_function.py
age = input("Please enter your age: ")

if int(age) >= 18: 
  print("Yes, you can access the cpntent.") 
else: 
  print("No, you can't access the content.")

و یا مانند زیر تبدیل را در زمان دریافت ورودی انجام دهیم.

Copy Icon input_function.py
age = int(input("Please enter your age: "))

if age >= 18: 
  print("Yes, you can access the cpntent.") 
else: 
  print("No, you can't access the content.")

در اینجا هر دو روشی که برای تبدیل استفاده کردیم، مشکل را حل می‌کند اما متوجه تفاوت این دو روش باشید. در روش اول، متغیر age فقط برای مقایسه به یک int تبدیل شده و همچنان دارای مقدار str است اما در روش دوم، متغیر age به محض دریافت مقدار به int تبدیل می‌شود و در ادامه، دارای نوع int خواهد بود.