English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 글에서는 파이썬에서 사용하는 다양한 숫자, 하나의 데이터 타입을 다른 데이터 타입으로 변환하는 방법, 그리고 파이썬이 지원하는 수학 연산에 대해 알아보겠습니다.
Python支持整数,浮点数和复数。他们被定义为int,float和complex在Python数据类型中。
Python은 정수, 부호수, 복수를 지원합니다. 이들은 Python 데이터 타입에서 int, float, complex로 정의됩니다.5정수와 부호수는 소수점이 있는지 없는지에 따라 구분됩니다.5는 정수입니다, 그리고
.0은 부호수입니다. + 부호수는 xyj로 쓰여집니다x는 실수부입니다y
는 부호수입니다.
type() 함수를 사용하여 변수나 값이 어떤 데이터 타입인지 확인할 수 있으며, 함수 isinstance()를 사용하여 특정 타입에 속하지 않는지 확인할 수 있습니다. 5 a = # 출력: <class 'int'> print(type(a)) # 출력: <class 'float'>5print(type( .0))8+3j) # 출력: ( 5 + 3c = j + 3) # 출력: True print(c
print(isinstance(c, complex))15정수는 무한한 길이일 수 있지만, 부호수는 최대로 정확할 수 있습니다16개의 소수점 자리수(초기)
의 자리수는 정확하지 않습니다.10우리는 매일 다루는 숫자는 십진수(기본수)2를 기반으로 한 숫자 시스템입니다. 하지만 컴퓨터 프로그래머(대부분 내장 프로그래머)는 2진수(기본수)16)와 16진수(기본수)8)와 8진수(기본수)
)의 숫자 시스템.
Python 숫자의 숫자 시스템前置기 | 숫자 시스템 |
---|---|
前置기 | 2진수 |
'0b' 또는 '0B' | 8진수 |
'0o' 또는 '0O' | 16진수 |
'0x' 또는 '0X'
# 출력: 107 이곳에 몇 가지 예제가 있습니다1101011) # 출력: 253 (251 + 2) print(0b + print(0xFB10) # 출력: 13 0b15)
print(0o
107 253 13
데이터 타입 변환
하나의 숫자를 다른 숫자로 변환할 수 있습니다. 이를 강제 변환이라고도 합니다.
>>> 1 + 2.0 3.0
만약 연산자 중 하나가 부호수라면, 덧셈, 뺄셈 등의 연산은 정수를 강제로(자동적으로) 부호수로 변환됩니다.1위에서 볼 수 있습니다1(정수)는 강제로
우리는 int()، float() 및 complex()와 같은 내장 함수를 사용하여 타입 간 명시적 변환을 할 수 있습니다. 이 함수들은 심지어 .0(float)에서도 더하기 연산을 수행할 수 있으며, 결과도 부호수입니다.문자열변환.
>>> int(2.3) 2 >>> int(-2.8) -2 >>> float(5) 5.0 >>> complex('3+5j') (3+5j)
float에서 정수로 변환할 때, 숫자는 접근하는 정수로 잘릴 것입니다(제로에 가까운 정수).
Python의 내장 클래스 float는 놀라울 수 있는 계산을 수행합니다. 우리는 모두 알고 있습니다1.1과2.2의 합은3.3하지만 Python은 동의하지 않는 것 같습니다.
>>> (1.1 + 2.2) == 3.3 False
이게 무엇인가요?
실제로 부호 부호화는 컴퓨터 하드웨어에서 이진 소수로 구현됩니다. 컴퓨터는 이진수(0과 1)만 이해합니다.1)。이 이유로 대부분의 십진 소수는 컴퓨터에서 정확하게 저장될 수 없다는 것을 알고 있습니다.
예제에서는 분수1/3십진수로 표현됩니다. 이는 0을 줄입니다.33333333 ...무한 길이로, 우리는 그것을 근사적으로만 할 수 있습니다.
원래의 십진 소수 0.1이는 무한 길이의 이진 소수 0.000을 유발합니다.110011001100110011 ...그리고 우리의 컴퓨터는 제한된 수의 이진수를 저장합니다.
이는 0에 가까워질 뿐입니다.1하지만, 결코 일치하지 않습니다. 따라서 이는 컴퓨터 하드웨어의 제한이 아니라 Python의 오류가 아닙니다.
>>> 1.1 + 2.2 3.3000000000000003
이 문제를 극복하기 위해 Python이 제공하는 십진수 모듈을 사용할 수 있습니다. 부호 부호화의 정밀도는 최대15개의 소수 자리수를 가지고 있으며, 십진수 모듈은 사용자가 설정할 수 있는 정밀도를 가집니다.
import decimal # 출력: 0.1 print(0.1) # 출력: Decimal('0.1000000000000000055511151231257827021181583404541015625') print(decimal.Decimal(0.1))
학교에서 배우는 십진수 계산을 수행할 때는 이 모듈을 사용합니다.
그리고 의미를 유지합니다. 우리는 알고 있습니다:25.50公斤比25.5포ンド 더 정확합니다.因为它有两位小数,而不是一位。
from decimal import Decimal as D # 출력: Decimal('3.3') print(D('1.1') + D('2.2)) # 출력: Decimal('3.000') print(D('1.2') * D('2.50'))
예제에서의 트레일링 자리수를 주목해 주세요.
우리는 왜 항상 Decimal 대신 float를 사용하지 않는지 물을 수 있습니다. 주요 원인은 효율성입니다. 부호 부호화를 수행해야 하는 데는 십진수 연산보다 더 빠르게 해야 합니다.
다음과 같은 경우에는 일반적으로 십진수를 사용합니다.
정확한 십진수 표현이 필요한 금융 애플리케이션을 수행할 때
필요한 정밀도 수준을 지정할 때
소수 자리수의 유효성 개념을 실현하고 싶을 때
학교에서와 같이 연산을하고 싶을 때
Python은 fractions 모듈을 통해 소수에 대한 연산을 제공합니다.
소수는 분자와 분모를 가지고 있으며, 이들은 모두 정수입니다. 이 모듈은 유리수 알고리즘을 지원합니다.
Fraction 객체를 생성할 수 있는 여러 가지 방법이 있습니다.
import fractions # 출력: 3/2 print(fractions.Fraction(1.5)) # 출력: 5 print(fractions.Fraction(5)) # 출력: 1/3 print(fractions.Fraction(1,3))
float에서 분수를 생성할 때, 예상치 못한 결과를 얻을 수 있습니다. 이는 이전 장에서 논의한 이진 부호 부호화가 불완전하기 때문입니다.
행운스럽게도 소수는 문자열 예제를 사용하여 표현화할 수 있게 해줍니다. 이는 십진수로 숫자를 사용할 때의 기본 선택입니다.
import fractions # 실수로 사용 # 출력: 2476979795053773/2251799813685248 print(fractions.Fraction(1.1)) # 문자열로 사용 # 출력: 11/10 print(fractions.Fraction('1.1))
이 데이터 타입은 모든 기본 연산을 지원합니다. 여기 몇 가지 예제가 있습니다.
from fractions import Fraction as F # 출력: 2/3 print(F(1,3) + F(1,3)) # 출력: 6/5 print(1 / F(5,6)) # 출력: False print(F(-3,10) > 0) # 출력: True print(F(-3,10) < 0)
파이썬은 similar한 모듈을 제공하며, math와 random은 다른 수학 연산을 수행할 수 있습니다. 예를 들어, 삼각 함수, 로그, 확률 및 통계 등.
import math # 출력: 3.141592653589793 print(math.pi) # 출력: -1.0 print(math.cos(math.pi)) # 출력: 22026.465794806718 print(math.exp(10)) # 출력: 3.0 print(math.log10(1000)) # 출력: 1.1752011936438014 print(math.sinh(1)) # 출력: 720 print(math.factorial(6))
이것은파이썬 math 모듈에서사용 가능한 전체 함수와 속성 목록.
import random # 출력: 16 print(random.randrange(10,20)) x = ['a', 'b', 'c', 'd', 'e'] # 랜덤 선택 print(random.choice(x)) # x 리스트 순서 섞기 random.shuffle(x) # 출력을 섞인 x 출력 print(x) # 랜덤 요소 출력 print(random.random())
출력 결과(랜덤 결과):
19 c ['e', 'a', 'd', 'c', 'b'] 0.707947055817621
이것은파이썬 random 모듈에서사용 가능한 전체 함수와 속성 목록.