آشنایی با فانکشن از پیش ساخته شده ی 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 می تواند یک استرینگ باشد، با این حال استرینگ وارد شده به این فانکشن باید متناظر با یک مقدار عددی باشد و حتماً از کاراکترهای عددی در آن استفاده شده باشد نه حروف یا سایر کاراکترها. در آموزش های آینده با نحوه ی مدیریت چنین خطاهایی که امکان بروز آن ها در زمان اجرای برنامه وجود دارد بیشتر آشنا خواهیم شد.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
دانیال
دانیال
خودم مشکل کارمو متوجه شدم.
ممنون
دانیال
دانیال
سلام
من عین عبارت شما یعنی
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