과제 중간에 간단한 출력 문제가 있어 정리함.

s = 'licat.jpeg'
print(s.split('.')[-1])
# 출력값: 'jpeg'

s = 'li.cat.png'
print(s.split('.')[-1])
# 출력값: 'png'

s.split('.')[-1] 은 문자열 s 에서 '.' 으로 구분하고, [-1] 때문에 뒤에 있는 문자열을 리턴한다.


s = 'licat.jpeg'
print(s[::-1].split('.')[0][::-1])
# 출력값: 'jpeg'

s = 'li.cat.png'
print(s[::-1].split('.')[0][::-1])
# 출력값: 'png'

s[::-1].split('.')[0][::-1]에서 s[::-1] 는 문자열을 뒤집어 gepj.tacil 로 만든다.
그 문장을 '.' 으로 구분하고, [0]으로 첫번째 gepj를 선택하고, [::-1] 로 다시 뒤집고 리턴한다.
이렇게 하는 이유는 아래 '.' 이 2개인 문자열에서 끝에 있는 확장자만 받고 싶어서 이다.


s = 'licat.jpeg'
print(s[s.rindex('.')+1:])
# 출력값: 'jpeg'

s = 'li.cat.png'
print(s[s.rindex('.')+1:])
# 출력값: 'png'

s[s.rindex('.')+1:] 에서 s.rindex('.')는 문자열에서 오른쪽 끝에 있는 '.'의 인덱스 값을 리턴한다.
'.' 뒤에 확장자만 받고 싶으니 +1 을 해주고, 거기서부터 문자열의 끝까지의 문자열을 리턴하면 확장자이다.
여기서도 오른쪽 끝에 있는 '.'의 인덱스 값을 가져오는 이유는 '.'이 2개 일때 끝에 있는 확장자만 받고 싶어서 이다.