해결된 질문
작성
·
15
2
포맷팅 복습하다가 질문드립니다.
print('나는 {}호선을 타고 학교를 가'.format(6))
print('나는 {0}호선을 타고 학교를 가'.format(6))
동일한 출력 값인데,
{}안에 인덱스(위치 숫자)를 넣어주면 그 값이 들어가게 된다고 하셨는데 그럼..
print('나는 {1}차를 타고 학교를 가'.format('우리집'))
print('나는 {1}호선을 타고 학교를 가'.format(643))
이면
첫번째 줄은 포맷함수의 문자열의 인덱스 1번 위치인 리
두번째 줄은 포맷함수의 숫자열 인덱스 1번 위치인 4
가 각각 출력되어 중괄호 안에 들어가게 되나요?
답변 1
1
안녕하세요. 셀레나입니다.
포맷팅은 중요한 개념이죠! :) 열심히 복습도 하신다니 너무 멋지세요!! 언제나 응원합니다.
print('나는 {}호선을 타고 학교를 가'.format(6))
print('나는 {0}호선을 타고 학교를 가'.format(6))
두 줄 모두 "나는 6호선을 타고 학교를 가"
를 출력합니다.
{}
는 자동 인덱스(0
번),
{0}
은 명시적으로 0
번 인덱스를 사용한 거예요.
print('나는 {1}차를 타고 학교를 가'.format('우리집'))
이건 에러가 납니다.
.format('우리집')
은 인자 하나만 넘겼어요.
그런데 {1}
은 인덱스 1 를 참조하겠다는 의미예요.
하지만 인자는 하나밖에 없어서 IndexError
가 발생합니다.
오류를 해결하기 위해서는 {0}
은 인덱스 0 를 참조해주세요!
print('나는 {1}호선을 타고 학교를 가'.format(643))
이것도 마찬가지로 에러가 납니다. 643
은 하나의 인자일 뿐이고, 1번째 인덱스
는 없어요.
format()
에 넘긴 인자의 개수가 중괄호에서 참조하는 인덱스보다 적으면 에러가 납니다.
숫자 하나를 넘기더라도 {1}
은 1번째 인덱스를 찾으려고 하기 때문에, 문자열의 1번째 문자나 숫자의 1의 자릿수를 참조하는 게 아니에요.
단순히 인덱스 기준으로 format()
함수의 인수 리스트를 참조하는 겁니다.
print('나는 {1}호선을 타고 학교를 가'.format('우리집', 2))
# 출력: 나는 2호선을 타고 학교를 가
여기선 인자를 두 개 넘겼기 때문에 {1}
은 2
를 잘 참조할 수 있어요.
이해되실까요? :)
파이썬 공부 화이팅입니다!!!