format 함수

- 문자열을 포매팅(formatting)하는데 사용

- 포매팅: 문자열의 원하는 위치에 특정 변수를 삽입

- 아래 예제를 보자

'이름:{},나이:{},성별:{}'.format('홍길동','21','남')
'이름:홍길동,나이:21,성별:남'

- 순서대로 홍길동, 21, {}에 삽입됨

- 구구단도 쉽게 출력할 수 있음

i = 2
for j in range(1, 10):
    print('{} X {} = {}'.format(i, j, i*j))
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18

[$\star$]소수점 자릿수 표현[$\star$]

- 알고리즘 문제를 풀다보면 특정 소수점 자릿수까지 출력을 요구할 때가 있음

- 계산 결과를 소수점 셋째 자리 까지 표현하려면?

a = 10
b = 3
a / b
3.3333333333333335

- 소수점 셋째 짜리 까지 표현하고 싶음

- format 함수 사용!

a = 10
b = 3
print('{:.3f}'.format(a / b))
3.333

- round 함수도 되는데?

- round(x, a) --> x를 소수점 a번째 까지 나타냄

a = 10
b = 3
round(a / b, 3)
3.333

- 아래와 같은 경우는?

a = 10
b = 2
a / b
5.0

- format 함수

a = 10
b = 2
print('{:.3f}'.format(a / b))
5.000

- round 함수

a = 10
b = 2
round(a / b, 3)
5.0

- format 함수는 소수점 셋째 자리까지 나타낸 반면 round 함수는 첫째 자리까지 나타냄

  • round 함수를 사용할 때 주의할 점

- 파이썬에서는 사사오입의 원칙을 따라 반올림할 자리가 5이면 반올림을 할 때 짝수면 내림, 홀수면 올림 한다

round(2.5)
2
round(-1.5)
-2

- 오사오입의 원칙으로 반올림 하려면? --> 함수를 따로 만들자

def round2(number):
    if number >= 0:
        if number - int(number) >= 0.5:
            a = 1
        else:
            a = 0
        return int(number) + a
    
    else:
        if int(number) - number > 0.5:
            a = -1
        else:
            a = 0
        return int(number) + a   
round2(2.5)
3
round2(-1.5)
-1

- 사사오입의 원칙으로 반올림을 하는 이유는 데이터의 대부분이 .5로 끝나는 자료라면 이를 반올림하면 0.5만큼의 오차가 생기기 때문

  • 결론: 원하는 자릿수 까지 나타내려면 round 함수 대신 format 함수를 쓰자

join 함수

- 문자열로 이루어진 리스트를 기준 문자열로 합쳐 문자열로 만듦

- '구분자'.join(list)

- 구분자에는 문자열, list에는 문자열을 원소로 가지는 리스트가 들어감

a = ['12', '45', '48']
'-'.join(a)
'12-45-48'
''.join(a)
'124548'

replace 함수

- 특정 문자를 다른 문자로 대체

- '문자열'.replace('기존 문자', '바꿀 문자')

a = 'hello world'
a.replace('h', 'H')
'Hello world'
a.replace('', '!')
'!h!e!l!l!o! !w!o!r!l!d!'

- 문자열에서는 빈칸도 하나의 문자로 취급

split 함수

- 문자열을 구분자를 기준으로 쪼갬

- '문자열'.split('구분자')

a = '!h!e!l!l!o! !w!o!r!l!d!'
a.split('!')
['', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '']

upper 함수

- 문자열에서 모든 소문자를 대문자로 바꿈

- '문자열'.upper('구분자')

a = 'hello world'
a.upper()
'HELLO WORLD'

str.isupper()

- str이 대문자로만 이루어져 있으면 True를 아니면 False를 반환

string = 'ABC'
string2 = 'AbC'
string.isupper()
True
string2.isupper()
False

lower 함수

- 문자열에서 모든 대문자를 소문자로 바꿈

- '문자열'.lower('구분자')

a = 'HELLO WORLD'
a.lower()
'hello world'

str.islower()

- str이 소문자로만 이루어져 있으면 True를 아니면 False를 반환

string = 'abc'
string2 = 'aBc'
string.islower()
True
string2.islower()
False

count 함수

- 문자열에서 특정 문자 or 문자열의 개수를 반환함

- '문자열'.count('찾는 문자', 시작 인덱스, 끝 인덱스)

- 시작 인덱스 $\leq$ 문자열 $<$ 끝 인덱스

a = 'HELLO WORLD'
a.count('L')
3
a.count('L', 0, 9)
2
a.count('L', 0, 10)
3

chr 함수

- 아스키 코드를 문자로 변환함

- chr(아스키코드)

- 아스키 코드 참고: https://ko.wikipedia.org/wiki/ASCII

chr(65)
'A'

ord 함수

- 문자를 아스키 코드로 변환함

- ord('문자')

ord('A')
65