전전 공댕이의 공부 기록

[파이썬을 파이썬답게] Part 3. 문자열 정렬하기 (ljust, center, rjust), 알파벳 출력하기 (string 모듈) 본문

Python/알고리즘

[파이썬을 파이썬답게] Part 3. 문자열 정렬하기 (ljust, center, rjust), 알파벳 출력하기 (string 모듈)

Ashton 2021. 10. 31. 18:28

3-1 문자열 정렬하기 (ljust, center, rjust)

3-2 알파벳 출력하기 (string)


3-1 문자열 정렬하기 (ljust, center, rjust)

문제 설명
문자열 s와 자연수 n이 입력으로 주어집니다. 문자열 s를 좌측 / 가운데 / 우측 정렬한 길이 n인 문자열을 한 줄씩 프린트해보세요.

 

제한조건

  • s의 길이는 n보다 작습니다.
  • (n - s의 길이)는 짝수입니다.
  • s는 알파벳과 숫자로만 이루어져 있으며, 공백 문자가 포함되어있지 않습니다.

예시

입력: abc 7

출력: 

abc      
   abc   
      abc


My Solution

s, n = input().strip().split(' ')
n = int(n)
lens = len(s)
# left
line1 = s + " "*(n-lens)
print(line1)
# middle
border = int((n-lens)/2)
line2 = " "*border + s + " "*border
print(line2)
# right
line3 = " "*(n-lens) + s
print(line3)

처음에는 조금 답답했지만, 이전 포스트에서 다시금 복습했던 string은 항상 더할 수 있다는 점을 이용해서

직접 그냥 string으로 입력을 했다.

분명 파이썬 배울 때 초반에 이거 배웠는데..무슨 align하는 함수같은 게 있었는데..

생각이 안 나는 바람에ㅠㅠㅠ 막 머릿속에서 => <= 이렇게 잠깐 떠올랐다가 정확한 문법이 기억나지 않아 그냥 위와 같이 했다.


다른 방법

### 우측 정렬 예
s = '가나다라'
n = 7

answer = ''
for i in range(n-len(s)): # 문자열의 앞을 빈 문자열로 채우는 for 문
    answer += ' '
answer += s

막상 보니까 아 이렇게도 할 수 있겠구나 싶었지만

개인적으로 내 방법이 더 짧고 간단한 것 같아 마음에 들었다. ㅎㅎ


더 파이썬다운 방법

s = '가나다라'
n = 7

s.ljust(n) # 좌측 정렬
s.center(n) # 가운데 정렬
s.rjust(n) # 우측 정렬

역시..함수가 따로 있었다.

ljust, center, rjust

- ljust -> 왼쪽으로 정렬

- center -> 가운데로 정렬

- rjust -> 오른쪽으로 정렬 

 

( ) 안에 변수 하나만 주면 그 수만큼 칸을 비워놓지만, (= space로 채움)

나머지 칸이 빈 space가 아니라, 다른 문자로 채우고 싶다면 그 문자를 같이 ( ) 안에 넣으면 된다.

ex) str.ljust(10, '!')


3-2 알파벳 출력하기 (string 모듈)

문제 설명
입력으로 0이 주어지면 영문 소문자 알파벳을, 입력으로 1이 주어지면 영문 대문자 알파벳을 사전 순으로 출력하는 코드를 짜세요.

 

예시

입력: 0

출력: abcd...(중간생략)..xyz


My Solution

num = int(input().strip())

if num == 0:
    x = "abcdefghijklmnopqrstuvwxyz"
    print(x)
elif num == 1:
    x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    print(x)

진짜 이렇게 풀고 싶지 않았지만ㅜㅠㅠㅠㅠ

약간 다르게 이렇게도 풀어봤다! 거의 똑같지만ㅎ..

num = int(input().strip())
x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
if num == 0:
    x=x.lower()
    print(x)
elif num == 1:
    print(x)

더 파이썬다운 방법

import string 

string.ascii_lowercase # 소문자 abcdefghijklmnopqrstuvwxyz
string.ascii_uppercase # 대문자 ABCDEFGHIJKLMNOPQRSTUVWXYZ
string.ascii_letters # 대소문자 모두 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
string.digits # 숫자 0123456789
import string

string을 import해오면 아래와 같은 함수들을 쓸 수 있다.

- .ascii_lowercase -> abcdefghijklmnopqrstuvwxyz

- .ascii_uppercase -> ABCDEFGHIJKLMNOPQRSTUVWXYZ

- .ascii_letters -> abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

- .digits -> 0123456789

파이썬에서는 모든 소문자, 대문자, 대소문자 알파벳, 그리고 0~9 숫자 데이터를 상수(constants)로 정의해놓았다.