표준입출력
콤마(,)로 구분하면 자동으로 띄어쓰기가 되고
플러스(+)로 구분하면 자동으로 붙여서 써지는데,
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} ... 소수점 아래 둘째자리까지만 표시