본문 바로가기

오늘의 공부/코딩테스트

[code up] 변수 출력하기

1. print 사용하기

 

print("어떤 문자열")

print(변수명)

 

print 함수를 사용하면 () 안의 내용을 출력할 수 있다.

print 함수 안에 여러 변수를 , 를 이용하여 나열하여 출력할 수 있다.

 

2. % : 형 변환하여 출력하기

print("나는 사과를 %d개 먹었다, %s " %(15, '굿') )

포멧을 지정하기 때문에 출력 형식도 정할 수 있다.

가령, float 의 경우

 

ani_float = 3.141592653
print("%f" %ani_float)  >> 3.141593 ..........소수점 아래 6자리 수까지 나온다.
print('%0.f' %ani_float) >> 3 ..........소수점 아래는 나오지 않는다.
print('%.3f' %ani_float) >> 3.142 ..........소수점 아래 3자리 수까지 나온다.
print('%.10f' %ani_float) >> 3.1415926530 ..........소수점 아래 10자리수까지 나온다.

 

문자에 자리를 할당할 수도 있다.

가령,

 

print("%d입니다." %ani_float)  >> 3입니다.  ..........(변수 길이에 딱 맞춰서 할당됨)
print("%5d입니다." %ani_float) >>      3입니다.  ..........(5자리가 할당됨)
print("%5d입니다." %ani_float) >>00003입니다.  ..........(5자리가 할당되며 빈 자리는 0으로 채워짐)

 

그러나...

%는 변수나 튜플 등 자료를 받아들일 때 불편하다.

name = ('j','c','k')
print("hi there %s" % name)

>> 출력: TypeError: not all arguments converted during string formatting

튜플을 받아오면 타입 에러가 뜬다.

Q. 왜 튜플은 str 포멧으로 컨버팅 할 수 없는가? 튜플은 불변성을 가지고 있기 때문인가?

 

따라서 다음과 같은 형식으로 바꿔줘야 한다.

name = ('k','l','p')
print("hi there %s" % (name,) )

>> 출력: hi there ('k', 'l', 'p')

 

3. {} .format () : 포멧을 지정하여 출력하기

반면 format 형식은 % 연산자와 같은 에러가 발생하지 않는다.

 

print('hi there {}'.format(name))

>> 출력: hi there ('k', 'l', 'p')

 

또한 {} 안에 숫자를 입력함으로써 변수의 순서를 마음대로 지정할 수 있다.

예) print( "{0}{1}{2}...{n}".format(index0, index1, index2, ..., indexn) )

 

print( 'hi there {0[0]} ,{0[1]} , {1} \n {0[2]}' .format( name, 'good!' ) )

>> 출력:

hi there k , l , good!
p

 

결론: format 을 이용한 출력이 더 세련됨!

 

여러개의 변수를 print 할 때, 변수 사이에 특정 문자 넣기 sep=

h,m = map(int,input().split(':'))

print('{}:{}'.format(h,m))
print(h, m, sep=':')