728x90
문자와 python
ord()를 통해, 문자를 아스키코드로 바꾼다.
대소문자를 서로 바꾸는 코드를 작성해보았다.
https://stackoverflow.com/questions/227459/how-to-get-the-ascii-value-of-a-character
How to get the ASCII value of a character
How do I get the ASCII value of a character as an int in Python?
stackoverflow.com
str = input()
result = ""
for s in str:
if(ord(s) <= 90):
result += s.lower()
else:
result += s.upper()
print(result)
근데 다른 사람 코드를 보니 신박한게 많다.
print(input().swapcase())
그냥 isupper() 메서드를 써도 될 것 같기는 하다.
str = input()
for i in str:
if i.islower():
print(i.upper(),end='')
else:
print(i.lower(),end='')
string 호출하는 경우도 있다.
import string
str = input()
for s in str:
if s in string.ascii_lowercase:
print(s.upper(), end = "")
else:
print(s.lower(), end = "")
특수문자 출력
조금 고민을 해보았다. r을 앞에 붙이면 python은 인식하는 것으로 보인다.
print(r'!@#$%^&*(\'"<>?:;')
raw 를 의미하는 r로, regex 에서 pattern 설정 시 escape 문자로 쓴다.
그 다음은 정석인 \ 백스페이스 문자를 추가한다.
str1='''!@#$%^&*(\\'"<>?:;'''
print(str1)
그렇게 마무리할 수 있다. Python은 생각보다 다양한 방법이 많다. 문자를 다루는 방법을 익숙해질 때까지 반복해야한다.
replace()의 함정: 앞자리부터
문제를 풀다가 특이한 경우를 발견한다.
answer = my_string.replace(my_string[s:s+len(overwrite_string)], overwrite_string, 1)
문제는 my_string에서 s번째 인덱스부터 overwrite_string으로 치환하는 문제다. 그런데 replace 메서드는 앞에서부터 찾아서 바꾸므로, 주어진 인덱스부터 바꾸는 것이 적용되지 않는 경우가 생긴다.
결국 하나씩 바꾼다.
def solution(my_string, overwrite_string, s):
answer = my_string[:s] + overwrite_string + my_string[s+len(overwrite_string):]
return answer
'코딩테스트 준비' 카테고리의 다른 글
공백없는 문자열 입력받아 출력하기 / 더 긴 문자열 (0) | 2024.10.18 |
---|---|
[PCCP 모의고사 1회] 1. 외톨이 알파벳 (0) | 2023.12.11 |
[Java] 파일 정리 (0) | 2023.06.19 |
[Java] 럭키 스트레이트 (0) | 2023.06.01 |
[Java] 서울에서 김서방 찾기 (0) | 2023.04.18 |