گرفتن ورودی از کاربر در برنامههایی که مینویسیم میتواند به کاربرد بیشتر و بهبود عملکرد نرمافزار منتهی شود. این روزها در اکثر برنامهها نیاز داریم اطلاعات مختلفی را از کاربر دریافت کنیم. تقریباً در تمام زبانهای برنامه نویسی توابع و امکانات مختلفی برای گرفتن ورودی از کاربر در نظر گرفته شده است. گرفتن ورودی در پایتون از آنچه که فکر میکنید بسیار آسانتر است. در این مقاله به بررسی انواع استفاده input در پایتون میپردازیم.
در زبان برنامه نویسی پایتون یک تابع ساده برای گرفتن ورودی از کاربر در نظر گرفته شده. این تابع به صورت built-in است. یعنی برای استفاده از آن نیاز به وارد کردن هیچ کتابخانه یا کد اضافی به برنامه نخواهید داشت.
فهرست محتوای آموزش
• دستوری ورودی input در پایتون
o خروجی تابع input
• گرفتن داده از کاربر در پایتون
o ورودی رشته در پایتون
o گرفتن عدد از کاربر در پایتون
o گرفتن عدد اعشاری از کاربر
• گرفتن چند ورودی در یک خط
o گرفتن چند ورودی با جداکننده (Separator)
o گرفتن چند عدد در ورودی
• گرفتن لیست از کاربر در پایتون
o روش اول: استفاده از حلقه برای دریافت لیست از کاربر
o روش دوم: استفاده از سازنده لیست پایتون
• جمع بندی: گرفتن ورودی در پایتون
دستوری ورودی input در پایتون
در زبان پایتون به کمک تابع ()input میتوانیم ورودی مورد نظر را از کاربر دریافت کنیم.
هنگامی که اجرای کد پایتون به تابع ()inputمیرسد، مفسر پایتون منتظر میماند تا کاربر ورودی مورد نظر خود را وارد کند. پس از آن برنامه به ادامه اجرای خود خواهد پرداخت.
input()
پس از صدا زده شدن این تابع، کاربر میتواند کاراکترهای مورد نظر را در کنسول وارد کرده و با فشرده کلید Enter اتمام وارد کردن اطلاعات را اعلام کند.
در نسخه 2 پایتون، تابع ()raw_input برای دریافت ورودی از کاربر وجود داشت. در نسخه 3 این تابع حذف شده و ()input جایگزین آن شد. ویژگیها و عملکرد این دو تابع دقیقاً شبیه به هم هستند.
خروجی تابع input
خروجی این تابع یک رشته (String) است. این رشته دقیقا همان ورودی است که کاربر در برنامه وارد کرده است.
نوع خروجی تابع را نمیتوان تغییر داد. در ادامه روشهای برای تبدیل نوع داده ورودی تابع input در پایتون را بررسی خواهیم کرد.
گرفتن داده از کاربر در پایتون
ممکن است بخواهیم قبل قبل از دریافت ورودی از کاربر، پیغامی به کاربر نمایش دهیم.
ورودی تابع input یک رشته است. پایتون قبل از منتظر ماندن برای وارد کردن دادهها، رشته ورودی را در کنسول چاپ کرده و سپس منتظر دریافت ورودی میماند.
آرگومان ورودی این تابع دلخواه است. یعنی اگر هیچ پیامی برای چاپ به تابع ندهیم، تابع بدون مشکل اجرا خواهد شد.
ورودی رشته در پایتون
همانطور که گفته شده خروجی تابع ()input همیشه یک رشته است.
فرض کنید میخواهیم در ابتدای یک برنامه اسم کاربر را پرسیده و به او سلام کنیم. قطعه کد زیر همین کار را انجام میدهد.
name = input("Please Enter Your name: ")
print("Hello " + name + "!")
پس از اجرای این برنامه، ابتدا پیغامی مبنی بر وارد کردن نام نمایش داده میشود. پس از وارد کردن اسم، پیام سلام چاپ خواهد شد.
متن زیر نمونهای از اجرای این برنامه است.
Please Enter Your name: Omid
!Hello Omid
گرفتن عدد از کاربر در پایتون
تابع ()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 در پایتون وجود دارد. به کمک این تابع میتوان مقادیر را به عدد اعشاری تبدیل کرد.
گرفتن چند ورودی در یک خط
گاهی اوقات نیاز داریم در یک خط و یک بار ورودی گرفتن، چندین مقدار مختلف را به عنوان ورودی از کاربر دریافت کنیم.
مثلاً فرض کنید میخواهیم نام و نام خانوادگی کاربر را به صورت مجزا از هم دریافت کنیم.
گرفتن چند ورودی با جداکننده (Separator)
روش اول، استفاده از تابع ()split است. این تابع روی یک رشته اعمال میشود. طبق پارامتری که به عنوان ورودی گرفته است، اقدام به جدا کردن رشته میکند.
اگر هیچ آرگومانی به عنوان ورودی به تابع داده نشود، کاراکتر فضای خالی (Space) به عنوان جداکننده در نظر گرفته خواهد شد.
name, family = input("Enter Your name: ").split()
پس از اجرا، مقدار زیر را به عنوان ورودی به برنامه میدهیم.
Omid Aghababaei
و در انتها مقادیر ذخیره شده در متغیرها را چاپ میکنیم. مقادیر چاپ شده به صورت کامنت در کد زیر مشخص شدهاند.
print(name)
print(family)
Omid#
Aghababaei#
گرفتن چند عدد در ورودی
به کمک تابع ()split میتوان هر نوع جداکنندهای برای مقدار ورودی مشخص کرد.
اگر بخواهیم سه عدد مختلف را به کمک علامت , از هم متمایز کرده و دریافت کنیم؛ میتوان از قطعه کد زیر استفاده کرد.
x, y, z = input( "Enter Numbers: " ).split(',')
ورودی نمونه و مقادیر ذخیره شده در هر متغیر پایتونی به صورت زیر خواهد بود.
Enter Numbers: 21,25,23
'x = '21#
'y = '25#
'z = '23#
البته توجه کنید که مقادیر ذخیره شده به صورت String هستند و برای تبدیل آنها به عدد میتوان از تابع ()int کمک گرفت.
گرفتن لیست از کاربر در پایتون
گاهی اوقات نیاز داریم تعداد نامشخصی ورودی از کاربر دریافت کنیم. یکی از بهترین ایدهها برای این کار استفاده از لیستهاست.
دو روش برای گرفتن یک لیست از دادهها وجود دارد. در ادامه با نحوه اجرای هر کدام آشنا خواهید شد.
روش اول: استفاده از حلقه برای دریافت لیست از کاربر
به کمک یک حلقه در پایتون و تابع ()input میتوانیم به تعداد نامحدودی ورودی دریافت کرده و آنها را به لیست خود اضافه میکنیم.
در این حالت باید یک کاراکتر به عنوان کاراکتر پایان مشخص کنیم. اگر کاربر کاراکتر مورد نظر را وارد کرد، از حلقه خارج شده و به ادامه برنامه بپردازیم.
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 نیز میتوان چندین مقدار ورودی را با جداکننده مشخص از کاربر دریافت کرد و هر کدام را در متغیرهای جداگانهای ذخیره کنیم.
نام | تعداد آزمون | میزان موفقیت | |
---|---|---|---|
َAmeneh Darvishzadeh | 1 | 100/00 % | |
Mehrad Hashemi | 1 | 100/00 % | |
Noushmehr Norsobhi | 1 | 100/00 % | |
محمدحسین میرزایی | 1 | 100/00 % | |
مهدی حسین پور آقائی | 1 | 100/00 % | |
Farnoush Toghiany | 21 | 98/36 % | |
zahra namdari | 46 | 98/21 % | |
یاسمن محمدی پور | 4 | 98/08 % | |
Tara Mohammadi | 3 | 96/43 % | |
yasaman mohamadipur | 51 | 95/86 % | |
مهدی هنرمند | 1 | 95/24 % | |
محمدجواد ملائی اردستانی | 3 | 94/44 % | |
Arzhang Saberi | 4 | 93/33 % | |
Soheila Karimi | 124 | 92/73 % | |
aram farhmand | 10 | 92/31 % | |
یاشار اسکندری | 98 | 91/14 % | |
عباس پورمیدانی | 1 | 90/00 % | |
پریسا سلوکی شهرضایی | 72 | 89/49 % | |
ارشیا قلمکاری | 33 | 89/23 % | |
Matin Azimipour | 30 | 88/17 % |