문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
중요! 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야 합니다.
1. 처음에 한 것
def solution(s):
for index, i in enumerate(s):
if index % 2==0:
i.upper()
else:
i.lower()
return s
문제점
- i.lower()는 문자열 i를 변경하는 것이 아니라, 대문자 또는 소문자로 변환한 새로운 문자열을 반환합니다. 따라서 해당 결과를 따로 저장해주거나, 원래의 문자열 s를 업데이트해주어야 합니다.
def solution(s):
answer=[]
for index, i in enumerate(s):
if index % 2==0:
answer += i.upper()
else:
answer += i.lower()
return answer
문제점
def solution(s):
answer=""
for index, i in enumerate(s):
if index % 2==0:
answer += i.upper()
else:
answer += i.lower()
return answer
문제점
- 공백 기준이 아닙니다..
2. 정답
def solution(s):
answer=""
list=s.split(' ')
for k in list:
for i in range(len(k)):
if i%2==0:
answer+=k[i].upper()
else :
answer+=k[i].lower()
answer += ' '
return answer[:-1]
마지막에 불필요한 공백이 추가되기 때문에 [:-1]를 사용하면 마지막 문자(여기서는 공백일 수 있음)를 제외하고 반환하게 되어 마지막에 불필요한 공백이 포함되지 않도록 합니다.
enumerate() 함수
함수는 순서가 있는(iterable) 자료형(리스트, 튜플, 문자열 등)을 입력으로 받아, 각 요소와 그 요소의 인덱스를 순회 가능한 객체로 반환하는 파이썬 내장 함수입니다. 이 함수는 for 루프에서 유용하게 활용되며, 반복문을 통해 요소와 인덱스를 동시에 접근할 수 있게 해줍니다.
enumerate(iterable, start=0)
iterable: 순회 가능한 객체(리스트, 튜플, 문자열 등)
start: 인덱스 시작값을 지정할 수 있으며, 기본값은 0입니다.
간단한 예제입니다.
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(f"Index {index}: {fruit}")
Index 0: apple
Index 1: banana
Index 2: cherry
enumerate() 함수를 사용하면 반복문에서 인덱스와 요소에 동시에 접근할 수 있어 코드를 더 간결하게 작성할 수 있습니다.