گرفتن ورودی از کاربر در برنامههایی که مینویسیم میتواند به کاربرد بیشتر و بهبود عملکرد نرمافزار منتهی شود. این روزها در اکثر برنامهها نیاز داریم اطلاعات مختلفی را از کاربر دریافت کنیم. تقریباً در تمام زبانهای برنامه نویسی توابع و امکانات مختلفی برای گرفتن ورودی از کاربر در نظر گرفته شده است. گرفتن ورودی در پایتون از آنچه که فکر میکنید بسیار آسانتر است. در این مقاله به بررسی انواع استفاده input در پایتون میپردازیم.
تعامل با کاربر روز به روز مهمتر میشود. بسیاری از برنامههای پایتون که آنها را توسعه میدهیم نیازمند دریافت ورودی هستند. از آن جایی که ممکن است این برنامهها رابط کاربری نداشته باشند، بهتر است ورودیهای کاربر را در محیط اجرای برنامه (کنسول) دریافت کنیم.
در زبان برنامه نویسی پایتون یک تابع ساده برای گرفتن ورودی از کاربر در نظر گرفته شده. این تابع به صورت built-in
است. یعنی برای استفاده از آن نیاز به وارد کردن هیچ کتابخانه یا کد اضافی به برنامه نخواهید داشت.
در زبان پایتون به کمک تابع input()
میتوانیم ورودی مورد نظر را از کاربر دریافت کنیم.
در نسخه 2 پایتون، تابع raw_input()
برای دریافت ورودی از کاربر وجود داشت. در نسخه 3 این تابع حذف شده و input()
جایگزین آن شد. ویژگیها و عملکرد این دو تابع دقیقاً شبیه به هم هستند.
هنگامی که اجرای برنامه به تابع input()
میرسد، مفسر پایتون منتظر میماند تا کاربر ورودی مورد نظر خود را وارد کند. پس از آن برنامه به ادامه اجرای خود خواهد پرداخت.
پس از صدا زده شدن این تابع، کاربر میتواند کاراکترهای مورد نظر را در کنسول وارد کرده و با فشرده کلید Enter اتمام وارد کردن اطلاعات را اعلام کند.
خروجی این تابع یک رشته (String) است. این رشته دقیقا همان ورودی است که کاربر در برنامه وارد کرده است.
نوع خروجی تابع را نمیتوان تغییر داد. در ادامه روشهای برای تبدیل نوع داده ورودی تابع input در پایتون را بررسی خواهیم کرد.
ممکن است بخواهیم قبل قبل از دریافت ورودی از کاربر، پیغامی به کاربر نمایش دهیم.
ورودی تابع input یک رشته است. پایتون قبل از منتظر ماندن برای وارد کردن دادهها، رشته ورودی را در کنسول چاپ کرده و سپس منتظر دریافت ورودی میماند.
آرگومان ورودی این تابع دلخواه است. یعنی اگر هیچ پیامی برای چاپ به تابع ندهیم، تابع بدون مشکل اجرا خواهد شد.
همانطور که گفته شده خروجی تابع input()
همیشه یک رشته است.
فرض کنید میخواهیم در ابتدای یک برنامه اسم کاربر را پرسیده و به او سلام کنیم. قطعه کد زیر همین کار را انجام میدهد.
name = input("Please Enter Your name: ") print("Hello " + name + "!") |
پس از اجرای این برنامه، ابتدا پیغامی مبنی بر وارد کردن نام نمایش داده میشود. پس از وارد کردن اسم، پیام سلام چاپ خواهد شد.
متن زیر نمونهای از اجرای این برنامه است.
Please Enter Your name: Omid Hello Omid! |
اگر بخواهیم صرفاً یک عدد (int) در ورودی بگیریم، ورودی در پایتون (تابع input()
) به ما همیشه یک رشته (String) خواهد داد!
برای مثال اگر بخواهیم یک عدد را از کاربر گرفته و به توان برسانیم، قاعدتاً باید کدی مشابه کد زیر داشته باشیم.
num = input("Enter Number: ") print(num**2) |
اما با اجرای این برنامه خواهیم دید که پس از وارد کردن عدد، با خطایی مشابه خطای زیر مواجه خواهیم شد!
این خطا به این معنی است که عملگر توان برای عدد و رشته غیر قابل اجراست!
چون عددی که از ورودی گرفتیم به صورت رشته ذخیره شده به این خطا برمیخوریم!
برای رفع این مشکل، میتوانیم مقدار ورودی را به نوع دادهای مورد نظر خود تبدیل کنیم.
مثلاً اگر بخواهیم مقدار متغیر num
را به صورت عدد صحیح (Integer) داشته باشیم، میبایست از تابع int()
در پایتون کمک گرفت.
این تابع یک مقدار ورودی (رشتهی صرفاً حاوی عدد یا یک نوع عددی دیگر) را گرفته و یک عدد صحیح به ما بازمیگرداند.
مثلا اگر رشته '123'
داشته باشیم، با صدا زدن int('123')
عدد 123 را خواهیم داشت.
int('123') |
پس برنامه ما برای گرفتن عدد ورودی در پایتون چیزی شبیه کد زیر خواهد شد.
num = input("Enter Number: ") print(int(num)**2) |
اگر بخواهیم عدد اعشاری از کاربر دریافت کنیم، تابع int()
پاسخگو نخواهد بود! چرا که این تابع یک عدد صحیح به ما میدهد.
مشابه همین تابع، تابعی به نام float()
در پایتون وجود دارد. به کمک این تابع میتوان مقادیر را به عدد اعشاری تبدیل کرد.
گاهی اوقات نیاز داریم در یک خط و یک بار ورودی گرفتن، چندین مقدار مختلف را به عنوان ورودی از کاربر دریافت کنیم.
مثلاً فرض کنید میخواهیم نام و نام خانوادگی کاربر را به صورت مجزا از هم دریافت کنیم.
روش اول، استفاده از تابع split()
است. این تابع روی یک رشته اعمال میشود. طبق پارامتری که به عنوان ورودی گرفته است، اقدام به جدا کردن رشته میکند.
اگر هیچ آرگومانی به عنوان ورودی به تابع داده نشود، کاراکتر فضای خالی (Space) به عنوان جداکننده در نظر گرفته خواهد شد.
name, family = input("Enter Your name: ").split() |
پس از اجرا، مقدار زیر را به عنوان ورودی به برنامه میدهیم.
Omid Rajaei |
و در انتها مقادیر ذخیره شده در متغیرها را چاپ میکنیم. مقادیر چاپ شده به صورت کامنت در کد زیر مشخص شدهاند.
print(name) print(family) # Omid # Rajaei |
به کمک تابع split()
میتوان هر نوع جداکنندهای برای مقدار ورودی مشخص کرد.
اگر بخواهیم سه عدد مختلف را به کمک علامت , از هم متمایز کرده و دریافت کنیم؛ میتوان از قطعه کد زیر استفاده کرد.
x, y, z = input("Enter Numbers: ").split(',') |
ورودی نمونه و مقادیر ذخیره شده در هر متغیر به صورت زیر خواهد بود.
Enter Numbers: 21,25,23 # x = '21' # y = '25' # z = '23' |
البته توجه کنید که مقادیر ذخیره شده به صورت String هستند و برای تبدیل آنها به عدد میتوان از تابع int()
کمک گرفت.
گاهی اوقات نیاز داریم تعداد نامشخصی ورودی از کاربر دریافت کنیم. یکی از بهترین ایدهها برای این کار استفاده از لیستهاست.
دو روش برای گرفتن یک لیست از دادهها وجود دارد. در ادامه با نحوه اجرای هر کدام آشنا خواهید شد.
به کمک یک حلقه، به تعداد نامحدودی، ورودی به کمک تابع input()
دریافت کرده و آنها را به لیست خود اضافه میکنیم.
در این حالت باید یک کاراکتر به عنوان کاراکتر پایان مشخص کنیم. در صورتی که کاربر کاراکتر مورد نظر را وارد کرد، از حلقه خارج شده و به ادامه برنامه بپردازیم.
1 2 3 4 5 6 7 8 9 | data_list = [] while True: data = input() if data == "/": break data_list += [data] print(data_list) |
در این مثال، با وارد کردن علامت /
گرفتن ورودی به پایان میرسد.
در این روش به کمک روش دریافت چند ورودی در یک خط و سازنده لیست در پایتون تعداد نامشخصی داده را در یک خط دریافت میکنیم.
فرض کنید میخواهیم تعدادی عدد صحیح را دریافت کرده و در لیست data_list
ذخیره کنیم.
قطعه کد زیر این کار را برای ما انجام خواهد داد.
data_list = [int(x) for x in input("Enter multiple value: ").split()] |
به کمک تابع input()
در پایتون میتوان از کاربر ورودی گرفت. این تابع یک ورودی به صورت اختیاری میگیرد که قبل از انتظار برای دریافت ورودی، آنرا چاپ خواهد کرد. هر چیزی که به عنوان داده ورودی وارد شود، توسط این تابع و به صورت رشته متنی به ما بازگردانده میشود. میتوان این مقدار را در متغیری ذخیره کرده و یا به کمک توابعی مثل int()
آنرا به نواع دادهای دلخواه تبدیل کرد.
با استفاده از تابع split()
نیز میتوان چندین مقدار ورودی را با جداکننده مشخص از کاربر دریافت کرد و هر کدام را در متغیرهای جداگانهای ذخیره کنیم.
برچسب : نویسنده : استخدام کار 7learn بازدید : 348