산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python 숫자, 형 변환, 수학 마스터하기

Python 숫자, 형 변환, 수학 마스터하기

Python이 숫자 데이터를 다루는 방식, 형 변환의 미묘한 차이, 일상적인 프로그래밍에 유용한 강력한 수학 유틸리티를 알아봅니다.

Python의 숫자 데이터 타입

Python은 숫자를 세 가지 핵심 타입으로 분류합니다: 정수를 위한 int, 소수 부분을 가진 실수를 위한 float, 실수부와 허수부를 가진 숫자를 위한 complex입니다. 소수점의 유무가 int와 float을 구분합니다(예: 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

Python의 정수는 임의 정밀도를 가지며, 부동소수점 수는 약 15자리 십진수 정밀도를 유지합니다. 이진법, 16진법, 8진법 표현을 다루는 개발자를 위해 Python은 편리한 접두사를 제공합니다:

진법접두사
이진법0b 또는 0B
8진법0o 또는 0O
16진법0x 또는 0X

예시:

# 출력: 107
print(0b1101011)
# 출력: 253 (251 + 2)
print(0xFB + 0b10)
# 출력: 13
print(0o15)

결과:

107 253 13

형 변환 (Coercion)

연산에 실수 피연산자가 포함되면 Python은 정수를 자동으로 실수로 승격시킵니다. 예:

>>> 1 + 2.0
3.0

명시적 변환도 int(), float(), complex()로 간단히 할 수 있으며, 문자열 파싱도 지원합니다:

>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)

실수를 정수로 변환할 때 Python은 반올림이 아닌 소수 부분을 버림(truncate)합니다.

Python Decimal

부동소수점 연산은 이진 표현의 한계로 의외의 결과를 낳을 수 있습니다. 예:

>>> (1.1 + 2.2) == 3.3
False

0.1 같은 숫자는 이진법으로 정확히 표현될 수 없어 연산 시 미세한 반올림 오차가 발생합니다. decimal 모듈은 임의 정밀도 십진법 연산을 제공해 이 문제를 완화합니다:

import decimal
print(0.1)
print(decimal.Decimal(0.1))

출력:

0.1 0.1000000000000000055511151231257827021181583404541015625

Decimal을 사용하면 유효 숫자와 정확한 십진 표현이 보존되어 금융 계산에 필수적입니다:

from decimal import Decimal as D
print(D('1.1') + D('2.2'))
print(D('1.2') * D('2.50'))

출력:

3.3 3.000

십진 연산은 이진 부동소수점보다 느리므로, 금전적 값, 설정 가능한 정밀도, 유효 숫자 제어가 필요한 시나리오에만 Decimal을 사용하세요.

Float 대신 Decimal을 사용해야 할 때

Python Fractions

fractions 모듈은 유리수 연산을 지원하며, 분자와 분모를 정수로 다뤄 정확한 계산을 가능하게 합니다:

import fractions
print(fractions.Fraction(1.5))
print(fractions.Fraction(5))
print(fractions.Fraction(1,3))

출력:

3/2 5 1/3

부동소수점에서 Fraction을 생성하면 이진 반올림으로 직관적이지 않은 결과가 나올 수 있으므로, 십진수에는 문자열 입력을 권장합니다:

import fractions
# float에서 생성
print(fractions.Fraction(1.1))
# 문자열에서 생성
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 수학

Python의 math 모듈은 삼각함수, 로그, 팩토리얼 등 다양한 함수를 제공합니다:

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

난수 생성과 샘플링에는 random 모듈이 유용합니다:

import random
print(random.randrange(10, 20))
x = ['a', 'b', 'c', 'd', 'e']
print(random.choice(x))
random.shuffle(x)
print(x)
print(random.random())

샘플 출력 (값은 매번 다름):

18 e ['c', 'e', 'd', 'b', 'a'] 0.5682821194654443

두 모듈 모두 사용 가능한 모든 함수와 속성을 상세히 문서화하고 있습니다.

python

  1. C# 타입 변환 마스터하기: 암시적, 명시적, Parse, Convert 메서드
  2. 파이썬 키워드와 식별자: 예약어와 명명 규칙 마스터하기
  3. 파이썬 문장, 들여쓰기, 주석: 명확한 가이드
  4. 파이썬 변수, 상수, 리터럴 – 종합 가이드
  5. 파이썬 타입 변환 & 캐스팅 마스터하기: 종합 가이드
  6. 파이썬 입출력과 모듈 임포트 마스터하기: 실전 가이드
  7. 파이썬 전역, 지역, 비지역 변수 이해하기
  8. Python 디렉터리 및 파일 관리 마스터하기
  9. Python 에러와 내장 예외 마스터하기
  10. Python 현재 날짜와 시간 가져오기: 실전 가이드