python
이 기사에서는 Python에서 사용되는 다양한 숫자, 한 데이터 유형에서 다른 데이터 유형으로 변환하는 방법, Python에서 지원되는 수학 연산에 대해 알아봅니다.
Python은 정수, 부동 소수점 숫자 및 복소수를 지원합니다. int
로 정의됩니다. , float
, 및 complex
파이썬 수업.
정수와 부동 소수점은 소수점의 유무로 구분됩니다. 예를 들어 5는 정수이고 5.0은 부동 소수점 숫자입니다.
복소수는 x + yj
형식으로 작성됩니다. , 여기서 x 실수 부분이고 y 허수 부분입니다.
type()
을 사용할 수 있습니다. 변수 또는 값이 속한 클래스 및 isinstance()
를 확인하는 함수 특정 클래스에 속하는지 확인하는 함수입니다.
예를 살펴보겠습니다.
a = 5
print(type(a))
print(type(5.0))
c = 5 + 3j
print(c + 3)
print(isinstance(c, complex))
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
<class 'int'> <class 'float'> (8+3j) True
정수의 길이는 제한되지 않지만 부동 소수점 숫자는 소수점 이하 15자리까지만 정확합니다(16자리는 정확하지 않음).
우리가 매일 다루는 숫자는 십진법(10진법) 숫자 체계입니다. 그러나 컴퓨터 프로그래머(일반적으로 임베디드 프로그래머)는 2진법(2진법), 16진법(16진법) 및 8진법(8진법) 숫자 체계로 작업해야 합니다.
Python에서는 해당 숫자 앞에 접두사를 적절하게 배치하여 이러한 숫자를 나타낼 수 있습니다. 다음 표는 이러한 접두사를 나열합니다.
숫자 체계 | 접두사 |
---|---|
바이너리 | '0b' 또는 '0B' |
8진수 | '0o' 또는 '0O' |
16진수 | '0x' 또는 '0X' |
다음은 몇 가지 예입니다.
# Output: 107
print(0b1101011)
# Output: 253 (251 + 2)
print(0xFB + 0b10)
# Output: 13
print(0o15)
프로그램을 실행하면 다음과 같이 출력됩니다.
107 253 13<시간>
한 유형의 숫자를 다른 유형으로 변환할 수 있습니다. 이를 강제라고도 합니다.
더하기, 빼기와 같은 연산은 피연산자 중 하나가 float인 경우 암시적으로(자동으로) 정수를 float로 강제 변환합니다.
>>> 1 + 2.0
3.0
위에서 1(정수)이 덧셈을 위해 1.0(float)으로 강제 변환되고 결과도 부동 소수점 숫자임을 알 수 있습니다.
int()
과 같은 내장 함수를 사용할 수도 있습니다. , float()
및 complex()
유형 간에 명시적으로 변환합니다. 이러한 함수는 문자열에서도 변환할 수 있습니다.
>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)
부동 소수점에서 정수로 변환할 때 숫자가 잘립니다(소수 부분은 제거됨).
<시간>Python 내장 클래스 float는 우리를 놀라게 할 수 있는 몇 가지 계산을 수행합니다. 우리 모두는 1.1과 2.2의 합이 3.3이라는 것을 알고 있지만 파이썬은 동의하지 않는 것 같습니다.
>>> (1.1 + 2.2) == 3.3
False
무슨 일이야?
컴퓨터가 이진수(0과 1)만 이해하므로 부동 소수점 숫자는 컴퓨터 하드웨어에서 이진수 분수로 구현됩니다. 이러한 이유로 우리가 알고 있는 대부분의 소수는 컴퓨터에 정확하게 저장할 수 없습니다.
예를 들어 보겠습니다. 분수 1/3은 십진수로 나타낼 수 없습니다. 이것은 무한히 긴 0.33333333...을 제공하며 우리는 대략적으로만 계산할 수 있습니다.
소수점 이하 자릿수 0.1은 0.000110011001100110011의 무한히 긴 이진 분수가 되며 우리 컴퓨터는 그 중 유한 수만 저장합니다.
이것은 대략 0.1에 불과하지만 결코 같지 않습니다. 따라서 이것은 Python의 오류가 아니라 컴퓨터 하드웨어의 한계입니다.
>>> 1.1 + 2.2
3.3000000000000003
이 문제를 극복하기 위해 Python과 함께 제공되는 decimal 모듈을 사용할 수 있습니다. 부동 소수점 숫자는 소수점 이하 15자리까지의 정밀도를 갖지만 소수 모듈은 사용자가 설정할 수 있는 정밀도를 갖습니다.
차이점을 살펴봅시다:
import decimal
print(0.1)
print(decimal.Decimal(0.1))
출력
0.1 0.1000000000000000055511151231257827021181583404541015625
이 모듈은 학교에서 배운 소수 계산을 수행할 때 사용됩니다.
또한 의미를 보존합니다. 25.50kg이 25.5kg보다 더 정확하다는 것을 알고 있습니다. 25.50kg은 소수점 이하 자릿수가 1자리에 비해 두 자리이기 때문입니다.
from decimal import Decimal as D
print(D('1.1') + D('2.2'))
print(D('1.2') * D('2.50'))
출력
3.3 3.000
위의 예에서 후행 0에 주목하십시오.
Decimal
을 구현하지 않는 이유를 물을 수 있습니다. 매번 float 대신? 주된 이유는 효율성입니다. 부동 소수점 연산은 Decimal
보다 빨라야 합니다. 작업.
일반적으로 다음과 같은 경우 Decimal을 사용합니다.
Python은 fractions
를 통해 분수와 관련된 연산을 제공합니다. 모듈.
분수에는 분자와 분모가 있으며 둘 다 정수입니다. 이 모듈은 유리수 산술을 지원합니다.
우리는 다양한 방법으로 Fraction 객체를 생성할 수 있습니다. 살펴보겠습니다.
import fractions
print(fractions.Fraction(1.5))
print(fractions.Fraction(5))
print(fractions.Fraction(1,3))
출력
3/2 5 1/3
Fraction
를 생성하는 동안 float
에서 , 비정상적인 결과를 얻을 수 있습니다. 이는 이전 섹션에서 논의한 바와 같이 불완전한 이진 부동 소수점 숫자 표현 때문입니다.
다행히 Fraction
문자열로도 인스턴스화할 수 있습니다. 십진수를 사용할 때 선호되는 옵션입니다.
import fractions
# As float
# Output: 2476979795053773/2251799813685248
print(fractions.Fraction(1.1))
# As string
# Output: 11/10
print(fractions.Fraction('1.1'))
출력
2476979795053773/2251799813685248 11/10
이 데이터 유형은 모든 기본 작업을 지원합니다. 다음은 몇 가지 예입니다.
from fractions import Fraction as F
print(F(1, 3) + F(1, 3))
print(1 / F(5, 6))
print(F(-3, 10) > 0)
print(F(-3, 10) < 0)
출력
2/3 6/5 False True<시간>
Python은 math
과 같은 모듈을 제공합니다. 및 random
삼각법, 로그, 확률 및 통계 등과 같은 다양한 수학을 수행합니다.
import math
print(math.pi)
print(math.cos(math.pi))
print(math.exp(10))
print(math.log10(1000))
print(math.sinh(1))
print(math.factorial(6))
출력
3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720
다음은 Python 수학 모듈에서 사용할 수 있는 전체 함수 및 속성 목록입니다.
import random
print(random.randrange(10, 20))
x = ['a', 'b', 'c', 'd', 'e']
# Get random choice
print(random.choice(x))
# Shuffle x
random.shuffle(x)
# Print the shuffled x
print(x)
# Print random element
print(random.random())
위의 프로그램을 실행하면 다음과 같이 출력됩니다.(임의의 동작으로 인해 값이 다를 수 있음)
18 e ['c', 'e', 'd', 'b', 'a'] 0.5682821194654443
다음은 Python random 모듈에서 사용할 수 있는 전체 기능 및 속성 목록입니다.
python
파이썬이란 무엇입니까? Python은 고급 객체 지향 프로그래밍 언어입니다. 동적 바인딩 및 타이핑과 결합된 데이터 구조가 내장되어 있어 신속한 애플리케이션 개발에 이상적인 선택입니다. Python은 또한 시스템 모듈화 및 코드 재사용을 허용하는 모듈 및 패키지에 대한 지원을 제공합니다. 코드가 거의 필요하지 않기 때문에 가장 빠른 프로그래밍 언어 중 하나입니다. 가독성과 단순성에 중점을 두고 있어 초보자에게 적합합니다. 이 Python vs Ruby 자습서에서는 다음을 배우게 됩니다. 파이썬이란 무엇입니까? 루비란 무엇입
파이썬 2란 무엇인가요? 파이썬 2 코드 개발 프로세스를 이전 버전보다 쉽게 만들었습니다. Python Enhancement Proposal(PEP)의 기술적 세부 사항을 구현했습니다. Python 2.7(2.x의 마지막 버전)은 더 이상 개발되지 않으며 2020년에 중단됩니다. 이 튜토리얼에서는 다음을 배우게 됩니다. 파이썬 2란 무엇입니까? 파이썬 3이란 무엇입니까? Python 2를 배워야 하는 이유는 무엇입니까? Python 3를 사용해야 하는 이유는 무엇입니까? 파이썬 2의 역사 파이썬 3의 역사 Pyt