apple = ("It is Apple")
index = apple.index("p")
print (index)
index = apple.index("p", index + 1)
print (index)
했을 때는 7 8 로 잘 인식되는데 index = apple.index("p") 이 문장을 지우면 오류 나더라고요
그래서 index = apple.index("p", index + 1) 이 코드 좀 설명해 주실 수 있나여?
apple = ("It is Apple")
index = apple.index("p")
print (index)
index = apple.index("p", index + 1)
print (index)
했을 때는 7 8 로 잘 인식되는데 index = apple.index("p") 이 문장을 지우면 오류 나더라고요
그래서 index = apple.index("p", index + 1) 이 코드 좀 설명해 주실 수 있나여?
인덱스 할당을 지우면 밑에 있는 얘가 인덱스가 뭔지 못알아먹음 인덱스 +1은 인덱스 +1 위치부터 p를 찾는거임
"It is Apple" 이라는 문자열이 저장된 메모리 주소를 apple에 저장함. apple.index의 .index()는 문자열의 인덱스를 찾는 기능을 수행하는 함수가 모든 문자열에 기본으로 달려있는거라 생각하면 됨. p가 들어있는 문자열 인덱스 값을 메모리에 집어 넣은 다음에 index라는 변수에 그 주소를 집어넣은게 둘째 문장이 수행하는 일임. 셋째문장의 print(index)를 수행하면 print 함수는 두번째 줄에서 생성한 index라는 변수에 담긴 주소를 참조해서 그 결과를 출력함. index라는 변수에 담긴 주소는 p가 들어있는 문자열 인덱스 값이 저장된 메모리를 가리키고 있으니까, print(index) 하면 문자열 인덱스 값이 나오겠지.
그런데 만약 둘째 줄을 지워버리면 셋째줄에서 'index'라는 변수가 가리키는 메모리로 가서 그 메모리에 있는 값을 print해라 라는 지시에서 'index'라는 변수를 설정한 적이 없으니까 에러가 나게 되겠지. 'index 라는 변수 없는뎁쇼? 하면서.
다시, 둘째 줄을 안지웠다고 생각하고, 계속해서 4째줄은, 2째줄의 index 변수가 가리키는 값에 1을 더한 값을 인덱스로 삼아서 거기서부터 'p'가 있는 인덱스를 검색하고, 찾은 인덱스 값을 메모리에 저장한 후에 그 메모리 주소를 다시 index라는 변수에 저장하라는 지시임.
그러면 전에 7이 저장된 메모리 주소가 저장되어 있던 index에는 이번에는 8이 저장된 메모리 주소가 저장되게 됨. index에 저장된 주소값이 바뀌는거지.
그러면 마지막에 print 주소가 출력할 값을 얻으러 index 변수를 보면 거기에는 8을 가리키는 메모리 주소가 있으니까 print 함수는 그 주소대로 메모리를 찾아가서 메모리 안에 있는 8 을 출력하는거지.
프로그래밍에서 자료형 같은걸 앞에서 다루는 이유가 있는것 같음. 자료구조 모르고 코딩을 어케해 컴퓨터가 하는 일은 결국에는 메모리 읽고 쓰고 메모리값 더하고 빼는건데.