다양한 출력 방법 2

다양한 출력 방법 1에 이어서 print 안에 사용하는 join에 대해 알아봅시다.

입출력

join

join 함수는 iterable(문자열, list, tuple, set, dict 등) 요소 사이에 문자열을 출력하는 방식입니다. 문자열의 경우에는 한 글자씩 분리되어 출력을 할 수 있습니다.

D = ['apple', 'banana', 'cherry']
print(' '.join(D))
# apple banana cherry

D = 'apple'
print(' '.join(D))
# a p p l e

위 코드는 ' '.join(D)로 따옴표 사이에 공백 한 칸을 넣었는데요. 이러면 자료구조면 각 요소 사이, 문자열이면 각 문자 사이에 공백을 한 칸씩 주어서 출력을 할 수 있게 해줍니다.

D = ['apple', 'banana', 'cherry']
print(', '.join(D))
# apple, banana, cherry

이렇게 다양하게 출력할 수 있습니다.

주의할 점은 요소들은 문자열이어야 한다는 것입니다. 요소 값에 int형이나 float형 같은 것이 있으면 오류를 출력하므로 문자열(str)로 변경해야 합니다.

우리가 여러개의 값을 input으로 입력 받을 때 map이라는 함수를 사용하는데, 여기서도 map이 사용됩니다.

이렇게 D배열에 있는 요소 값들을 str형으로 바꿀 수 있습니다.

for문을 돌려 반복한 횟수만큼 별을 만들어서 list에 저장해봅시다.

위와 같이 출력할 별들을 ans라는 리스트에 값을 저장할 수 있습니다. 출력할 때에는 엔터키인 줄 바꿈('\n')을 사용하여 출력하면 되겠습니다.

또 다른 문제를 풀어봅시다.

알파벳 소문자만 들어 있는 단어 S가 주어지는데, S에 들어간 알파벳이 각각 몇 개 들어가 있는지 출력하는 문제입니다.

일단 이 문제는 아스키 코드로 풀 수 있습니다. 하지만 아스키 코드를 2주차에 설명하기에는 너무 분량이 많은 것 같아서 잠깐 이용 방법만 알려드리려고 합니다.

아스키 코드는 컴퓨터가 0과 1로만 표현이 가능해서 문자를 읽지 못하기 때문에 각 문자를 숫자로 나타내는 방법입니다.

알파

아스키 코드

a

97

b

98

c

99

d

100

e

101

f

102

g

103

h

104

i

105

j

106

k

107

l

108

n

109

m

110

o

111

p

112

q

113

r

114

s

115

t

116

u

117

v

118

w

119

x

120

y

121

z

122

이렇게 a ~ z는 각각 97 - 122까지 매칭이 됩니다.

문자의 아스키 코드를 출력하는 함수는 ord()입니다. 반대로 아스키 코드를 문자로 변환하는 함수는 chr()입니다.

이 아스키 코드를 통해 리스트와 인덱싱을 이용하여 문제를 풀려고 합니다.

어떻게 적용하냐면 소문자 알파벳의 아스키 코드가 ord('a')-97 = 0, ord('b') - 97 = 1, ord('c') - 97 = 2, .... , ord('z') - 97 = 25 이렇게 연속적으로 이루어져 있으므로 길이가 26인 리스트를 이용하여 문제를 풀 수 있습니다. 그리고 for문을 이용해서 한 글자씩 문자를 입력 받아서 97을 빼주고 값을 처리해주면 되겠네요.

그다음엔 join을 이용하여 문자를 출력하면 됩니다. 각 요소 사이에 있는 문자는 공백이니 공백 한 칸을 넣어주면 되겠네요. 그리고 arr의 요소 값들은 int형이니까 str형으로 바꾸어주어야 합니다.

아스키 코드 문제는 4주차에 풀 예정이니 이렇게도 풀 수 있다는 것만 알아두세요! 아스키 코드는 나중에 배울 카이사르 암호(시저 암호) 문제를 풀 때도 쓰입니다.

현재 join을 이용할 문제가 공백이나 줄 바꿈을 출력할 문제밖에 찾을 수가 없네요. 줄 바꿈은 앞으로도 print로만 출력할 확률이 높은 것 같아서 공백만 출력하는 문제들만 모아보았습니다.

풀어볼 문제

Last updated