수치를 표기하려면, 숫자 그대로 표기하는 것으로 가능하다. 문자열과 같이 ''나 ""와 같은 기호가 없어도 된다는 뜻!
※참고로 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문 등)많이 사용됩니다.
그래서 많은 예문을 연습해 두면 좋겠습니다.