일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- throws 키워드
- 99클럽
- 예외
- 항해99
- 개발자취업
- 코딩테스트준비
- 예외클래스
- til
- 다중 catch 블록
- 예외 처리
- 일반 예외
- try-catch-finally 블록
- 실행 예외
- 로켓펀치 #취준컴퍼니 #취업 #일상 #취준생
- Today
- Total
innn
숫자와 문자열의 다양한 기능 본문
문자열의 format() 함수
format() 함수로 숫자를 문자열로 변환하는 몇 가지 형태를 보자
format() 함수는 문자열이 가지고 있는 함수다. 중괄호 {}를 포함한 문자열 뒤에 마침표(.)를 찍고 format() 함수를 사용하는데, 중괄호의 개수와 format 함수 괄호 안 매개변수의 개수는 반드시 같아야 한다.
"{}".format(10)
"{} {}".format(10, 20)
"{} {} {} {}".format(101, 202, 303, 404, 505)
이러한 형태로 함수를 사용하면 앞쪽에 있는 문자열의 {} 기호가 format() 함수 괄호 안에 있는 매개변수로 차례로 대치되면서 숫자가 문자열이 되는 것이다.
format() 함수로 숫자가 문자열이 되는 과정을 살펴보자. 다음은 숫자 10이 문자열 중괄호 부분에 들어가 문자열 "10"이 되는 코드이다.
코드를 실행하니 숫자 10의 자료형은 문자열이 되었으며, string_a에는 문자열 10이 들어가 있음을 알 수 있다.
format이라는 함수는 {} 기호를 format의 괄호 안에 있는 매개변수로 대체하는 것뿐이기 때문에 {} 기호 앞뒤 혹은 {} 기호와 {} 기호 사이에 다양한 문자열을 넣을 수 있다.
이제 한 단계 더 나아가 {} 기호 양쪽에 다른 문자열을 같이 넣은 형태, {} 기호와 매개변수를 여러 개 넣은 형태를 실행해보자.
IndexError 예외
{} 기호의 개수가 foramt() 함수의 매개변수 개수보다 많으면 IndexError 예외가 발생한다. 아래의 예시에서 첫 번째 매개변수가 {}보다 많은 경우로 {} 개수만큼 적용되고 나머지 매개변수는 버려진다. 그래서 아무 문제 없이 실행되지만, {}가 매개변수보다 많아지면 IndexError 라는 예외가 발생한다.
format() 함수의 다양한 기능
format() 함수는 숫자와 관련해서도 다양한 기능을 가지고 있다.
정수 출력의 다양한 형태
format() 함수를 사용하면 출력할 정수에 기호를 넣어주거나, 숫자 형태를 다양하게 출력할 수 있다.
2행의 output_a는 {:d}를 사용했다. int 자료형의 정수를 출력하겠다고 직접적으로 지정하는 것이다. 따라서 {:d}를 사용했을 때는 매개변수로 정수만 올 수 있다.
5~6행의 output_b와 output_c는 특정 칸에 맞춰서 숫자를 출력하는 형태다. {:5d}라고 입력하면 5칸을 빈 칸으로 잡고 뒤에서부터 52라는 숫자를 채운다. {:10d}도 마찬가지로 10칸을 빈 칸으로 잡고 뒤에서부터 52라는 숫자를 채운다.
8~9행의 output_d와 output_e는 빈칸을 0으로 채우는 형태이다. {:05d}라고 지정하면 5칸을 잡고 뒤에서부터 52라는 숫자를 넣은 후, 앞의 빈 곳으 0으로 채운다. output_d는 양수, output_e는 음수인데, 부호가 있을 때는 맨 앞자리를 부호로 채우고 나머지 빈 곳을 0으로 채운다.
2~3행의 {:+d}처럼 d 앞에 + 기호를 붙이면 양수와 음수 기호를 표현할 수 있다. 이때 양수는 +기호로 표현된다. output_f의 출력 결과를 보면 쉽게 이해할 수 있다.
또는 4~5행의 {: d}처럼 앞에 공백을 두어 기호 위치를 비워 주면 함수에 입력한 기호가 표현된다. 52라는 숫자를 기호없이 넣었을 때 원래 "52"처럼 출력되었다면 output_h는 "52"로 출력된다.
기호와 공백을 조합할 때는 = 기호를 앞에 붙일 수 있따. 이는 5칸의 공간을 잡았을 때 기호를 빈칸 앞에 붙일 것인지, 숫자 앞에 붙일 것인지 정하는 기호이다. (결론 : = 을 붙이면 빈칸 맨 앞으로 기호가 감)
부동 소수점 출력의 다양한 형태
float 자료형 출력을 강제로 지정할 때는 {:f}를 사용한다.
추가로 부동 소수점의 경우는 소수점 아래 자릿수를 지정하는 기능이 있다. 다음 코드처럼 '.'을 입력하고 뒤에 몇 번째 자릿수까지 표시할지 지정하면 된다. 이렇게 입력하면 15칸을 잡고 소수점을 각각 3자리, 2자리, 1자리로 출력한다. 이때 자동으로 반올림도 일어난다.
의미없는 소수점 제거하기
파이썬은 0과 0.0을 출력했을 때 내부적으로 자료형이 다르므로 서로 다른 값으로 출력한다. 그런데 의미 없는 0을 제거한 후 출력하고 싶을 때가 있다. 이때는 {:g}를 사용한다.
대소문자 바꾸기 : upper()와 lower()
upper() 함수는 문자열의 알파벳을 대문자로, lower() 함수는 문자열의 알파벳을 소문자로 만든다.
아래는 upper() 함수의 예로, 변수 a에 저장된 문자열의 알파벳을 모두 대문자로 만든다.
다음은 lower() 함수의 예로, 변수 a에 저장된 문자열의 알파벳을 모두 소문자로 만든다.
>> upper() 함수와 lower() 함수를 사용하면 a의 문자열이 바뀌는 건 아니다. 절대로 원본은 변하지 않는다.
이렇게 원본을 변화시키지 않은 함수를 비파괴적 함수라고 부른다.
문자열 양옆의 공백 제거하기 : strip()
strip() 함수는 문자열 양옆의 공백을 제거한다. 예를 들어 페이스북 댓글을 입력할 때 입력실수로 " 안녕하세요 " 처럼 양쪽에 공백을 입력했다고 가정해보자. 이런 문자열이 그대로 옮겨서 달린다면 댓글창이 지저분해진다. 양옆의 공백을 지워서 "안녕하세요"라고 댓글이 입력되도록 만드는 데 활용한다.
왼쪽의 공백을 제거하는 lstrip() 함수와 오른쪽의 공백을 제거하는 rstrip() 함수도 있다. 이때 공백이란 '띄어쓰기', '탭', '줄바꿈'을 모두 포함한다.
위와 같은 의도하지 않은 줄바꿈 및 문자열 양옆의 공백은 strip() 함수로 쉽게 제거할 수 있다.
코드를 실행한 결과를 보면 공백 제거 이전에는 줄바꿈과 띄어쓰기가 들어갔지만, 공백 제거 이후에는 이러한 것들이 모두 사라지는 것을 볼 수 있다. 이러한 기능을 trim 이라고 부른다. 공백을 제거할 때는 strip 또는 trim을 활용한다고 기억하자.
>> lstrip() 함수와 rstrip() 함수는 거의 사용하지 않는다.
문자열의 구성 파악하기 : isOO()
문자열이 소문자로만 구성되어 있는지, 알파벳으로만 구성 되어있는지, 숫자로만 구성되어 있는지 등을 확인할 때는 is로 시작하는 이름의 함수를 사용한다.
출력은 True 또는 False라고 나오는데, 이를 불boolean이라고 부른다.
isalnum()은 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인하는 함수
isdigit()는 문자열이 숫자로 인식될 수 있는 것인지 확인하는 함수
문자열 찾기 : find()와 rfind()
문자열 내부에 특정 문자가 어디에 위치하는지 확인할 때 find() 함수와 rfind() 함수를 사용한다.
- find() : 왼쪽부터 찾아서 처음 등장하는 위치를 찾는다.
- rfind() : 오른쪽부터 찾아서 처음 등장하는 위치를 찾는다.
"안녕안녕하세요" 라는 문자열에는 "안녕"이라는 문자열 두 개가 있다. 따라서 왼쪽부터 찾았을 때와 오른쪽부터 찾았을 때의 위치가 다르다.
문자열은 가장 앞글자를 0번째라고 센다. 처음 "안녕"은 0번째 있는 것이고 두번째 "안녕"은 2번째부터 등장하는 것이다. 따라서 실행 결과로 0과 2가 나온 것이다.
문자열과 in 연산자
문자열 내부에 어떤 문자열이 있는지 확인하려면 in 연산자를 사용한다. 출력은 True(맞다) 또는 False(아니다)라고 나온다.
다음 예제에서 볼 수 있듯이 단순한 형태로 사용한다. "안녕하세요" 문자열에 "안녕"을 포함하고 있으므로 True(맞다)라는 결과를 출력한다.
>>> print("안녕' in "안녕하세요")
True
"안녕하세요"라는 문자열에 "잘자"는 포함하고 있지 않으므로 False(아니다)를 출력한다.
>>> print("잘자" in "안녕하세요")
False
문자열 자르기: split()
문자열을 특정한 문자로 자를 때는 split() 함수를 사용한다. 다음과 같은 예제에서는 split() 함수 괄호 안의 문자열인 공백(띄어쓰기)을 기준으로 자른다.
>>> a = "10 20 30 40 50".split(" ")
>>> print(a)
['10', '20', '30', '40', '50']
실행 결과로 리스트list가 나온다.
'코딩 테스트 > 코테를 위한 파이썬 기초 문법' 카테고리의 다른 글
불 자료형과 if문 (1) | 2022.09.30 |
---|---|
f-문자열 (1) | 2022.09.30 |
변수와 입력 (0) | 2022.09.29 |
파이썬 자료형 - 숫자 (1) | 2022.09.29 |
파이썬 자료형 - 문자열 (1) | 2022.09.29 |