전전 공댕이의 공부 기록
[파이썬을 파이썬답게] Part 3. 문자열 정렬하기 (ljust, center, rjust), 알파벳 출력하기 (string 모듈) 본문
[파이썬을 파이썬답게] Part 3. 문자열 정렬하기 (ljust, center, rjust), 알파벳 출력하기 (string 모듈)
Ashton 2021. 10. 31. 18:283-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)로 정의해놓았다.
'Python > 알고리즘' 카테고리의 다른 글
[파이썬을 파이썬답게] Part 2. 몫과 나머지 (divmod), n진법 string을 10진법 숫자로 변환하기 (int) (0) | 2021.10.31 |
---|---|
[파이썬을 파이썬답게] Part 1. 시작! (0) | 2021.10.30 |
[프로그래머스 강의] 파이썬을 파이썬답게 수강 시작! (0) | 2021.10.27 |