ورودی و خروجی در پایتون: در بسیاری موارد توسعهدهندگان برنامههای کاربردی نیاز دارند تا با کاربران تعامل داشته باشند. این تعامل به معنی گرفتن داده و یا مرتب کردن نتایج حاصل از پردازش داده و اعلام آنها به کاربر است. امروزه بیشتر برنامههای کاربردی به منظور ایجاد برهمکنش و بده بستان بین برنامهی کاربردی و کاربر از جعبههای محاورهای استفاده میکنند و از طریق آنها درخواست وارد کردن داده و یا نمایش نتایج حاصل از پردازش استفاده میکنند. همانطور که در آموزش مقدماتی قسمت ششم اعلام شد در این مقاله روشهای پایه در خصوص تعامل و نحوهی ارتباط بین کاربر با برنامه توسط مورد بحث قرار خواهد گرفت.
فهرست محتوای این مقاله
گرفتن داده در پایتون:
با توجه به اینکه از چه نسخهای از پایتون استفاده میکنید برای وارد کردن دادهها دو فرمان متفاوت وجود دارد. در پایتون ۲ و ۳ به ترتیب از توابعهای زیر برای ورود داده استفاده میشود:
- ()raw_input
- ()input
()raw_input: از این تابع در نسخههای قدیمیتر پایتون ( مانند نسخه ۲ ) استفاده میگردید. مطابق با عملکرد این تابع آنچه از طریق صفحهکلید تایپ میشود و پس از تبدیل به رشته در یک متغیر ذخیره میشود. به مثال زیر توجه کنید:
# Python program showing
# a use of raw_input()
g = raw_input("Enter your name : ")
print g
پس از اجرای برنامه
Enter your name : https://7learn.ac
https://7learn.ac
ابتدا پیام : Enter your name نمایش داده میشود و برنامه توقع دارد که شما دادهی مورد نظر را وارد کنید. پس از وارد کردن داده و زدن کلید اینتر داده وارد شده پس از تبدیل به یک رشته در متغیر g ذخیره میشود و در خط بعدی مقدار ذخیره شده توسط تابع ()print در صفحه نمایش چاپ میشود.
# Program to check input
# type in Python
num = input ("Enter number :")
print(num)
name1 = input("Enter name : ")
print(name1)
# Printing type of input value
print ("type of number", type(num))
print ("type of name", type(name1))
Enter number :256
256
Enter name : https://7learn.ac
https://7learn.ac
type of number <class 'str'>
type of name <class 'str'>
این مثال نشان میدهد که وقتی داده وارد شده عدد یا یک رشته باشد، پایتون هر دو داده را به عنوان یک شی از نوع ()str شناسایی میکند.
کنسول پایتون چیست؟
کنسول که به آن پوسته یا shell هم گفته میشود اساسا، یک مفسر خط فرمان است بدان معنا که از کاربر در یک خط، فرمانی را دریافت و سپس همان تک خط را در لحظه ترجمه و اجرا میکند. در صورتی که خطایی در آن خط وجود نداشته باشد، نتیجه در خروجی چاپ میشود در غیر اینصورت پیام خطا نمایش داده خواهد شد. کنسول پایتون به صورت زیر است:
برای وارد شدن به کنسول پایتون از دو روش میتوانید اقدام کنید. در روش اول مستقیم برنامه IDLE پایتون را از لیست برنامههای نصب شده در ویندوز جستجو، و اجرا کنید ( برای کسب اطلاعات بیشتر نصب پایتون را در قسمت اول مشاهده کنید. )
در روش دوم ابتدا وارد کنسول ویندوز شده و سپس python را تایپ و کلید اینتر را بزنید.
کنسول پایتون به صورت زیر است:
با نوشتن فرمانهای پایتون و زدن کلید اینتر فرمان صادر شده توسط شما ترجمه و بلافاصله اجرا میشود.
گرفتن داده از کنسول در پایتون:
از طریق کنسول پایتون و با استفاده از تابع ()input میتوان دادههای وارد شده از طریق صفحه کلید را در خط فرمان دریافت کرده و آن را در یک متغیر ذخیره و در جاهای دیگر مورد استفاده قرار داد. به کد زیر توجه کنید:
# input
input1 = input()
# output
print(input1)
مطابق با کد فوق، اگر در کنسول پایتون دستور اول را تایپ کنید پایتون منتظر دریافت ورودی از شما خواهد بود. با دریافت ورودی داده در متغیر input1 ذخیره شده و با تایپ دستور پرینت آن مقدار ذخیره شده در صفحه نمایش نشان چاپ میشود.
دریافت عدد صحیح:
ممکن است شرایطی ایجاد شود که نیاز باشد که از طریق کنسول-کاربر پایتون داده از نوع صحیح یا اعشاری وارد کنید برای این منظور از تغییر نوع داده در تابع-داخلی ()input استفاده میشود. به کد زیر توجه کنید:
# input
num1 = int(input())
num2 = int(input())
# printing the sum in integer
print(num1 + num2)
در کد فوق هدف این است که از طریق کنسول-کاربر پایتون دو عدد صحیح دریافت و سپس مجموع آنها را در صفحه نمایش چاپ کرد.
لازم به ذکر است که چنانچه داده ورودی یک عدد اعشاری یا یک رشته باشد پیغام خطا از طرف مفسر پایتون به صورت زیر نمایان میشود.
دریافت عدد اعشاری:
برای دریافت یک ورودی از طریق صفحه کلید و تبدیل آن به یک عدد اعشاری به کد زیر توجه کنید:
# input
num1 = float(input())
num2 = float(input())
# printing the sum in float
print(num1 + num2)
در این کد هدف آن مشابه کد قبلی است دادهی ورودی به نوع اعشاری و در متغیرها ذخیره و سپس حاصل جمع آنها در خروجی نمایش داده خواهد شد.
دریافت رشته:
کلیهی دادههای ورودی اعم از اینکه صحیح یا اعشاری باشد را میتوان به نوع رشتهای تبدیل کرد. برای این منظور از تابع-داخلی ()str میتوان استفاده کرد.
# input
string = str(input())
# output
print(string)
دریافت چندین ورودی در پایتون:
برای برنامه نویسان و توسعه دهندگان شرایطی ایجاد میشود که لازم است کاربران، چندین ورودی را در یک خط وارد برنامه کنند. برای این منظور در پایتون دو روش وجود دارد که در ادامه به آن پرداخته خواهد شد.
استفاده از متد ()split در پایتون:
این تابع-داخلی پایتون کمک میکند تا در یک خط چندین ورودی که توسط فضای خالی از هم جدا شدهاند را از کاربر دریافت کرد. البته میتوان طوری از این تابع استفاده کرد که فصل جدایی دادههای ورودی، هر کاراکتر دیگری به غیر از فضای خالی یا white-space باشد. شکل کلی این تابع به صورت زیر است:
input().split(seprator,maxsplit)
برای روشن شدن موضوع به دو مثال زیر توجه کنید:
# Python program showing how to
# multiple input using split
# taking two inputs at a time
x, y = input("Enter a two value: ").split()
print("Number of boys: ", x)
print("Number of girls: ", y)
print()
# taking three inputs at a time
x, y, z = input("Enter a three value: ").split()
print("Total number of students: ", x)
print("Number of boys is : ", y)
print("Number of girls is : ", z)
print()
Enter a two value: 5 10
Number of boys: 5
Number of girls: 10
Enter a three value: 30 10 20
Total number of students: 30
Number of boys is : 10
Number of girls is : 20
در دو مثال دادهها در یک خط و با فاصله وارد شدهاند. مقادیر به ترتیبی که وارد میشوند در متغیر ذخیره و در خروجی چاپ میشوند.
استفاده از لیست جامع:
یک روش موثر برای ورود داده لیستهای جامع است (برای کسب اطلاعات بیشتر در این مورد اینجا کلیک کنید). ، به مثال زیر توجه کنید
# Python program showing
# how to take multiple input
# using List comprehension
# taking two input at a time
x, y = [int(x) for x in input("Enter two value: ").split()]
print("First Number is: ", x)
print("Second Number is: ", y)
print()
# taking three input at a time
x, y, z = [int(x) for x in input("Enter three value: ").split()]
print("First Number is: ", x)
print("Second Number is: ", y)
print("Third Number is: ", z)
print()
# taking multiple inputs at a time
x = [int(x) for x in input("Enter multiple value: ").split()]
print("Number of list is: ", x)
Enter two value: 2 4
First Number is: 2
Second Number is: 4
Enter three value: 4 5 6
First Number is: 4
Second Number is: 5
Third Number is: 6
Enter multiple value: 10 20 30 40
Number of list is: [10, 20, 30, 40]
مثال فوق برای ورود داده با ۲، ۳ و چند ورودی در یک خط ارائه شده است.
چاپ نتایج در صفحه نمایش:
سادهترین روش برای نمایش دادهها تابع ()print است. این تابع با چند یا بدون آرگومان استفاده میشود. این تابع ورودی را به رشته تبدیل و در خروجی چاپ میکند.
# Python 2.x program showing
# how to print data on
# a screen
# One object is passed
print "https://7learn.ac"
# Four objects are passed
print "welcome", "to", "7learn", "academy"
l = [1, 2, 3, 4, 5]
# printing a list
print l
در پایتون ۳ این تابع به صورت زیر است:
# Python 3.x program showing
# how to print data on
# a screen
# One object is passed
print("https://7learn.ac")
x = 5
# Two objects are passed
print("x =", x)
# code for disabling the softspace feature
print('H', 'e', 'l', 'l','o', sep ='')
# using end argument
print("Python", end = '@')
print("7learn.com")
چاپ نتایج در صفحه نمایش بدون انتقال به خط جدید:
در حالت پیشفرض تابع ()print پس از چاپ نتایج در صفحه نمایش، کنترل به خط بعدی منتقل میشود. برای مثال به خروجی کد زیر دقت کنید:
print("https://7learn.ac")
print("welcome to 7learn academy")
https://7learn.ac
welcome to 7learn academy
مشاهده میشود که جمله دوم در خط مجزا آمده است. برای اینکه هر دو در یک خط چاپ شوند، به دو کد زیر توجه کنید.
چاپ خروجی بدون انتقال به خط جدید در پایتون ۲:
به قطعه کد زیر توجه کنید:
# Python 2 code for printing
# on the same line printing
# https://7learn.ac and welcome to 7learn academy
# in the same line
print("https://7learn.ac"),
print("welcome to 7learn academy")
# array
a = [1, 2, 3, 4]
# printing a element in same
# line
for i in range(4):
print(a[i]),
https://7learn.ac welcome to 7learn academy 1 2 3 4
با قرار دادن کاما(,) بین دو دستور print مفسر پایتون دو جمله را به دنبال هم در خروجی نمایش میدهد.
چاپ خروجی بدون انتقال به خط جدید در پایتون ۳:
# Python 3 code for printing
# on the same line printing
# https://7learn.ac and welcome to 7learn academy
# in the same line
print("https://7learn.ac", end =" ")
print("welcome to 7learn academy")
# array
a = [1, 2, 3, 4]
# printing a element in same
# line
for i in range(4):
print(a[i], end =" ")
https://7learn.ac welcome to 7learn academy
1 2 3 4
پارامتر end در تابع ()print پایتون:
تابع ()print پایتون دارای یک پارامتری به نام end است که بهطور پیشفرض این پارامتر، مقدار n\ را دارد. به همین دلیل پس از اجرای این دستور، کنترل در صفحه نمایش به خط جدید منتقل میشود. مقدار پیشفرض این پارامتر را میتوان به دلخواه تغییر داد. اگر مقدار آن یک رشته خالی قرار گیرد مقادیر به دنبال هم چاپ میشوند.
# This Python program must be run with
# Python 3 as it won't work with 2.7.
# ends the output with a <space>
print("Welcome to" , end = ' ')
print("7learn academy.", end = ' ')
اما، مثال دیگری که قابلیت این پارامتر را نشان میدهد در کد زیر مشاهده کنید:
# This Python program must be run with
# Python 3 as it won't work with 2.7.
# ends the output with '@'
print("info" , end = '@')
print("7learn.cm")
پارامتر sep در تابع ()print پایتون:
پارامتر دیگر تابع ()print در پایتون پارامتر sep است. این پارامتر بهطور پیشفرض کاراکتر فضای خالی است که میتوان این مقدار پیشفرض را به هر کاراکتر دیگر صحیح یا رشتهای تغییر داد. از این پارامتر که مختص پایتون ۳ به بالا است به منظور قالببندی خروجیها از نوع رشتهای بهکار گرفته میشود. به کد زیر توجه کنید:
#code for disabling the softspace feature
print('7','L','e','a','r','n', sep='')
#for formatting a date
print('20','04','2020', sep='-')
#another example
print('info','7learn.com', sep='@')
جمعبندی
پایتون دارای کنسولی است که قادر است کلیهی دستوراتی که در یک خط نوشته میشود را بهطور آنی ترجمه و اجرا کند. دادهها را میتوان به صورت منفرد در خطوط مجزا و یا چندین داده در یک خط وارد کرد. هنگام دریافت ورودی دادها را میتوان به نوع صحیح، اعشاری و رشتهای تبدیل کرد. از لیستهای جامع برای ورود چندین داده در یک خط استفاده میشود. تابع print() بهطور پیشفرض پس از چاپ بهطور اتوماتیک به خط بعد منتقل میشود و برای تغییر این رفتار پیشفرض از پارامتر end میتوان کمک گرفت. همچنین، بهطور پیشفرض کاراکتری که فضای بین رشتهها را پر میکند کاراکتر فضای خالی است که میتوان توسط پارامتر sep آن را تغییر داد. نحوهی قالببندی خروجی دادهها بسیار حائز اهمیت است که در مقاله بعدی مورد بحث قرار خواهد گرفت.
یادگیری زبان پایتون بسیار ساده است. و با شرکت در دورهی متخصص پایتون توسعه وب درآینده میتونی اپلیکیشن موبایل و دستکتاپ بسازی و وارد حوزهی هوش مصنوعی هم بشوی.
سلام
چطور میتوانم ورودی رشته بگیرم
سلام. همونطور که در مقاله گفتیم، تابع input برای گرفتن ورودی استفاده میشه و این تابع هر نوع ورودی رو بدون توجه به نوعش دریافت میکنه. (چون نوع داده در پایتون خیلی پررنگ نیست)
حالا مثلا ما برای گرفتن عدد صحیح و عدد اعشاری این ورودی رو یه تغییر فرمت هم دادیم (برای عدد صحیح از int و برای اعشاری از float استفاده کردیم) به همین ترتیب برای رشته هم میتونید از str استفاده کنید.
یه روش دیگه هم وجود داره و اون اینه که از تابع raw_input در ورودی به جای input استفاده کنید. این تابع به صورت خودکار هر نوع ورودی (عدد یا رشته) رو به یک رشته تبدیل میکنه.
تشکر از مقالتون
حالا که صحبت در مورد ورودی خروجی ها در پایتون بود
اگر در مورد انواع دیگر ورودی خروجی ها مثل فایل ها جریان های داده (stream) و پورت های شبکه و ورودی خروجی و دسترسی به پورت ها سخت افزاری و …. هم صحبت میکردید
که در پایتون چطور با اینها ارتباط برقرار کنیم خیلی کاملتر و جامعتر میشد
دوست عزیز، خوشحالیم که از مقاله راضی بودید… این سری مقالات آموزشی پایتون از صفر به صد است و در مورد مباحثی که نام بردید چون پیشرفتهتر بوده، بعد به طور کامل توضیح داده خواهد شد.
ورودی
در تنها خط ورودی یک رشته میآید، که نشان دهندهی کلمه ایست که سخنران گفته است. فرض کنید طول رشته n است.
خروجی
خروجی شامل n خط است که نشاندهندهی کلماتی است که از بلندگو بیرون میآید.
مثال
ورودی نمونه ۱
golabi
خروجی نمونه ۱
golabi
oolabi
lllabi
aaaabi
bbbbbi
iiiiii
چگونه میتوانیم در یک خط دو ورودی بگیریم که یکی از آنها عدد و دیگری رشته باشد
با درود فراوان
مهرداد عزیز
برای گرفتن داده در یک خط از تابع ()split همراه با تابع ()input میتوانید استفاده کنید. اما برای دریافت یک عدد و یک رشته بهتر است شما هر دو را در قالب رشته دریافت کنید و سپس آن را تبدیل نوع به صحیح یا اعشاری کنید.
موفق و پیروز باشید