ورودی و خروجی در پایتون - آموزش مقدماتی پایتون - قسمت هفتم

دسته بندی: پایتون
زمان مطالعه: 11 دقیقه
۰۵ فروردین ۱۳۹۹

ورودی و خروجی در پایتون: در بسیاری موارد توسعه‌دهندگان برنامه‌های کاربردی نیاز دارند تا با کاربران تعامل داشته باشند. این تعامل به معنی گرفتن داده و یا مرتب کردن نتایج حاصل از پردازش داده و اعلام آن‌ها به کاربر است. امروزه بیشتر برنامه‌های کاربردی به منظور ایجاد برهم‌کنش و بده‌ بستان بین برنامه‌ی کاربردی و کاربر از جعبه‌های محاوره‌ای استفاده می‌کنند و از طریق آن‌ها درخواست وارد کردن داده و یا نمایش نتایج حاصل از پردازش استفاده می‌کنند. همان‌طور که در آموزش مقدماتی قسمت ششم اعلام شد در این مقاله روش‌های پایه در خصوص تعامل و نحوه‌ی ارتباط بین کاربر با برنامه‌‌ توسط مورد بحث قرار خواهد گرفت.

فهرست محتوای این مقاله

گرفتن داده در پایتون:

با توجه به این‌که از چه نسخه‌ای از پایتون استفاده می‌کنید برای وارد کردن داده‌ها دو فرمان متفاوت وجود دارد. در پایتون ۲ و ۳ به ترتیب از توابع‌های زیر برای ورود داده استفاده می‌شود:

  • ()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 را تایپ و کلید اینتر را بزنید.

اگر مسیر محل فایل python.exe‌ در متغیر محیطی path در ویندوز تعریف نشده باشد با نوشتن واژه Python‌ در کنسول ویندوز و زدن کلید اینتر وارد کنسول پایتون نمی‌شود. برای حل مشکل، یا آن را در متغیر محیطی ویندوز وارد کنید یا باید دایرکتوری جاری محل فایل python.exe باشد.

کنسول پایتون به صورت زیر است:

ورودی و خروجی در پایتون

با نوشتن فرمان‌های پایتون و زدن کلید اینتر فرمان صادر شده توسط شما ترجمه و بلافاصله اجرا می‌شود.

گرفتن داده از کنسول در پایتون:

از طریق کنسول پایتون و با استفاده از تابع ()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 = ' ') 
Welcome to 7learn academy

اما، مثال دیگری که قابلیت این پارامتر را نشان می‌دهد در کد زیر مشاهده کنید:

# 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='@') 

7Learn

20-04-2020

[email protected]

جمع‌بندی

پایتون دارای کنسولی است که قادر است کلیه‌ی دستوراتی که در یک خط نوشته می‌شود را به‌طور آنی ترجمه و اجرا کند. داده‌ها را می‌توان به صورت منفرد در خطوط مجزا و یا چندین داده در یک خط وارد کرد. هنگام دریافت ورودی دادها را می‌توان به نوع صحیح، اعشاری و رشته‌ای تبدیل کرد. از لیست‌های جامع برای ورود چندین داده در یک خط استفاده می‌شود. تابع print()  به‌طور پیش‌فرض پس از چاپ به‌طور اتوماتیک به خط بعد منتقل می‌شود و برای تغییر این رفتار پیش‌فرض از پارامتر end می‌توان کمک گرفت. همچنین، به‌طور پیش‌فرض کاراکتری که فضای بین رشته‌ها را پر می‌کند کاراکتر فضای خالی است که می‌توان توسط پارامتر sep آن را تغییر داد. نحوه‌ی قالب‌بندی خروجی داده‌ها بسیار حائز اهمیت است که در مقاله بعدی مورد بحث قرار خواهد گرفت.

یادگیری زبان پایتون بسیار ساده است. و با شرکت در دوره‌ی متخصص پایتون توسعه وب درآینده می‌تونی اپلیکیشن موبایل و دستکتاپ بسازی و وارد حوزه‌ی هوش مصنوعی هم بشوی.

چه امتیازی به این مقاله می دید؟
نویسنده حسین ملهم
هر کس تو دنیا به چیزی حریص است. وقتی به زندگی خودم توجه کردم برام جالب بود، چون متوجه شدم به دوچیز حریص هستم آموختن و آموزش دادن، اگر زندگی تکراری داشته باشد دوباره همین مسیر رو میرم. بهترین لذت دنیا آگاهی یافتن و آگاهی دادن است.

نظرات کاربران

پدرام

تشکر از مقالتون
حالا که صحبت در مورد ورودی خروجی ها در پایتون بود
اگر در مورد انواع دیگر ورودی خروجی ها مثل فایل ها جریان های داده (stream) و پورت های شبکه و ورودی خروجی و دسترسی به پورت ها سخت افزاری و …. هم صحبت میکردید
که در پایتون چطور با اینها ارتباط برقرار کنیم خیلی کاملتر و جامعتر میشد

عبدالرضا مولایی

دوست عزیز، خوشحالیم که از مقاله راضی بودید… این سری مقالات آموزشی پایتون از صفر به صد است و در مورد مباحثی که نام بردید چون پیشرفته‌تر بوده، بعد به طور کامل توضیح داده خواهد شد.

Mdy79

ورودی

در تنها خط ورودی یک رشته می‌آید، که نشان دهنده‌ی کلمه ایست که سخنران گفته است. فرض کنید طول رشته n است.

خروجی

خروجی شامل n خط است که نشان‌دهنده‌ی کلماتی است که از بلندگو بیرون می‌آید.

مثال
ورودی نمونه ۱

golabi

خروجی نمونه ۱

golabi
oolabi
lllabi
aaaabi
bbbbbi
iiiiii

mehrad dadgar

چگونه میتوانیم در یک خط دو ورودی بگیریم که یکی از آنها عدد و دیگری رشته باشد

حسین ملهم

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

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :