문자열 회전, 아스키 코드

2022. 11. 10. 21:04파이썬(Python)

반응형

1. 문자열 밀기

- 문자열을 오른쪽으로 한 칸 밀어주기 => 가장 오른쪽에 있는 문자가장 왼쪽으로 온다.

- 예) apple -> eappl

s='apple'
print(s[-1]+s[:-1])

결과

eappl

Q) 문자열 회전하기

- 문자열을 입력

- 문자열을 출력 후 다음과 같은 과정을 실행

- 문자열을 오른쪽으로 한 칸씩 밀어서 결과를 출력

- 이 과정을 계속 반복하여 처음 입력한 문자열과 동일하면 출력하고 프로그램 종료

 

s=input()
print(s)
for _ in range(len(s)):
    s=s[-1]+s[:-1]
    print(s)

결과

>> apple
apple
eappl
leapp
pleap
pplea
apple

Q) 문자열 순환 프로그램

- 문자열과 자연수 n을 입력

- n개의 질문 입력

- 질문의 종류는 3가지

  - 1. Left : 가장 앞에 있는 문자를 가장 뒤로 옮긴다.

  - 2. Right : 가장 뒤에 있는 문자를 가장 앞으로 옮긴다.

  - 3. Reverse : 문자열을 좌우로 뒤집는다.

 

s,n=input().split()
n=int(n)

for _ in range(n):
    query=input()
    if query=='Left':
        s=s[1:]+s[0]
    elif query=='Right':
        s=s[-1]+s[:-1]
    elif query=='Reverse':
        s=s[::-1]
    print(s)

결과

>> abcd 4
>> Left
bcda
>> Left
cdab
>> Right
bcda
>> Reverse
adcb

Q) 규칙에 따른 문자열 순환

- 문자열과 명령을 입력

- 명령은 L 또는 R로 이루어진 문자열

- L : 왼쪽으로 한 칸 밀기

- R : 오른쪽으로 한 칸 밀기

- 명령에 따라 진행 후 최종 상태의 문자열을 입력

 

s=input()
q=input()

for i in q:
    if i=='L':
        s=s[1:]+s[0]
        print(f'L : {s}')
    elif i=='R':
        s=s[-1]+s[:-1]
        print(f'R : {s}')
print(s)

결과

>> abcdef
>> LLRLRRL
L : bcdefa
L : cdefab
R : bcdefa
L : cdefab
R : bcdefa
R : abcdef
L : bcdefa
bcdefa

 

2. 아스키코드 (ASCII)

- 아스키코드 : 파이썬 언어에서 사용할 수 있는 모든 문자들은 전부 하나의 숫자와 대응

- 알파벳 대문자와 소문자는 연속한 숫자들로 매칭

- 문자 'A'의 아스키코드 값이 65라면 문자 'B'의 아스키코드 값은 66이 된다.

- 특정 문자의 아스키코드 값은 ord() 함수를 이용

- 'A'의 아스키코드 값은 65이기 때문에 ord('A')는 65이다.

print(ord('A'))

>> 65

- 아스키코드 값을 알고 있을 때, 대응되는 문자를 알고 싶을 때 chr() 함수를 이용

print(chr(65))

>> A

Q) 다음 알파벳

- 소문자 알파벳을 입력하면 다음 알파벳을 출력

- z를 입력하면 처음으로 돌아가는 a 출력

 

a=input()

if a=='z': print('a')
else: print(chr(ord(a)+1))

결과

>> c
d

3. 대소문자 변환

3-1. 아스키코드 활용

- 대문자가 주어졌을 때, 소문자로 바꾸려 할 때

- 대문자가 알파벳 순서상 몇 번째인지 구함. (A를 0번째라 가정)

x='H'
print(ord(x))  # 72
print(ord(x)-ord('A'))  # 7

- 소문자로 변경하기 위해서는 소문자 'a'에 해당하는 아스키 번호를 더함.

- 소문자 아스키 번호를 구한 후, chr를 이용하여 문자로 변경

print(ord(x)-ord('A')+ord('a'))  # x의 소문자 아스키 번호 = 104
print(chr(ord(x)-ord('A')+ord('a')))  # 아스키 번호를 문자로 변환 h

 

대문자로 변환

x=input()

print(chr(ord(x)-ord('a')+ord('A')))

결과

>> y
Y

 

3-2. lower(), upper() 함수 사용

- lower : 문자열의 모든 문자들을 전부 소문자로 변경

- upper : 문자열의 모든 문자들을 전부 대문자로 변경

 

print('A'.lower())
print('a'.upper())

결과

a
A

4. 문자 판단

4-1. if문 사용

- 문자열끼리는 비교 가능

- 아스키코드 번호순으로 비교가 되기 때문.

 

x=input()

if x>='A' and x<='Z':
    print('Upper case')
elif x>='a' and x<='z':
    print('Lower case')

 

4-2. isalpha 

- 입력한 문자열이 알파벳이면 True, 아니면 False

- 입력한 문자열이 모두 알파벳이어야 한다.

- ab12는 숫자가 있기 때문에 False

 

print('a'.isalpha()) # True
print('ab'.isalpha()) # True
print('ab12'.isalpha()) # False

 

4-3. isdigit 

- 입력한 문자열이 숫자이면 True, 아니면 False

- 입력한 문자열이 모두 숫자여야 한다.

print('1'.isdigit())  # True
print('123'.isdigit())  # True
print('12ab'.isdigit())  # False

Q) 대소문자 바꾸기

- 문자열을 입력하면 대문자는 소문자소문자는 대문자로 바꾸어 출력

- 숫자, 특수기호는 그대로 출력

 

s=input()
new_s=''

for elem in s:
    if elem>='a' and elem<='z':
        new_s+=elem.upper()
    elif elem>='A' and elem<='Z':
        new_s+=elem.lower()
    else:
        new_s+=elem
print(new_s)

결과

>> TomBoy123@Gmail.Com
tOMbOY123@gMAIL.cOM

 

'파이썬(Python)' 카테고리의 다른 글

[Python] 함수 - 기본 사용법 및 출력  (0) 2022.12.29
문자열 변환  (0) 2022.12.24
문자열 문제풀이2  (0) 2022.11.09
문자열 문제 풀이  (0) 2022.11.08
문자열  (0) 2022.11.03