تابع input()
تابع input() برای دریافت ورودی از کاربر کاربرد دارد.
این تابع، ورودی را دریافت کرده و آن را به صورت یک رشته برمیگرداند.
input_function.py
print("Hello everybody!")
name = input("Your name is: ")
print(f"Hello {name}")
وقتی برنامه به تابع input() میرسد، متوقف میشود و منتظر میماند
تا کاربر عبارتی را وارد کند و کلید Enter را فشار دهد. در مثال بالا، ورودی کاربر در
متغیری به نام name ذخیره میشود.
در ضمن، آرگومانی که به تابع input() میدهیم، قبل از توقف برنامه،
نمایش داده میشود. بنابراین، این آرگومان باید یک مقدار متنی مناسب باشد
که از کاربر درخواست ورودی میکند.
اگر بخواهیم ووردی کاربر در یک خط جدید وارد شود، میتوانیم مانند زیر از
کاراکتر گریز \n استفاده کنیم.
input_function.py
print("Hello everybody!")
name = input("Ehat's your name?\n")
print(f"Hello {name}")
تبدیل نوع ورودی
گفتیم که مقداری که به عنوان ورودی از کاربر دریافت میشود، از نوع str در
نظر گرفته میشود؛ حتی اگر کاربر یک مقدار عددی وارد کند. مثال زیر را ببینید.
input_function.py
print("Hello everybody!")
age = input("Please enter your age: ")
print(f"You're {age} years old.")
در اینجا از کاربر خواسته شده تا سنش را وارد کند و سپس، مقدار ورودی در
متغیری به نام age ذخیره شده است. متغیر age فارغ از اینکه چه
مقداری دریافت کند، از نوع str خواهد بود. این موضوع برای این مثال مشکلی
به بار نمیآورد؛ چون مقدار متغیر age فقط چاپ شده است.
اما حالا به کد زیر نگاه کنید.
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 فرض میشود. مشکل مثال بالا را میتوانیم با یک تبدیل نوع صریح حل کنیم.
این تبدیل نوع را میتوانیم مانند زیر در زمان مقایسه انجام دهیم.
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.")
و یا مانند زیر تبدیل را در زمان دریافت ورودی انجام دهیم.
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 خواهد بود.