🔗 출처

📘 Python 계단밟기

제02장 두 번째 계단밟기

01. Python(파이썬) 표준 입출력

왜! 모든 프로그램은 배울 때, 처음에 출력문을 배우는 걸까?

▶ 컴퓨터로 작업을 지시하고 컴퓨터가 처리한 결과를 확인하기 위해서

▶ 출력을 어디로 할 것인가에 따라 프로그램이 변경된다.

▶ 출력 대상에 따라 다양한 출력이 생성된다.

출력하는 위치 출력 프로그램 명
콘솔(Console) 콘솔 어플리케이션(Console Application)
웹 브라우저(Web Browser) 웹 어플리케이션(Web Application)
스마트 기기 App(앱)
윈도우(Window) 윈도우 어플리케이션(Window Application)

 


1. Python(파이썬) 표준 출력

 

1.1. print 함수

 

사용법

  • print(출력 대상 1, 출력 대상 2....)
  • 출력 시, 출력 대상들의 사이에 구분자를 넣을 때는 sep를 기술한다. (기본값 : 공백)
  • 마지막 문자열을 출력하고 출력할 문자는 end를 기술한다. (기본값 : 줄 바꿈 문자)
  • 출력 방향을 변경할 때는 file을 기술한다. (기본값 : sys.stdout(표준 출력 장치, 모니터))
  • 스트림을 강제적으로 flush 할지를 지정할 때는 flush를 기술한다. (기본값 : False)
실행 값 입력
#  출력에 대하여 알아보자
print("하나","둘","셋",1,2,3) 

print("하나","둘","셋",1,2,3,sep='-') 

print("첫번째 값")
print("두번째 값") # 다른 줄에 출력

print("첫번째 값", end=" ---> ")
print("두번째 값") # 같은 줄에 출력
실행 결과
하나 둘 셋 1 2 3

하나-둘-셋-1-2-3

첫번째 값
두번째 값

첫번째 값 ---> 두번째 값

 

 

파일로 출력
# 출력 방향 변경
file = open("test.txt","w")
print("Hello Python!!", file=file) # 파일로 출력
file.close()
실행 결과
"text.txt" 파일로 생성되어 "Hello Python!!"이란 문자열이 저장되었음을 알 수 있다.

 


1.2. 문자열 출력

  • ('), (") 둘 중 하나를 사용하여 문자열 출력 가능하다.
  • 작은따옴표 안에 큰따옴표가 가능하다. (그 반대도 가능)
  • 큰따옴표 안에서 큰따옴표를 출력하려면 \"로 해야 한다.
  • 작은따옴표 안에서 작은따옴표를 출력하려면 \'로 해야 한다.
  • 동일한 문자열을 여러 번 출력 시, " * 횟수"를 사용한다.
실행 값 입력
print('Hello World!!')
print("Hello World!!")

print("나의 이름은 '한사람'입니다.")
print('나의 이름은 "한사람"입니다.')

print("나의 이름은 \"한사람\"입니다.")
print('나의 이름은 \'한사람\'입니다.')

print('-' * 40)
실행 결과
Hello World!!
Hello World!!

나의 이름은 '한사람'입니다.
나의 이름은 "한사람"입니다.

나의 이름은 "한사람"입니다.
나의 이름은 '한사람'입니다.

----------------------------------------

 


1.3. 확장 문자 출력

 

Python은 기본 확장 문자(escape sequence)를 지원한다.

▷ C언어를 쓸 때 자주 쓰는 거예요. 파이썬에선 안 써도 돼요

\' : 따옴표 문자
\" : 큰따옴표 문자
\ : backslash 문자
\a : bell 문자
\b : backslash 문자
\f : Formfeed 문자
\n : newline 문 \r : carriage return 문자(\n와 동일하지 않다.)
\t : tab 문자
\v : vertical tab 문자
  • ASCII 문자를 포함할 수 있는 확장 문자
    • 숫자 형식 (8진법과 16진법) 확장 문자(escape sequence)
    • Unicode 확장 문자(escape sequence)
    • 8진수 확장 문자(escape sequence)
    • 16진수 확장 문자(escape sequence)
  • 8진수 확장 문자(escape sequence)
    • backslash()와 세 자릿수 8진수 숫자를 사용한다.
  • 결과로는 8진수 확장 문자(escape sequence)에 해당하는 ASCII 문자가 출력된다.
  • 16진수 확장 문자(escape sequence)도 이와 비슷하지만 “\”가 아니라 “\x”로 시작되며, 16진수 숫자로 구성되는 점이 다르다.
  • 이 확장 문자(escape sequence)는 문자가 더 이상 16진수가 아닐 때 종료된다
    • 예를 들어
      • 문자 n은 ASCII 문자표에서 십진수 값 109이다. 이는 8진수로 하면 156이며 16진수로 하면 6E이다.

 

실행 값 입력
#  출력에 대하여 알아보자
print('Hello \tWorld!!')
print("Hello \nWorld!!")

print("나의 이름은 \"한사람\"입니다.")
print('나의 이름은 \'한사람\'입니다.')

print('-' * 40)

print('1 \n')
print('2 \012')
print('3 \x0A')

print('-' * 40)

print('n')
print('\156')
print('\x6E')

print('-' * 40)
실행 결과
Hello   World!!
Hello 
World!!

나의 이름은 "한사람"입니다.
나의 이름은 '한사람'입니다.

----------------------------------------

1 

2 

3 

----------------------------------------

n
n
n

----------------------------------------

 

  • Python 3 내의 모든 문자열은 Unicode 문자열(string)이다.
    • 모든 language에서 사용 가능한 대부분의 문자를 포함할 수 있다.

 


1.4. 형식에 맞추어 출력

 

데이터 형식에 맞추어 출력할 수 있다.

이것은 print 함수의 설명이라기보다는 문자열의 형식을 지정하는 방법이다.

형식화된 문자열로 만든 다음, 문자열을 출력하는 것이다.

 

  • 이전 방식 : "출력 형식"%(데이터....)
1. 출력 형식에 형식화된 문자열을 넣어 출력의 모양을 변경하는 것이다.
2. "% 형식문자"로 지정하면 % 뒤의 출력 대상들이 1:1로 대응되어 출력된다.
3. %s : 문자열, %d : 정수, %f : 실수 등이 있다.

예 1) %03d : "정수를 3칸에 맞추어 출력하는데 앞의 빈칸은 0으로 채워라"이다.
예 2) %6.2f : "실수를 전체 6칸 소수 이하 2칸에 맞추어 출력하라"이다.

 

  • 파이썬 3(Python 3) 포맷팅 방식 : "출력 형식".format(데이터....)
1. 출력 형식에 형식화된 문자열을 넣어 출력의 모양을 변경하는 것이다.
2. "{}" 지정하면 format에 기술한 출력 대상들이 대응되어 출력된다.
3. "{n}"안에 숫자를 지정하여 출력 대상의 위치를 지정할 수 있다.
4. 함수의 인자처럼 키워드를 사용해서 나타낼 수 있다.
5. 동일한 데이터를 여러 번 출력할 수 있다.

 

실행 값 입력
# 형식에 맞추어 출력하기

# 이전 방식
print('나의 이름은 %s입니다'%('한사람'))
print('나의 이름은 "%s"입니다. 나이는 %d세이고 성별은 %s입니다.'%('한사람',33,'남성'))
print('나이는 %d세이고 성별은 %s입니다. 나의 이름은 "%s"입니다. '%(33,'남성','한사람'))
print('나이는 %03d세이고 신장은 %6.2f입니다. 나의 이름은 "%s"입니다. '%(33,56.789,'한사람'))
print('-' * 40)

# 파이썬(Python) 3 포맷팅 방식
print('나의 이름은 {}입니다'.format('한사람'))
print('나의 이름은 "{0}"입니다. 나이는 {1}세이고 성별은 {2}입니다.'.format('한사람',33,'남성'))
print('나이는 {1}세이고 성별은 {2}입니다. 나의 이름은 "{0}"입니다. '.format('한사람',33,'남성'))
print('나이는 {age}세이고 성별은 {gender}입니다. 나의 이름은 "{name}"입니다. '
         .format(name='한사람',age=33,gender='남성'))
         
print('만세삼창 :  {0}!!! {0}!!! {0}!!! '.format('만세'))
print('삼삼칠 박수 :  {0}!!! {0}!!! {1}!!! '.format('짝'*3,'짝'*7))
print('-' * 40)
실행 결과
나의 이름은 한사람입니다
나의 이름은 "한사람"입니다. 나이는 33세이고 성별은 남성입니다.
나이는 33세이고 성별은 남성입니다. 나의 이름은 "한사람"입니다. 
나이는 033세이고 신장은  56.79입니다. 나의 이름은 "한사람"입니다. 
----------------------------------------
나의 이름은 한사람입니다
나의 이름은 "한사람"입니다. 나이는 33세이고 성별은 남성입니다.
나이는 33세이고 성별은 남성입니다. 나의 이름은 "한사람"입니다. 
나이는 33세이고 성별은 남성입니다. 나의 이름은 "한사람"입니다.

만세삼창 :  만세!!! 만세!!! 만세!!! 
삼삼칠 박수 :  짝짝짝!!! 짝짝짝!!! 짝짝짝짝짝짝짝!!! 
----------------------------------------

 


1.5. 문자열 앞 0으로 채우기 zfill()

 

지정한 길이만큼 공간을 확보하고 남는 앞부분을 "0"으로 채워준다.

길이가 문자열보다 적을 경우에는 모든 문자열을 출력한다.

 

실행 값 입력
# 형식에 맞추어 출력하기
#  앞의 빈칸 0으로 채우기
print('12'.zfill(5))
print('-12'.zfill(5))
print('3.141'.zfill(7))
print('-3.141'.zfill(7))
print('3.14159265359'.zfill(5))
print('-3.14159265359'.zfill(5))
print('문자열'.zfill(10))
print('문자열'.zfill(1))
print('-' * 40)
실행 결과
00012
-0012
003.141
-03.141
3.14159265359
-3.14159265359
0000000문자열
문자열
----------------------------------------

 

 

 

 

+ Recent posts