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

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
چند بار گرفتن متغییر از یک ورودی با تابع while در پایتون
a=int(input("tedad num"))
i = 1
c=0

while(i
orkobon
orkobon
سلام
چطور میتونم این دو فانکشن رو مثل شما پشت هم بنویسم num1 = input("Please enter the first number --")
num2 = input("Please enter the second number --")
وقتی اولی رو مینویسم در جا num1 رو میخواد بعد باید خط دوم رو بنویسیم
لطفا راهنمایی بفرمائید ممنونم
دانیال
دانیال
خودم مشکل کارمو متوجه شدم.
ممنون
دانیال
دانیال
سلام
من عین عبارت شما یعنی
num1 = int(num1)
num2 = int(num2)
sum = num1+num2
print(sum)
رو وارد کردم ولی این ارور رو میده:
Traceback (most recent call last):
File "C:UserscomputerDesktop2.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
سلام از سایت خوبتون ممنونم من امروز اولین برنامم نوشتم وخیلی انرژی گرفتم.