upper(): 문자열을 모두 대문자로 바꿈
lower(): 문자열을 모두 소문자로 바꿈
str = "AbCdEf"
str.upper() # ABCDEF
str.lower() # abcdef
isupper(): 문자열이 모두 대문자이면 True, 아니면 False 반환
islower(): 문자열이 모두 소문자이면 True, 아니면 False 반환
아래의 코드는 결과값으로 모두 False를 반환한다. 이유가 무엇일까?
str = "aBCdEf"
str.islower() # False
str.isupper() # False
isupper(),islower() 두 함수는 문자열이 "모두" 소문자이거나 대문자 일 때에만 True를 반환한다.
하지만 위의 str은 대문자와 소문자가 섞여있어 False를 반환한 것이다.
그렇다면 아래의 코드 결과값은 어떻게 나올까?
str = "ABC123"
str.isupper()
str2 = "abc123"
str2.islower()
str, str2의 결과는 모두 True이다
그 이유는 두 함수 모두 숫자와 상관없이 알파벳이 소문자이냐 대문자이냐만 확인하기 때문에 두 결과 모두 True로 나오는 것을 확인할 수 있다.
그렇다면 대소문자가 섞여있는 문자열 중 대문자는 소문자로 소문자는 대문자로 변환할 때에는 어떻게 하는지 알아보자
str = "aBcDeF"
res = []
for s in str:
if s.isupper():
res.append(s.lower())
elif s.islower():
res.append(s.upper())
result = "".join(res)
print(result)
반복문으로 문자열 한글자 한글자에 접근하여 소문자인지 대문자인지 확인하고 대문자이면 lower()함수를 이용하여 소문자로 바꿔준 뒤 res 리스트에 추가 해주었고 반대로 소문자라면 upper() 함수를 이용하여 대문자로 바꿔준 뒤 res리스트에 추가 해주었다.
그리고 join() 함수를 이용하여 res 리스트에 있는 요소 하나하나를 result에 넣었고
결과로는 "aBcDeF" 문자열이 "AbCdEf"로 바뀐것을 확인할 수 있었다.