본문 바로가기
## 오래된 게시글 (미관리) ##/Python (Linux)

2. Python - print()

by #Glacier 2018. 11. 23.
반응형

오늘 알아볼 내용은 print()함수와 예제들입니다!


1. Print()함수

- print()함수는 상수, 변수, 수식 등의 값을 출력하기 위하여 사용합니다. 

  이때 양식(formatting)을 사용하는 출력은 C 언어 스타일(old style) 출력과 새로운 스타일(new style) 출력이 있다고 하네요~


  C언어 스타일 출력은 '%s %s'% ('one', 'two')와 같이 문자열에 양식문자 (%s,%r,%d,%f)등을 사용하고 %뒤에 

 하나의 값 또는 튜플을 사용하여 문자열 내에 있는 %기호 뒤의 양식 문자에  차례로 대응하여 문자열을 생성하는 방식입니다. 

 그리고 새로운 스타일은 str.format() 메소드로 양식을 지정합니다.


  print(*objects, sep=' ' , end='\n', file=sys.stdout, flush=False)


1. print()함수는 상수, 변수, 수식 등을 문자열 형태로 표준출력장치(sys.stdout) 또는 파일에 출력합니다. 

   objects는 출력할 가변 인수 객체로 tuple 자료형입니다.


2. 디폴트 인수는 sep=' ' , end='\n', file=sys.stdout 로 설정되어 인수들 사이에 공백이 출력되고, 

   마지막 줄에 줄이 바뀌고, 표준출력장치에 출력합니다.


## 예제 1


>>> print(1,2,3)
1 2 3
>>> print(1,2,3, sep=',')
1,2,3
>>> print(1,2,3, sep=',', end='?') ; print(1,2,3,sep=',', end='!')   #구분자 , 끝에? , ;는 이어서 쓸 때 씁니다.
1,2,3?1,2,3!
>>> print(1,2,3, sep=',', end='\n') ; print(1,2,3,sep=',', end='!') # 구분자는 , 로 동일하지만, 줄을 바꾸는 \n 사용.

1,2,3
1,2,3!


## 예제 2 - C언어 스타일 문자열 포맷팅


>>> "%s" % 10                  # "%s"%(10,)
'10'
>>> "%s %s" % (10, 3.14)
'10 3.14'
>>> "%x %x" % (10, 20)
'a 14'
>>> "%o %o" % (10, 20)
'12 24'
>>> "%d %d" % (10, 3.14)
'10 3'
>>> "%f %f" % (10, 3.14)
'10.000000 3.140000'
>>> "%s %s %s" % ('10', '20', '30')    #str()
'10 20 30'
>>> "%r %r %r" % ('10', '20', '30')     #repr()
"'10' '20' '30'"
>>> "%10s" %('abcd',)                     #우측정의
'      abcd'
>>> "%-10s" % ('abcd',)                  #좌측정의

'abcd      '

>>> "%*s" % (-10, 'abcd')               # %*에 -10 전달
'abcd      '
>>> "%.2s" % ('abcd',)                   # truncate
'ab'
>>> "%-10.2s" % ('abcd')
'ab        '
>>> print("%s" % 10)
10
>>> print("%s %s" % (10, 3.14))
10 3.14
>>> "%*s" % (10, 'abcd')
'      abcd'
>>> print(";%10s,%-10.2s" % ('abcd', 'efg'))
;      abcd,ef        
>>> print(";%10s,%-10.2s;" % ('abcd', 'efg'))
;      abcd,ef        ;


## 예제 3 - new style 문자열 포맷팅


>>> '{}, {}, {}'.format('a','b','c')
'a, b, c'
>>> '{0},{1},{2}'.format('a','b','c')
'a,b,c'
>>> '{2},{1},{0}'.format('a','b','c')
'c,b,a'
>>> '{0},{1},{1},{2}'.format('a','b','c')
'a,b,b,c'
>>> print('{0},{1},{1},{2}'.format('a','b','c'))
a,b,b,c
>>> point =(3,5)
>>> 'X:{0[0]}; Y:{0[1]}'.format(point)
'X:3; Y:5'
>>> print('X:{0[0]}; Y:{0[1]}'.format(point))
X:3; Y:5
>>> point=[3,5]  # list
>>> print('X:{0[0]}; Y:{0[1]}'.format(point))
X:3; Y:5
>>> "Hi, {0}:-{{}}".format('Kim')
'Hi, Kim:-{}'
>>> "Hi, {0[name]}".format(dict(name='Kim'))
'Hi, Kim'
>>> ";{0:8};".format('Hello')
';Hello   ;'
>>> "{0:{1}}".format('Hello', 10)
'Hello     ' 
>>> "{0!r:20}".format("Hello")   # !r:repr() 함수를 사용해 문자열로 변환
"'Hello'             "
>>> "{0!s:20}".format(3.14)      # !s : str() 함수를 사용해 문자열로 변환
'3.14                '
>>> '{:<20}'.format('left aligned')
'left aligned        '
>>> '{:>20}'.format('right aligned')
'       right aligned'
>>> '{:>020}'.format(123)
'00000000000000000123'
>>> '{:+f};{:+f}'.format(3.14, -3.14)
'+3.140000;-3.140000'
>>> '{:f};{:f}'.format(3.14, -3.14)
'3.140000;-3.140000'
>>> '{:-f};{:-f}'.format(3.14, -3.14)
'3.140000;-3.140000'


# 많이 복잡해 보입니다.. 실제로 치기도 어렵고 ㅋㅋㅋ 덧붙이는 설명은,

1. {{}}은 {}자체를 의미, {0[names]} 은 0번 인수의 name을 가리킵니다.


2. X:{0[0]} 에서 첫번째 0은 point, [0]은 3이다. Y도 비슷하게 보면 됩니다.


3. {:<20}은 20자리에 왼쪽 정렬을 의미합니다. >은 오른쪽 정렬을 의미하겠죠.

   {:*^20}은 20자리에 중간정렬, 빈 곳은 *로 채우는 것을 의미합니다.

   그렇다면 020은 빈자리에 0을 채워 넣는 것이겠죠..


4. {0:d}는 십진 정수, x는 16진수 정수, o는 8진 정수, b는 2진 정수를 명시합니다.


5. {:format_spec}의 출력양식 format_spec은 다음과 같이 정의됩니다.

 format_spec ::=[[fill]align][sign][#][0][width][,][.precision][type]


 1) []은 옵션을 의미.

 2) fill은 채울 문자를 지정

 3) align은 왼쪽 정렬"<" 오른쪽 정렬 ">", 가운데 정렬 "^"이 있다.

 4) sign은 부호 기호로, 모든 부호 기호 출력은 "+", 음수만 부호 출력은 "-" 등이 사용된다.

 5) #기호는 정수에서 type으로 16진수, 8진수, 2진수를 지정하면 0x, 0o, 0b 등을 출력한다.

     0은 빈곳을 0으로 채우기, width는 전체 출력 자릿수,

    precision은 소숫점 이하 자릿수이며 자료형 형식을 나타내는 문자로 문자열은 's',  

    정수는 'b','c','d','o','x','X' 등이 있으며 실수는 'e','E','f','F','g' 등이 있다.

    '%'를 사용하면 100을 곱하여 실수로 출력하고 퍼센트 기호를 붙인다.


하아 어렵네여; 이런 컴퓨터언어에 익숙치는 않아서 확실히 R이 더 쉬운 것 같아요.

화이팅.. 다음엔 불리안에 대해 알아볼게여.

반응형