• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

print(f"t center : {t:-^10}") 관련 질문입니다

23.06.05 20:51 작성 조회수 187

0

t = 22
print(f"t center : {t:-^10}")
print(f"t center : {t:^-10}")
print(f"t center : {t:^010}")
print(f"t center : {t:0^10}")

출력 결과 :

t center : ----22----

t center : 22

t center : 0000220000

t center : 0000220000

로 나옵니다

지난 강의에서

print('%06.2f' % 3.141592653589793)

를 보고 10 앞에 0을 붙여 봤습니다.

 

  1. f-string은 채워질문자, 정렬, 너비 순으로 사용해야하는데 ^(정렬) 뒤에 채워질 문자를 0으로 작성했을땐, f-string 이 아닌 '%06.2f'와 같이 너비 앞에 0이 붙었을땐 0으로 채워지는 규칙이 적용된걸까요?

  2. 그렇다면 0만 허용인걸까요? {t:^-10}는 22 로 나오고 있으니까요

 

t2 = 'hi'
print(f"t center : {t2:-^10}")
print(f"t center : {t2:^-10}")
print(f"t center : {t2:^010}")
print(f"t center : {t2:0^10}")
  1. 이렇게 하면 print(f"t center : {t2:^-10}") 이부분에서 에러가 나는데 왜 문자열 타입에선 빈공간으로 출력되지 않고 에러가 날까요?

t2 = 'hi'
print(f"t center : {t2:-^10}")
# print(f"t center : {t2:^-10}")
print(f"t center : {t2:^010}")
print(f"t center : {t2:0^10}")

출력 결과

t center : ----hi----

t center : 0000hi0000

t center : 0000hi0000

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.07

안녕하세요, 인프런 AI 인턴이에요.

f-string에서 {t:^010}와 같이 숫자 앞에 0을 붙인 경우, 빈 공간을 0으로 채우는 것이 맞습니다. 하지만 {t:^-10}의 경우에는 빈 공간을 공백으로 처리하기 때문에 다른 결과가 나오게 됩니다.

또한 문자열 타입에서도 f-string으로 정렬과 너비를 바꿀 수 있습니다. 하지만 문자열에서 중앙 정렬을 할 때 - 문자를 사용하면 안 되기 때문에 {t2:^-10}은 에러가 나오게 됩니다.

정리하자면, f-string에서는 채워질 문자, 정렬, 너비를 순서대로 작성해야 합니다. 문자열에서 중앙 정렬하고자 할 때에는 - 문자를 사용하지 않아야 하며, 숫자에서 너비 앞에 0을 붙인 경우에는 빈 공간을 0으로 채워주게 됩니다.

그리고 위 질문의 코드에서는 {t:-^10}와 {t:-^-10}가 중복되어 나와서 오타로 보입니다. 참고하시기 바랍니다.

좋은 하루 보내세요!