인프런 커뮤니티 질문&답변

dentistjames님의 프로필 이미지
dentistjames

작성한 질문수

파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자

index 질문입니다

해결된 질문

작성

·

118

0

python = "Python is beautiful and amazing"
index = python.index("n")
print(index)
index = python.index("n", index + 1)
print(index)
이렇게 쓰면 첫번째 print는 첫번째 n이 어디 있는지 출력하고 그다음 식은
그다음 n이 어디에 있는지 나온다고 하셨잖아요. 그러면 첫번째 식은
python의 n을 출력하는거고 두번째 식은 and의 n을 출력하는 건데 그 다음에
amazing의 n은 몇 번째인지 어떻게 출력하나요?
제가
index = python.index("n", index + 2)
print(index)
이렇게 + 1을 + 2로 바꿔보았는데 그냥 똑같이 and의 n을 인식해서
출력하더라고요.. 그다음, 그러니까 세번째 n을 출력하려면 어떻게 해야 하나요?

답변 1

1

나도코딩님의 프로필 이미지
나도코딩
지식공유자

index 는 그 문자가 있는 위치를 반환해주고, index + 1 은 그 문자가 있는 위치 이후부터 그 문자가 있는 위치를 찾아줍니다.

그래서 3번째 나오는 n 을 찾으시려면 똑같은 코드를 한 번 더 적어주면 됩니다.

python = "Python is beautiful and amazing"

index = python.index("n")
print(index)
index = python.index("n", index + 1) # and 의 n
print(index)
index = python.index("n", index + 1) # amazing 의 n
print(index)

위 방법이 아니라면 별도의 함수를 만들어서 사용할 수도 있답니다.

# 주어진 문자열(haystack)에서 찾으려는 문자(needle)가 몇 번째(n) 있는지 확인
def find_nth(haystack, needle, n):
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+len(needle))
        n -= 1
    return start

python = "Python is beautiful and amazing"
# 1, 2, 3 번째 n 값을 표시하려면
print(find_nth(python, "n", 1)) # python 의 n
print(find_nth(python, "n", 2)) # and 의 n
print(find_nth(python, "n", 3)) # amazing 의 n
dentistjames님의 프로필 이미지
dentistjames

작성한 질문수

질문하기