24.1.15 문자열 가운데 정렬하기 관련 질문입니다.
, Kim Peter님이 작성안녕하세요?
책을 보던 중에 의문점이 생겨서 이렇게 질문을 올리게 되었습니다.
24.1.15 문자열을 가운데 정렬하기인 p. 335에서는 .center()를 적용하였을 때 만약 남는 공간이 홀수인 경우, 왼쪽 공간에 한 칸을 더 들어간다고 되어 있습니다.
예제의 경우에서도, 'python'.center(11)를 적용하였을때 남는 공백칸이 5칸이므로 왼쪽에 3칸, 오른쪽에 2칸을 분배하는데요.
제가 연습용으로 'cat'.center(6)를 적용해보았는데 이때에도 남는 공백칸이 3칸이라 왼쪽에 2칸, 오른쪽에 1칸이 나와야하는데 실제로 구동시켜봤을때는 왼쪽에 1칸, 오른쪽에 2칸이 나오네요.
혹시 책이 틀린것인지요? 필요할 것 같아 jupyter notebook으로 실행한 창의 캡쳐본도 함께 올립니다. 감사합니다.
Re: 24.1.15 문자열 가운데 정렬하기 관련 질문입니다.
, 도장_ 관리자님이 작성문자열을 가운데 정렬하는 코드를 구현할 때 발생하는 문제입니다.
문자열도 짝수, 자릿수도 짝수이면 정확하게 가운데 정렬을 할 수 있지만,
어느 한쪽이 홀수라면 비대칭적으로 채워지게 됩니다.
'aa'로 문자열이 짝수개이고, 채울 자릿수는 홀수개일 때
>>> 'aa'.center(3, '*')
'*aa'
>>> 'aa'.center(5, '*')
'**aa*'
>>> 'aa'.center(7, '*')
'***aa**'
문자열이 홀수개이고, 채울 자릿수가 짝수개일 때
>>> 'cat'.center(6, '*')
'*cat**'
>>> 'cat'.center(8, '*')
'**cat***'
왼쪽부터 채울 자릿수를 정할 때
7자리에 2글자를 채운다면 우선 7//2로 왼쪽에 채울 자릿수를 구해서 출력하고, 문자열을 출력하고, 나머지 빈칸이 오른쪽에 채워지게 될 겁니다.
>>> 7//2
3
6자리에 3글자를 채운다면 6//3으로 같은 방식으로 계산할 것입니다.
>>> 6//3
2
본문의 내용은 작가님의 검토를 거쳐 수정 반영하겠습니다.