본문 바로가기

나도코딩 파이썬

[나도코딩 파이썬기초(6)] 표준 입출력 (줄바꿈, 좌우정렬, 숫자정렬, input, 숫자 3자리마다 콤마표시, 소수점 표시)

표준입출력

콤마(,)로 구분하면 자동으로 띄어쓰기가 되고

플러스(+)로 구분하면 자동으로 붙여서 써지는데,

sep=" ",를 통해 어떻게 띄어쓸지 정할 수 있다.

 

위 예시처럼 sep = ","를 입력하면 문자열 사이에 콤마가 입력된다.

 

end는 이전 함수 예시에서도 배웠듯이

줄바꿈 없이 사용할 수 있는 기능인데,

end="?" ... sep과 같이 다음 문장 사이에 무엇을 넣을지 정할 수 있다.

sep 으로 구분된 곳에는 콤마가

end 로 구분된 곳에는 물음표가 잘 출력된다.

 

sys

file = sys.stdout

file = sys.stderr

이렇게 입력한 뒤 디버깅을 해보면

 

VSC 터미널 상에서는 똑같이 출력된다.

 

그렇지만

stdout = "표준출력"

stderr = "표준에러"

로 출력되는 것이다.

 

우리가 로그 처리를 따로 한다고 할 때,

표준출력에서 출력되는 부분이라 따로 신경쓸 필요 없는데,

에러는 확인해서 수정해야한다.

필요하면 따로 에러처리를 해줄 수 있다.

 

=> 무슨 말인지 잘 모르겠으나 일단 패스

 

정렬

사전 (dictionary)을 먼저 선언해준 뒤

for 문으로 첫번째부터 마지막 값을 반복해서 print 해준다.

 

먼저 사전을 for 문으로 반복해서 호출하는 방법은

for key, value in dictionary.items():

 

이렇게 for 다음 key, value 변수 이름을 각각 정해서 입력해주고

in 사전명.items() 함수를 통해 각각의 key, value값을 불러올 수 있다.

 

print (subject, score)

이렇게 불러오면 각각의 key, value를 적어준다.

 

근데 key와 value가 각각의 영역에 정렬될 수 있도록

key는 왼쪽정렬, value는 오른쪽 정렬을 해주기 위해

 

ljust(8) ... 소문자 L + just (문자열갯수)

rjust(4) ... 소문자 R + just (문자열갯수)

 

이렇게 정렬해줄 수 있다.

여기서 value값은 int 이므로 str()로 자료형 변환을 해주어야한다.

 

또 sep ":"로 key와 value 사이를 구분해준다.

 

숫자정렬

for num in range(1,21)

1부터 20까지의 숫자가 쭉 뜨게 되는데,

한자릿수 숫자 앞에 00, 두자릿수 숫자 앞에는 0을 넣어서

001, 001, ... , 020 이렇게 나타내고 싶다.

 

.zfill(3)

=> 값이 없는 부분은 0으로 채운다는 뜻

=> 공간은 3칸.

 

표준입력 input

숫자 10을 입력했을 때

나도코딩이라는 문자열을 입력했을 때 모두

print가 잘 뜨는 것을 확인할 수 있다.

 

이 말인 즉...

input으로 입력하는 값은 항상 'string' 이라는 것이다.

 

다양한 출력포맷

위에서 왼쪽정렬, 오른쪽 정렬을 배웠다면

이번에는 자릿수를 정하고 빈 칸에 무엇을 넣을지도 정할 수 있다.

 

("{0: >10}".format(500)) 이라고 입력하면

해당 문자를 10칸의 공간에서 오른쪽 정렬을 하고

빈 칸은 공란으로 둘 수 있다는 의미이다.

 

("{0: >+10}".format(500) 이 위 코드와 다른점은

앞에 플러스 부호가 붙는다는 점이다.

음수를 입력하면 마이너스 부호가 붙는다.

 

"{0:_<10}".format(500)

왼쪽정렬은 오른쪽 정렬과 부호만 반대로 하면 되고,

빈 칸에 언더바처럼 다른 값을 넣어줄 수도 있다.

 

숫자 표시하기

세 자리마다 콤마를 찍어주려면

{0:,} 이렇게만 입력해주면 된다.

 

숫자 3자리마다 콤마 찍기는

이 출력포맷에서 가장 마지막에 위치한다.

 

즉 +부호, 자릿수, 사잇값 등을 입력하는 순서는

 

"0:^<+30,}" 과 같이..

사잇값 > 정렬방향 > 부호 > 자릿수 > 3자리 콤마

이 순서로 입력할 수 있다.

 

 

소수점 출력

{0:.2f} ... 소수점 아래 둘째자리까지만 표시