본문 바로가기

Python/파이썬 기초

입력과 출력-1

반응형

코딩할 때 실행한 결과를 화면이나 파일로 출력해야 할 때가 있습니다. 또한 입력을 키보드로 받거나 파일에 있는 데이터를 읽어서 처리해야 할 때도 있습니다. 이번 장에서는 파이썬으로 코드를 작성할 때 키보드와 화면으로 입출력하는 방법을 살펴보겠습니다.

 

화면 출력

작성한 코드의 결과를 확인하는 가장 기본적인 방법은 결과를 화면으로 출력하는 것입니다. 파이썬에서는 print()함수를 이용해 원하는 내용을 화면으로 출력할 수 있습니다. print() 함수에는 출력 형식을 지정하지 않는 기본출력 방법과 다양한 형식으로 출력할 수 있는 형식 지정 출력방법이 있습니다. 이 두 가지 방법에 대해 모두 알아보겠습니다.

 

기본 출력

먼저 print() 함수의 기본 출력 방법을 이용해 문자열과 숫자를 출력하는 방법을 알아보겠습니다. 문자열을 출력하려면 앞에서도 살펴봤듯이 문자열을 print() 함수 안에 넣으면 됩니다.

In : print("Hello Python!!")

Out : Hello Python!!

 

 

문자열 여러 개를 연결해 출력하려면 문자열을 콤마(,)로 구분하고 연속해서 입력합니다. 콤마로 구분하면 출력에서 자동으로 빈칸(공백)이 하나씩 들어갑니다.

In : print("Best","python","book")

Out : Best python book

 

 

만약 빈칸 대신 다른 문자열을 넣으려면 print() 함수 안에 두 문자열 사이의 구분하는 값을 설정하는 sep 인자를 이용합니다. print() 함수에서 sep 인자를 지정하지 않으면 기본적으로 빈칸이 들어갑니다. 빈칸을 다른 문자열로 바꾸려면 'sep=문자열'을 추가합니다.

In : print("Best","python","book", sep="-:*:-")

Out : Best -:*:- python -:*:- book

 

 

위의 결과에서 sep 인자에 지정한 문자열(-:*:-)로 입력한 세 개의 문자열이 연결돼 출력됐습니다. 만약 빈칸 없이 두 문자열을 연결하려면 콤마 대신 더하기 연산자를 이용합니다.

In : print("abcd"+"ef")

Out : abcdef

 

 

변수에 저장된 내용을 출력하려면 print() 함수에 변수를 인자로 넣습니다. 단, 변수 이름을 이용해 출력할 때는 따옴표가 없어야 합니다.

In : x=10

    print(x)

Out : 10

 

 

문자열과 숫자를 함께 출력하려면 둘을 콤마로 구분해서 print()함수의 인자로 넣습니다. 문자열과 문자열은 더하기 연산자로 공백 없이 연결해서 출력할 수 있지만 문자열과 숫자는 더하기 연산자로 연결할 수 없습니다.

In : name="James"
     ID_num=789
     print("Name:",name+",","ID Number:",ID_num)
Out : Name: James, ID Number: 789

 

 

지금까지 print() 함수를 이용해 문자열을 출력할 때 결과가 한 줄씩 출력됐습니다. 만약 print() 함수를 하나만 이용해서 문자열을 여러 줄로 출력하려면 어떻게 할까요? 문자열 안에 줄 바꿈 표시인 개행문자(\n)를 입력하면 출력할 때 줄이 바뀝니다.

In : print("James is my friend. \nHe is Korean.")
Out : James is my friend
       He is Korean.

 

 

개행문자(\n)를 하나 더 추가하면 다시 줄 바꿈을 합니다. 따라서 다음처럼 개행문자(\n)를 두 개 입력하면 줄 바꿈이 두 번 발생해 한 줄을 띄우게 됩니다.

In : print("James is my friend. \n\nHe is Korean.")
Out : James is my friend

       He is Korean.

 

 

줄을 바꿔서 출력해야 할 때도 있지만 줄을 바꾸지 않고 출력해야 할 때도 있습니다. 파이썬 print()함수는 기본적으로 다음 출력을 위해서 줄을 바꿔 놓으므로 다음처럼 print() 함수를 두 개 사용해 문자열을 출력하면 두 줄로 출력됩니다.

In : print("Welcome to")
     print("python!")
Out : welcome to 
       python!

 

 

이처럼 두 줄로 출력된 결과를 한 줄로 출력하려면 print() 함수 안에 라인 끝의 값을 지정할 수 있는 end 인자를 추가합니다. print() 함수에서 end 인자를 지정하지 않으면 기본적으로 라인 끝에 개행문자(\n)가 들어갑니다. 개행문자(\n) 대신 다른 문자열을 입력하려면 'end=문자열' 형태로 end 인자에 다른 값을 넣습니다. 따라서 다음 예제처럼 print() 함수 안에 『end=" "』를 추가하면 라인 끝에 어떤 문자도 넣지 않았으므로 그 다음 print() 함수를 실행하면 줄 바꿈 없이 연결되어 출력됩니다.

In : print("Welcome to",end=" ")
     print("python!")
Out : Welcome to python!

 

 

형식 지정 출력

파이썬의 print() 함수에서 문자열에 데이터가 출력될 위치와 형식을 지정하는 방식으로도 데이터를 출력할 수 있습니다. 데이터의 출력 형식을 지정하는 방법으로 파이썬 버전 2.x와 3.x에서 모두 이용할 수 있는 나머지 연산자를 이용하는 방법과 버전 3.x에서만 지원되는 형식 지정 문자열을 이용하는 방법이 있습니다.

 

나머지 연산자(%)를 이용한 형식 및 위치지정

나머지 연산자는 print() 함수에서 데이터의 출력 형식과 위치를 지정할 때도 사용합니다. 이 방법은 파이썬 2.x 버전에서부터 이용한 방법입니다. 파이썬 3.x에서는 좀 더 유연하게 문자열 형식을 지정할 수 있는 'string.format()' 방법이 있기에 나머지 연산자를 이용한 출력 방법은 간단히 알아보겠습니다.

 

print() 함수에서 나머지 연산자를 이용해 데이터의 출력 형식과 위치를 지정하는 기본 구조는 다음과 같습니다.

print("%type"%data)

 

 

위의 print() 함수의 인자에는 두 개의 %가 있습니다. 첫 번째는 따옴표로 둘러싼 문자열  '%type'에서 사용했고 두 번째는 '%data'에서 사용했습니다. 여기서 따옴표와 '%data'사이에 콤마가 없고 공백이 있다는 점에 유의하시길 바랍니다. 또한 '%type'은 data 형식에 따른 다른 값을 지정해야 합니다. data가 문자열이면 %s를, 정수이면 %d(혹은 %i)를, 실수이면 %f(혹은 %F)를 지정합니다. 실수의 경우 %f로 표시하면 기본적으로 소수점 6자리까지 출력합니다.

 

data가 두 개 이상이면 따옴표로 둘러싼 문자열 안에 data의 개수에 맞게 '%type'를 순서대로 입력하고 튜플 형식으로 data를 묶어서 이용합니다. 다음은 print() 함수에서 data가 두 개일 때 나머지 연산자를 이용해 data를 출력하는 형식과 위치를 지정하는 구조의 예입니다.

print("%type%type"%(data1,data2))

 

 

다음은 %s를 이용해 문자열을 대입한 변수를 출력한 예입니다.

In : name="광재"
     print("%s는 나의 친구입니다." %name)
Out : 광재는 나의 친구입니다.

 

 

위의 출력 결과에서  %s 자리에 변수 name에 할당된 문자열이 출력됐습니다.

 

다음은  %d와 %f를 이용해 정수와 실수를 출력한 예입니다.

In : r=3
     PI=3.14159265358979
     print("반지름:%d, 원주율:%f" %(r,PI))
Out : 반지름:3, 원주율:3.141593

 

 

위의 출력 결과에서 %d 자리에 변수 r에 할당된 정수가, %f 자리에 변수 PI에 할당된 실수가 각 형식에 맞게 출력된 것을 볼 수 있습니다. 여기서 실수의 경우는 소수점 6자리까지만 출력된 것을 볼 수 있습니다.

 

 

형식 지정 문자열에서 출력 위치 지정

다음으로 출력 양식을 좀 더 자유롭게 표현할 수 있는 형식 지정 문자열을 이용하는 방법을 살펴보겠습니다. print() 함수에서 'string.format()'을 이용하는 형식 지정 문자열의 기본 구조는 다음과 같습니다.

pirnt("{0} {1} {2} … {n}".format(data_0, data_1, data_2, …, data_n))

 

 

여기서 {N}의 N은 0부터 시작하는 숫자로 format()에서 데이터의 위치(0부터 시작)를 의미합니다. 이처럼 형식을 지정하면{N}에는 format()에서 N에 해당하는 위치의 데이터가 들어가서 출력됩니다.  예를 들어, {0}에는 data_0가 출력되고 {1}에는 data_1이 출력됩니다. 그리고 {n}에는 data_n이 출력됩니다.

 

다음은 형식 지정 문자열의 구조인 'string.format()'으로 데이터를 출력한 예입니다.

In : animal_0="cat"
     animal_1="dog"
     animal_2="fox"

     print("Animal: {0}".format(animal_0))
     print("Animal: {0},{1},{2}".format(animal_0, animal_1, animal_2))

Out : Animal: cat
       Animal: cat,dog,fox

 

 

위의 결과에서 지정한 순서대로 데이터가 잘 출력됐습니다. 다음과 같이 {N}의 위치를 변경하면 데이터의 위치를 변경할 수 있습니다.

In : print("Animal: {1},{2},{0}".format(animal_0, animal_1, animal_2))
Out : Animal: dog,fox,cat

 

 

위의 코드에서는 '{1},{2},{0}'는 format()안의 변수를 '두 번째, 세 번째, 첫 번째' 순서로 출력하라는 의미입니다. 결과를 보면 지정한 순서대로 출력된 것을 볼 수 있습니다. 또한 format() 안에 데이터의 내용 중 일부만 출력할 수도 있습니다.

 

다음의 예를 살펴보겠습니다.

In : print("Animal: {0},{2}".format(animal_0, animal_1, animal_2))
Out : Animal: cat, fox

 

 

위의 출력된 결과를 보면 첫 번째와 세 번째 데이터만 출력된 것을 볼 수 있습니다.

 

앞에서는 {N}으로 format() 안의 데이터 순서를 지정했습니다. 그런데 만약 format() 안의 데이터를 순차적으로 지정하려면 {N}에 N 없이 {}만 써도 됩니다.

 

다음은 세 개의 {}를 이용해 데이터를 순서대로 출력한 예입니다.

In : print("Animal: {},{},{}".format(animal_0, animal_1, animal_2))
Out : Animal: dog,fox,cat

 

 

지금까지 'string.format()' 방식을 이용해 문자열을 출력하는 방법을 살펴봤습니다. 문자열뿐만 아니라 정수나 실수도 'string.format()' 방식을 이용해 출력할 수 있습니다. 기본 출력 양식을 그대로 이용하면 출력 형식을 별도로 지정하지 않아도 됩니다. 단지 {N}를 이용해 변수를 출력할 위치만 지정하면 됩니다.

 

다음 예를 살펴보겠습니다.

In : name="Tomas"
     age=10
     a=0.1234567890123456789
     fmt_string="String: {0}.Integer Number: {1}.Floating Number: {2}"
     print(fmt_string.format(name, age, a))
Out : String: Tomas. Integer Number: 10. Floating Number: 0.12345678901234568

 

 

위의 코드는 지금까지 출력한 방법과 다르게 print() 함수에서 이용할 문자열을 fmt_string 변수에 대입한 후 이를 이용했습니다. 위에서처럼 {N}으로 데이터의 출력 위치만 지정하면 변수의 데이터 타입을 지정하지 않아도 데이터의 타입에 따라 자동으로 알아서 출력해줍니다. 실수의 경우 기본적으로 소수점 17자리까지 표시됩니다. 그 이상의 소수점 숫자는 반올림돼 출력됩니다.

 

 

 

                                       출처 : 데이터분석을 위한 파이썬 철저 입문 中

반응형

'Python > 파이썬 기초' 카테고리의 다른 글

함수-1  (0) 2020.01.23
입력과 출력-2  (0) 2020.01.22
제어문-2  (0) 2020.01.21
제어문-1  (0) 2020.01.20
변수와 자료형-4  (0) 2020.01.19