find() 함수와 index() 함수는 기능이 비슷하지만, 찾는 문자가 문자열 안에 없는 경우에는 결과가 다르게 나옵니다. 문자열에 찾는 문자가 없을 때 find() 함수는 -1을 반환한 후 다음 문장을 실행합니다. 반면에 index() 함수는 오류(ValueError: substring not found, 문자열을 발견하지 못함)가 발생하면서 이후 문장을 수행하지 않고 프로그램을 종료합니다. 다음 코드를 봅시다.
python = "Python is Amazing"
find = python.find("n") # 처음 발견한 n의 인덱스
print(find) # 'Python'에서 n(인덱스 5)
find = python.find("n", find + 1) # 인덱스 6 이후부터 찾아 처음 발견한 n의 인덱스
print(find) # ' is Amazing'에서 n(인덱스 15)
find = python.find("Java") # Java가 없으면 -1을 반환(출력)한 후 프로그램 계속 수행
print(find)
index = python.index("n") # 처음 발견한 n의 인덱스
print(index) # 'Python'에서 n
index = python.index("n", index + 1) # 인덱스 6 이후부터 찾아 처음 발견한 n의 인덱스
print(index) # ' is Amazing'에서 n
index = python.index("n", 2, 6) # 인덱스 2부터 6 직전까지 찾아 처음 발견한 n의 인덱스
print(index) # 'thon'에서 n(인덱스 5)
index = python.index("Java") # Java가 없으면 오류가 발생하며 프로그램 종료
print(index)
실행결과 |
5 15 -1 5 15 5 ValueError: substring not found |