گرفتن ورودی در پایتون : آموزش تابع input ، چطور در پایتون از کاربر ورودی بگیریم؟
گرفتن ورودی در پایتون : در اکثر برنامه های پایتون ما نیاز داریم که ورودی ای را از کاربر بگیریم و سپس آن را پردازش کنیم، برای این کار در این پست با آموزش تابع input با شما همراهان پایتون مارکت هستیم.
برای گرفتن ورودی در پایتون فانکشنی به اصطلاح Built-in تحت عنوان ()input تعبیه شده است.
زمانی که فانکشن ()input را فراخوانی میکنیم، مفسر پایتون منتظر میماند تا کاربر دیتای مد نظر خود را وارد کند.
آموزش دستور input در پایتون :
تابع ()input قابلیت دریافت پارامتر ورودی را دارا می باشد یعنی شما میتوانید یک متن را به کاربر نمایش دهید و به او بگویید که برنامه منتظر ورود چه چیزی می باشد .
مثال زیر را در نظر بگیرید:
1 2 |
name = input("Please enter your name:") print("Welcome",name,"!") |
در مثال بالا ، از کاربر خواسته شده است که نام خود را وارد کند و با قرار دادن رشته “:Please enter your name” بعنوان پارامتر دستور input به کاربر اطلاع داده ایم که چه چیزی را میخواهیم او وارد کند.
به این ترتیب با اجرای برنامه فوق ، رشته مد نظر در خروجی چاپ شده و مفسر پایتون در همان خط منتظر میماند تا کاربر داده خود را وارد کند و کلید اینتر را فشار دهد.
در ادامه دادۀ ورودی کاربر به عنوان خروجیِ فانکشن ()input در نظر گرفته شده و در متغیر name قرار داده میشود.
در ادامه مقدار این متغیر به عنوان پارامتر ورودی به فانکشن ()print داده میشود که در نهایت خروجی کد فوق پس از دریافت ورودی از کاربر بدین صورت خواهد بود:
1 2 |
Please enter your name: Hojjat Welcome Hojjat ! |
نکته : خروجی نهایی تابع ()input یک رشته است؛ به عبارت دیگر، هر آنچه که کاربر به عنوان ورودی به این تابع میدهد به عنوان یک رشته در نظر گرفته میشود حتی اگر داده ورودی از نوع عدد صحیح باشد.
میتوانید مثال فوق را بصورت آنلاین در اینجا اجرا کنید و نتیجه آن را ببینید.
گرفتن عدد از ورودی در پایتون :
فرض کنید میخوایم برنامهای بنویسیم که دو عدد صحیح را از کاربر گرفته و در مجموع آنها را محاسبه کند، در این حالت ما نیاز داریم تا کاربر عدد وارد کند.
1 2 3 4 |
num1 = input("Please enter the first number:") num2 = input("Please enter the second number:") sum = num1 + num2 print(sum) |
خروجی کد فوق به صورت زیر خواهد بود:
1 2 3 |
Please enter the first number:15 Please enter the second number:64 1564 |
اما خروجی 1564 چیه؟ ما دو عدد 15 و 64 را وارد کردیم و حاصل جمع آنا باید 79 چاپ میشد پس چرا 1564 چاپ شده است؟!!
به این دلیل که ورودی های 15 و 64 بصورت دو رشته “15” و “64” در برنامه در نظر گرفته میشوند و جمع دو رشته هم یعنی به هم چسباند دو رشته در پایتون (یا به اصطلاح کانکت کردن دو رشته).
چطور در پایتون عدد بگیریم؟
حال اگر بخواهیم ورودیهای کاربر را به عنوان اعداد صحیح مورد استفاده قرار دهیم، باید داده ورودی کاربر را به نوع عددی تبدیل کنیم. برای این کار پایتو ، یک تابع به اصطلاح Built-in یا توکار بنام int() دارد که یک رشته را میگیرد و معادل عددی آن را برمیگرداند. پس مثال بالا را باید به شکل زیر اصلاح کرد:
1 2 3 4 5 6 |
num1 = input("Please enter the first number:") num2 = input("Please enter the second number:") num1 = int(num1) num2 = int(num2) sum = num1 + num2 print(sum) |
حال خروجی کد فوق همانی میشود که انتظار داشتیم: یعنی برنامه ای که دو عدد از کاربر بگیرد و مجموع آنها را چاپ کند:
1 2 3 |
Please enter the first number:15 Please enter the second number:64 79 |
توضیحاتی در خصوص تابع int در پایتون :
پارامتر ورودی به این تابع میتواند یک رشته و یا یک عدد باشد و چنانچه داده ورودی یک عدد اعشاری باشد، بخش اعشاری آن حذف شده و در نهایت خروجی تابع تنها عدد صحیح قبل از نقطۀ اعشار خواهد بود
در صورتی که هیچ پارامتری به عنوان ورودی به تابع مذکور داده نشود، مقدار صحیح صفر در خروجی برگردانده خواهد شد.
اگر ورودی یک رشته غیر عددی باشد ، آنگاه مفسر پایتون یک خطا یا exception میدهد و قادر به تبدیل آن به عدد نمی باشد.
مثلال زیر را در نظر بگیرید:
1 2 |
age = int(input("Please enter your age:")) print("You are",age,"years old.") |
در مثال فوق از کاربر خواسته ایم که سن خود را وارد کند و آن را در متغیری بنام age قرار میدهیم. حال اگر کاربر به اشتباه بجای سن خود ، مثلا نام خود را وارد کند ، چون رشته ورودی از نوع عدد نیست برنامه خطا میدهد:
1 2 3 4 5 |
Please enter your age:hojjat Traceback (most recent call last): File "D:/NewProject/Python/exception.py", line 1, in <module> age = int(input("Please enter your age:")) ValueError: invalid literal for int() with base 10: 'hojjat' |