파이썬 f문자열 포매팅과 소수점 사용

파이썬 독학 공부 05. f 문자열 포매팅과 소수점 표현하기

파이썬 f문자열 포매팅과 소수점 사용

파이썬 독학 공부 05. f 문자열 포매팅과 소수점 사용. 문자열 자료를 출력하다 보면 문자열 중간에 변수를 삽입해야 하는 상황이 발생하는데, 문자열에 변수를 삽입하는 작업을 문자열 포매팅(Formatting)이라고 한다.

이 포스트에서는 과거에 쓰던 문자열 포매팅 방법과 최신 버전에 사용하는 f 문자열 포매팅 둘 다 배워보겠다.


파이썬 독학
문자열 포매팅

파이썬 구버전 포매팅

구버전에 사용하던 문자열 포매팅 방법을 알아보겠다. 일단 문자열 중간에 변숫값을 삽입하려면 포맷 코드를 알고 있어야 한다. 변숫값이 숫자면 %d, 문자열이면 %s 포맷 코드를 변숫값이 들어가는 위치에 삽입하는 식이다.

정수를 문자열에 삽입하려면, 변수 age에 23을 대입하고, age 값이 삽입되어야 하는 문자열에 %d를 삽입하고 문자열이 끝나면 %에 어떤 값이 올지 지정해 주면 된다. % age라고 입력한다. 문자열에 문자열을 삽입하는 방법도 동일하지만 %d가 아닌 %s로 표기한다. 변수 gender에 “남성”을 대입하고 출력 문자열에 gender 값이 삽입되어야 하는 위치에 %s를 삽입하고, 문자열 끝에 % gender라고 입력한다.

만약 2개 이상의 변수값을 넣고 싶다면 문자열이 끝난다음 % 다음 괄호에 ( ) 각각의 변수명을 콤마 , 로 구분해 입력해주면 된다. 예를 들어 위와 같이 나이와 성별 변수를 둘 다 넣은 문자열을 출력하고 싶다면 문자열은 “내 나이는 %d이고 성별은 %s입니다.”로 입력하고, 문자열 끝에 변수명은 % ( age, gender )라고 입력하면 된다.


파이썬 독학
f 문자열 포매팅

파이썬 f문자열 포매팅

기존의 문자열 포매팅 방법은 크게 어렵진 않지만 정수와 실수, 문자열을 구분해서 포맷 코드를 입력해야 하는 불편함이 있다. 다행히 3.6 버전부터 f 문자열 포매팅이라는 기능을 사용할 수 있어 훨씬 이해하기 쉽게 문자열 포매팅을 할 수 있다. 방법은 위와 같이 문자열 앞에 f를 붙이고 변수가 들어가는 위치에 중괄호 { }를 사용해 변수 이름을 쓰면 된다.

예를 들어 문자열에 나이를 변수로 사용하고 싶다면, 변수 age를 만들고 23을 대입한 다음 문자열을 f ” 내 나이는 { age }입니다.” 라고 작성하면 된다. 즉 변수의 값이 정수든 실수든, 문자열이든 2개든, 3개든 방법이 동일하기 때문에 포맷 코드를 사용하는 것과 비교하면 훨씬 쉽게 이해할 수 있다.


파이썬 독학
소수점 표현하기

파이썬 소수점 표현하기

문자열 포매팅을 할 때 추가로 알아둬야 하는 것은 바로 소수점을 표현하는 방법이다. 만약 수학 30점, 영어 50점, 국어 60점의 점수를 받았다고 해보자. 평균 점수를 구하려면 점수를 다 더하고 3으로 나누면 된다. 변수 average를 만들어 이를 대입한다.

구버전 기준으로 출력할 때 포맷 코드로 %d를 입력하면 평균 점수는 46점만 출력하게 된다. 왜냐하면 %d는 정수를 삽입하는 코드이기 때문이다. 이번에는 실수를 삽입하는 %f를 넣으면 평균 점수가 46,666667점이 나온다. 소수점은 기본적으로 6자리가 표현된다. 따라서 소수점 자릿수를 컨트롤해야 한다. 방법은 간단하다. 소수점 2자리만 표현하고 싶으면 %.2f라고 입력하면 된다. 소수점 4자리만 표현하고 싶으면 %.4f라고 입력하면 된다.

파이썬 소수점 표현하기

이번엔 f 문자열 포매팅에서 소수점을 표현하는 방법에 대해 알아보겠다. 위와 같이 변수 average를 특별한 통제 없이 f 문자열 포매팅시키면 소수점이 어마어마하게 많이 나온다. 소수점을 컨트롤하고 싶다면 중괄호 변수 이름 뒤에 콜론 : 으로 구분한 다음 원하는 소수점 자리수와 f를 입력해주면 된다.

예를 들어 소수점 2자리만 표현하고 싶다면 위와 같이 { 변수 : 0.2f } 라고 입력하면 된다. 참고로 0은 생략해도 된다.


추천 포스트

문자열 인덱싱과 슬라이싱
링크: https://k-man.kr/2356

문자열 자료형과 문자열 연산
링크: https://k-man.kr/2318


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!