آشنایی با فانکشن از پیش ساخته شده ی input


برای استفاده از بیشتر برنامه ها لازم است که اطلاعاتی از طرف کاربران وارد شود و روی آن ها پردازش صورت گیرد. به منظور تعامل با کاربران، باید ابزارهایی برای دریافت ورودی های آن ها در اختیار داشته باشیم. در زبان برنامه نویسی پایتون این کار به سادگی با استفاده از فانکشنی تحت عنوان ()input انجام می شود.

زمانی که دستور فراخوانی فانکشن ()input را وارد می کنیم، مفسر پایتون منتظر می ماند تا کاربر چیزی را به عنوان ورودی تایپ کند. فانکشن ()input می تواند هم بدون آرگومان باشد و هم می تواند یک آرگومان اعلانیه بگیرد! آرگومان این فانکشن غالباً استرینگی است که به کاربر توضیح می دهد چه اطلاعاتی را باید وارد کند. برای مثال برنامه ی زیر را در نظر بگیرید:

name = input("Please inter your name -->")
print("Welcome",name,"!")

در این برنامه فانکشن ()input با توجه به آرگومانش، از کاربر می خواهد نام خود را وارد کند. با اجرای این برنامه، پیغام <-- Please inter your name در خروجی چاپ می شود و مفسر پایتون در همان خط منتظر می ماند تا کاربر داده ی خود را وارد کند و کلید اینتر را فشار دهد. داده ی ورودی کاربر به عنوان خروجی فانکشن ()input در نظر گرفته می شود. غالباً خروجی نهایی فانکشن ()input یک استرینگ است، یعنی چیزی که کاربر وارد می کند، حتی اگر یک عدد صحیح باشد، به عنوان یک استرینگ در نظر گرفته می شود. در این مثال خروجی فانکشن ()input که همان نام کاربر است به متغیری با نام name ارجاع داده می شود. سپس از مقدار این متغیر به عنوان بخشی از آرگومان دستور پرینت استفاده می شود. برای مثال خروجی نهایی برنامه ی بالا بعد از وارد کردن یک داده به صورت زیر است:

Please inter your name -->Narges
Welcome Narges !

حال فرض کنید بخواهیم برنامه ای بنویسیم که دو عدد صحیح را از کاربر بگیرد و مجموع آن ها را به دست آورد. اجازه دهید ببینیم درحالت معمول اگر داده های ورودی را با هم جمع کنیم چه اتفاقی می افتد:

num1 = input("Please enter the first  number -->")
num2 = input("Please enter the second  number -->")
sum = num1+num2
print(sum)

خروجی کدهای فوق به صورت زیر خواهد بود:

Please enter the first  number -->25
Please enter the second  number -->94
2594

همان طور که می بینید، در خروجی نهایی به جای چاپ حاصل جمع دو عدد وارد شده، اعداد 25 و 94 به هم وصل و در کنار هم چاپ شده اند. علت به دست آمدن این نتیجه این است که با وجود آن که کاربر دو عدد صحیح را وارد می کند، اما همان طور که گفتیم خروجی فانکشن ()input یک استرینگ است و مفسر این اعداد صحیح را به عنوان دو داده از نوع استرینگ در نظر می گیرد و آن گاه دو داده ی وارد شده با استفاده از عملگر + به هم متصل می شوند و متغیر sum به این استرینگ جدید حاصل از ترکیب آن ها منتسب می شود. بنابراین اگر بخواهیم از ورودی ها به عنوان اعداد صحیح استفاده کنیم، باید داده های وارد شده توسط کاربر را تبدیل نماییم. برای تبدیل یک داده ی استرینگ به یک عدد صحیح از فانکشن ()int استفاده می کنیم. این فانکشن یک آرگومان می گیرد و آن را تبدیل به یک عدد صحیح می کند. برای مثال کد های زیر را به برنامه ی قبلی خود اضافه می کنیم:

num1 = int(num1) 
num2 = int(num2)
sum = num1+num2
print(sum)

اکنون خروجی نهایی این بخش از کدها را در زیر می بینیم:

Please enter first  number -->25
Please enter second  number -->94
119

همان طور که می بینید این بار مقدار عددی دو داده ی ورودی توسط کاربر با هم جمع شده اند و در خروجی نمایش داده می شوند.

به خاطر داشته باشید
آرگومان فانکشن ()int می تواند یک استرینگ و یا یک عدد باشد. اگر آرگومان این فانکشن یک عدد اعشاری باشد، بخش اعشاری آن بریده می شود و خروجی فانکشن ()int تنها مقدار عدد صحیح قبل از نقطه ی اعشار آن عدد است. در صورتی که هیچ آرگومانی به فانکشن ()int داده نشود، مقدار صحیح 0 برگردانده خواهد شد.

برنامه ی زیر را در نظر بگیرید. در این برنامه از کاربر درخواست می شود که سن خود را وارد کند، آن گاه داده ی وارد شده توسط کاربر تبدیل به یک عدد صحیح شده و به متغیر age منتسب می شود.

age = int(input("Please enter your age -->"))
print("You are",age,"years old.")

اکنون فرض کنیم بعد از اجرای برنامه کاربر به اشتباه به جای یک عدد که نشان دهنده ی سن او است، نام خود را وارد کند. در این صورت خروجی برنامه به صورت زیر است:

همان طور که می بینید، مفسر پایتون پیغام وجود خطا در برنامه را می دهد. علت این است که هر چند گفتیم آرگومان فانکشن ()int می تواند یک استرینگ باشد، با این حال استرینگ وارد شده به این فانکشن باید متناظر با یک مقدار عددی باشد و حتماً از کاراکترهای عددی در آن استفاده شده باشد نه حروف یا سایر کاراکترها. در آموزش های آینده با نحوه ی مدیریت چنین خطاهایی که امکان بروز آن ها در زمان اجرای برنامه وجود دارد بیشتر آشنا خواهیم شد.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
orkobon
orkobon
۱۳۹۶/۱۱/۰۹
سلام
چطور میتونم این دو فانکشن رو مثل شما پشت هم بنویسم num1 = input(\"Please enter the first number --\")
num2 = input(\"Please enter the second number --\")
وقتی اولی رو مینویسم در جا num1 رو میخواد بعد باید خط دوم رو بنویسیم
لطفا راهنمایی بفرمائید ممنونم
orkobon
orkobon
۱۳۹۶/۱۱/۰۹
کسی جوابگو نیست آیا ؟؟؟

در پاسخ به

اکرم امراه‌نژاد
اکرم امراه‌نژاد
۱۳۹۶/۱۱/۰۹
سلام
سوالتون کمی نامفهمومه، ولی اگر منظورتون رو درست متوجه شده باشم، باید بگم برای این که دستورتون پشت سر هم اجرا بشن : اول کدتون رو بنویسید
در ide مورد نظر File - New File کد را در آن کپی کرده و Run Module فرمایید!
با F5 هم میتوانید اجرا کنید
امیدوارم مشکلتان حل شود.
موفق باشید

در پاسخ به

دانیال
دانیال
۱۳۹۶/۰۶/۰۴
خودم مشکل کارمو متوجه شدم.
ممنون
دانیال
دانیال
۱۳۹۶/۰۶/۰۴
سلام
من عین عبارت شما یعنی
num1 = int(num1)
num2 = int(num2)
sum = num1+num2
print(sum)
رو وارد کردم ولی این ارور رو میده:
Traceback (most recent call last):
File "C:\Users\computer\Desktop\2.py", line 1, in
num1 = int(num1)
NameError: name 'num1' is not defined
Mehran Sanea
Mehran Sanea
۱۳۹۶/۰۴/۳۰
سلام
من به ی مشکل اساسی برخوردم. من در kali linux از پایتون 2.7.13 که پیشفرض خود کالی هست استفاده میکنم.
اما وقتی این فرمان رو وارد میکنم
name = input("Please inter your name --")
print("Welcome",name,"!")
فرمان اول اجرا میشه و نام رو از من میگیره اما ب محض زدن دکمه ی اینتر با راور عجیبی مواجه میشم ک میگه متغیر name تعریف نشده!

root@kali:~/Desktop# python name.py
Please enter your name here--- Mehran
Traceback (most recent call last):
File "name.py", line 1, in
name = input("Please enter your name here--- ");
File "", line 1, in
NameError: name 'Mehran' is not defined


یکی کمک کنه لطفا
MohammadR
MohammadR
۱۳۹۶/۰۴/۰۶
سلام
یه سوال دیگم داشتم
چجوری میشه از if برای بررسی input استفاده کرد؟
MohammadR
MohammadR
۱۳۹۶/۰۴/۰۶
سلام،تو نظرات درست تایپ نمیشه،برا همین کدم و ارورشو تو فایل txt نوشتم.
http://uupload.ir/view/sy7t_error.txt
ممنون میشم بگین مشکلش چیه
MohammadR
MohammadR
۱۳۹۶/۰۴/۰۶
سلام و خسته نباشید،مشکل کد من چیه؟
((\\\"
milad
milad
۱۳۹۵/۱۱/۲۳
عالی بود
arman
arman
۱۳۹۵/۰۶/۲۱
سلام از سایت خوبتون ممنونم من امروز اولین برنامم نوشتم وخیلی انرژی گرفتم.
mostafa
mostafa
۱۳۹۵/۰۵/۱۷
سلام
من میخوام یه برنامه بنویسم که از کاربر یه ورودی بگیره
اگه کاربر عدد وارد کرد 1 رو چاپ کنه
اگه حرف وارد کرد 2 رو چاپ کنه
شما گفتید که (اینپوت) هرچی رو بگیره تبدیل به استرینگ میکنه
راه حلی سراغ دارید؟
این کد منه
x =input("inter a number")
if type(x)==int:
print("plz inter a number")
else:
print("welcome")
نرگس اسدی
نرگس اسدی
۱۳۹۵/۰۵/۱۷
سلام
کد شما درست نیست.
فانکشن isnumeric() در پایتون وجود داره که روی یک شیئ استرینگ اثر می کنه و چک می کنه که آیا تمام کاراکترهای استرینگ عدد هست یا نه.
اگر اینطور باشه مقدار true برمی گرداند.
x.isnumeric() دستوری است که شما می تونید به کد خودتون اضافه کنید تا چک کنه ورودی کاربر عدد هست یا خیر.

در پاسخ به

محمدهادی
محمدهادی
۱۳۹۵/۰۷/۳۰
("x=input("enter
("if (x.isnumeric()==True):print("number
("else: print("string
جور دیگه هم میشه نوشت؟ تابع ()isnumeric آرگومان هم میگیره؟

در پاسخ به

mostafa
mostafa
۱۳۹۵/۰۵/۱۸
ممنون

در پاسخ به

Adib
Adib
۱۳۹۵/۰۴/۰۴
ممنون از آموزش خوبتون.
در مثال اول یه اشتباه املایی وجود دارد.Enter