파이썬 퍼센트 기호 - paisseon peosenteu giho

수치를 표기하려면, 숫자 그대로 표기하는 것으로 가능하다. 문자열과 같이 ''""와 같은 기호가 없어도 된다는 뜻!

※참고로 2진수,8진수,16진수도 다음과 같이 표기할 수 있다.

보통은 10진수로 표기하지만, 필요에 따라서 2진수, 8진수,16진수등으로 표현하는 것도 가능한 점은 큰 메리트라고 생각된다. 

12  ⇒ 정수

0b1010  2진수

0o12   8진수

0x12   16진수

예를 들어 64라는 수를 2진수,8진수,16진수로 표기할 경우, 

#vi number.py

num = 64 

num2 = bin(num)

print(num2)  ## 2진수로 표기

num8 = oct(num)

print(num8)  ## 8진수로 표기

num16 = hex(num)

print(num16)  ## 16진수로 표기

결과를 보면 다음과 같다.

[root@localhost ~]# python test.py

0b1000000  ## 2진수로 표기

0o100  ## 8진수로 표기

0x40  ## 16진수로 표기

수치 계산은 다움과 같이 부호를 이용해서 가능하다. 

수치 앞에 0을 포함해서 표기하면 출력시에 SyntaxError가 되므로 주의할 것!

・덧셈의 경우

・뺄셈의 경우

print(1 + 1)

print(29584 - 4867)

・곱셈의 경우

나누기의 경우

print(12 * 365)

print(540 / 2)

・나누기(반올림의 경우)

・퍼센트 계산

print(9 // 2)

print(4 % 7)

・지수의 경우

 

print(17 ** 3)

・복잡한 계산식을 이용할 경우

print(( 7 * 1100 ) – 190)  

()로1의 수식을 묶어서 전체의 수식을 묶음으로써 계산이 가능하다. 

작업을 하다 보면 특정 변수에

여러 가지 값을 넣어야 할 때가 있습니다.

예를 들면, 10명의 학생들의 학점을 발표할 때

이름이 다르기 때문에 출력을 하려면

문자열을 10번 써야 합니다.

이런 상황에서 유용한 것이

바로 포맷팅(Formatting)입니다.

문자열 포맷팅(Formatting)

문자 치환하기 / %d %s / { } .format
문자열 안에 어떤 값을 삽입하는 방법

포맷팅의 방법은 2가지입니다.

1. 포맷 코드 사용 (%d, %s 등)

2. 포맷 함수 사용 ( { } .format )

포맷 코드 사용
자료 형태에 따라서 사용하는 포맷코드가 다릅니다.

1. %s : 문자열 ◀ 많이 사용
2. %d : 정수 ◀ 많이 사용
3. %c : 문자 1개
4. %f : 부동 소수
6. %o : 8진수
7. %x : 16진수
6. %% : '%' 자체를 출력
"문자열 %s 문자열" %출력값

"문자열 %s %d %s " %(1번째, 2번째, 3번째)

문자열 작성 후 치환하고 싶은 값에

자료 형태에 맞게 %s 또는 %d 표시합니다.

그리고 문자열 다음에 % 출력값 작성합니다.

print("김파이의 점수는 %d 점 입니다." % 85) print("%s의 점수는 70 점 입니다." % "이포맷") ##### result ##### 김파이의 점수는 85 점 입니다. 이포맷의 점수는 70 점 입니다.

출력값을 변수로 넣을 수도 있습니다.

이렇게 하면 변숫값만 변경하면 되니까 편하겠지요~

그리고 한 개의 문자열에 여러 개의 값을

포맷팅 할 수 있습니다.

아래 예문처럼 2개 이상의 값을 넣으려면

출력값을 넣는 % 다음에 괄호( ) 안에 콤마(,)로

구분하여 각 각의 값을 입력합니다.

점수 = 95 이름 = "이포맷" print("김파이의 점수는 %d 점 입니다." % 점수) print("%s의 점수는 70 점 입니다." % 이름) print("%s의 점수는 %d 점 입니다." % (이름,점수)) print("%s의 점수는 %d 점 입니다. %s" % (이름,점수,"합격!")) ##### result ##### 김파이의 점수는 95 점 입니다. 이포맷의 점수는 70 점 입니다. 이포맷의 점수는 95 점 입니다. 이포맷의 점수는 95 점 입니다. 합격!

포맷 코드는 자료 형태에 따라서

%s, %d, %f 등으로 써야 한다고 말씀드렸는데요.

Tip! 문자열에 사용되는 %s 는

어떤 자료 형태로도 치환이 가능합니다.

모든자료를 문자열로 바꿔서 출력하기 때문입니다.

(자료형태를 유지할 필요가 없다면 %s만 사용해도 됩니다.)

점수 = 95 이름 = "이포맷" print("%s의 점수는 %s 점 입니다. %s" % (이름,점수,"합격!")) ##### result ##### 이포맷의 점수는 95 점 입니다. 합격!

그리고 만약

"김파이는 반에서 상위 20%에 속합니다."

라는 퍼센트(%)가 포함된 문자열을 출력하려면 어떻게 할까요?

아래처럼 %% 코드를 사용하면 '%' 값만 그대로 한 번 더 출력됩니다.

퍼센트 = 20 이름 = "김파이" print("%s는 반에서 상위 %s에 속합니다." %(이름, 퍼센트)) print("%s는 반에서 상위 %s%%에 속합니다." %(이름, 퍼센트)) ##### result ##### 김파이는 반에서 상위 20에 속합니다. 김파이는 반에서 상위 20%에 속합니다.

포맷팅 하려는 값 앞에 숫자를 넣으면

숫자만큼 공백을 만들게 됩니다.

치환 값 왼쪽에 공백을 10칸 만큼 넣으려면

%10s

치환 값 오른쪽에 공백을 10칸 만큼 넣으려면

%-10s

소수점 3자리까지 표현하려면

%0.3f 로 작성하면 됩니다.

공백과 소수점을 같이 표현 할 수도 있습니다.

print("%10s 왼쪽에 공백10개" %"안녕!") print("%-10s 오른쪽에 공백10개" %"안녕!") print("%0.3f 소수점 포현" % 3.141592) #소수점 인식 print("%0.3s 소수점 포현" % 3.141592) #문자열 인식 print("%10.3f 소수점 포현" % 3.141592) ##### result ##### 안녕! 왼쪽에 공백10개 안녕! 오른쪽에 공백10개 3.142 소수점 포현 3.1 소수점 포현 3.142 소수점 포현

format 함수 사용

{ } .format( )

{순서}문자열.format(출력값)

{순서1} {순서2} 문자열.format(출력값1,출력값2)

문자열 내에서 포맷팅 하려는 값을

{0} 부터 순서대로 입력합니다.

문자열 끝에 ' . format( ) ' 을 입력한 후

괄호 안에 순서대로 출력값을 넣습니다.

점수 = 95 이름 = "이포맷" print("김파이의 점수는 {0} 점 입니다." .format(점수)) print("{0}의 점수는 70 점 입니다." .format("이포맷")) print("{0}의 점수는 {1} 점 입니다." .format(이름, 점수)) print("{0}의 점수는 {1} 점 입니다.{2}" .format(이름, 점수, "합격!")) ##### result ##### 김파이의 점수는 95 점 입니다. 이포맷의 점수는 70 점 입니다. 이포맷의 점수는 95 점 입니다. 이포맷의 점수는 95 점 입니다.합격!

순서가 너무 많아져서 헷갈린다면

format 함수 내에서 변수를 지정하여

값을 넣을 수도 있습니다.

헷갈릴 필요없이

가장 깔끔한 방법이라고 생각합니다~

점수=70 print("{name}의 점수는 {score} 점 입니다." .format(name="철수",score=점수)) ##### result ##### 철수의 점수는 70 점 입니다.

format( ) 함수를 이용하여 포맷팅 할때

치환할 값의 전체 자리수 또는

정렬 방식등을 추가할 수 있습니다.

점수 = 95 이름 = "이포맷" #{인덱스:전체자리수} print("김파이의 점수는 {0:10} 점 입니다." .format(점수)) #치환하는 값에 10칸 자리수가 생성 print("김파이의 점수는 {0:5} 점 입니다." .format(점수)) #치환하는 값에 5칸 자리수가 생성 #{인덱스:정렬방향 전체자리수} print("김파이의 점수는 {0:<5} 점 입니다." .format(점수)) #5칸 자리수 주고 왼쪽 정렬 print("김파이의 점수는 {0:>5} 점 입니다." .format(점수)) #5칸 자리수 주고 오른쪽 정렬 #{인덱스:공백에문자넣기 정렬방향 전체자리수} print("김파이의 점수는 {0:*>5} 점 입니다." .format(점수)) #5칸 자리수 주고 공백엔 *표시 오른쪽 정렬 ##### result ##### 김파이의 점수는 95 점 입니다. 김파이의 점수는 95 점 입니다. 김파이의 점수는 95 점 입니다. 김파이의 점수는 95 점 입니다. 김파이의 점수는 ***95 점 입니다.

포맷팅(format)은 파이썬 제어문에서

(if문, while문 등)많이 사용됩니다.

그래서 많은 예문을 연습해 두면 좋겠습니다.

Toplist

최신 우편물

태그