수학 계산 튜토리얼

Intermediate

This tutorial is from open-source community. Access the source code

소개

이 섹션에서는 수학적 계산에 대해 논의합니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 66%입니다.학습자들로부터 91%의 긍정적인 리뷰율을 받았습니다.

숫자 유형

Python 에는 4 가지 유형의 숫자가 있습니다.

  • 부울 (Booleans)
  • 정수 (Integers)
  • 부동 소수점 (Floating point)
  • 복소수 (Complex) (허수)

부울 (bool)

부울은 두 가지 값을 가집니다: True, False.

a = True
b = False

수치적으로, 부울은 값 1, 0을 가진 정수로 평가됩니다.

c = 4 + True ## 5
d = False
if d == 0:
    print('d is False')

하지만, 그런 코드는 작성하지 마세요. 이상할 것입니다.

정수 (int)

임의 크기 및 기수의 부호 있는 값:

a = 37
b = -299392993727716627377128481812241231
c = 0x7fa8      ## 16 진수 (Hexadecimal)
d = 0o253       ## 8 진수 (Octal)
e = 0b10001111  ## 2 진수 (Binary)

일반적인 연산:

x + y      더하기 (Add)
x - y      빼기 (Subtract)
x * y      곱하기 (Multiply)
x / y      나누기 (Divide) (부동 소수점 생성)
x // y     정수 나누기 (Floor Divide) (정수 생성)
x % y      나머지 (Modulo) (나머지)
x ** y     거듭제곱 (Power)
x << n     비트 왼쪽 시프트 (Bit shift left)
x >> n     비트 오른쪽 시프트 (Bit shift right)
x & y      비트 AND (Bit-wise AND)
x | y      비트 OR (Bit-wise OR)
x ^ y      비트 XOR (Bit-wise XOR)
~x         비트 NOT (Bit-wise NOT)
abs(x)     절댓값 (Absolute value)

부동 소수점 (float)

부동 소수점 값을 지정하려면 십진수 또는 지수 표기법을 사용합니다:

a = 37.45
b = 4e5 ## 4 x 10**5 or 400,000
c = -1.345e-10

부동 소수점은 네이티브 CPU 표현 IEEE 754를 사용하여 배정밀도로 표현됩니다. 이는 프로그래밍 언어 C 의 double 유형과 동일합니다.

정밀도 17 자리
지수 -308 에서 308 까지

부동 소수점 숫자는 십진수를 표현할 때 정확하지 않다는 점에 유의하십시오.

>>> a = 2.1 + 4.2
>>> a == 6.3
False
>>> a
6.300000000000001
>>>

이것은 Python 문제가 아니라, CPU 의 기본 부동 소수점 하드웨어 문제입니다.

일반적인 연산:

x + y      더하기 (Add)
x - y      빼기 (Subtract)
x * y      곱하기 (Multiply)
x / y      나누기 (Divide)
x // y     정수 나누기 (Floor Divide)
x % y      나머지 (Modulo)
x ** y     거듭제곱 (Power)
abs(x)     절댓값 (Absolute Value)

이들은 비트 연산자를 제외하고 정수와 동일한 연산자입니다. 추가 수학 함수는 math 모듈에서 찾을 수 있습니다.

import math
a = math.sqrt(x)
b = math.sin(x)
c = math.cos(x)
d = math.tan(x)
e = math.log(x)

비교 (Comparisons)

다음 비교/관계 연산자는 숫자와 함께 작동합니다:

x < y      미만 (Less than)
x <= y     이하 (Less than or equal)
x > y      초과 (Greater than)
x >= y     이상 (Greater than or equal)
x == y     같음 (Equal to)
x != y     같지 않음 (Not equal to)

다음 연산자를 사용하여 더 복잡한 부울 표현식을 구성할 수 있습니다:

and, or, not

다음은 몇 가지 예입니다:

if b >= a and b <= c:
    print('b is between a and c')

if not (b < a or b > c):
    print('b is still between a and c')

숫자 변환 (Converting Numbers)

유형 이름을 사용하여 값을 변환할 수 있습니다:

a = int(x)    ## x 를 정수로 변환
b = float(x)  ## x 를 부동 소수점으로 변환

시도해 보세요.

>>> a = 3.14159
>>> int(a)
3
>>> b = '3.14159' ## 숫자 문자열도 작동합니다.
>>> float(b)
3.14159
>>>

알림: 이 연습은 ~/project 디렉토리에서 작업한다고 가정합니다. mortgage.py 파일을 찾아보세요.

연습 문제 1.7: Dave 의 모기지 (mortgage)

Dave 는 Guido's Mortgage, Stock Investment, and Bitcoin trading corporation 에서 30 년 고정 금리 모기지 $500,000 을 받기로 결정했습니다. 이자율은 5% 이고 월별 납입금은 $2684.11 입니다.

다음은 Dave 가 모기지 기간 동안 지불해야 하는 총액을 계산하는 프로그램입니다:

## mortgage.py

principal = 500000.0
rate = 0.05
payment = 2684.11
total_paid = 0.0

while principal > 0:
    principal = principal * (1+rate/12) - payment
    total_paid = total_paid + payment

print('Total paid', total_paid)

이 프로그램을 입력하고 실행하십시오. 966279.5999999957의 답을 얻어야 합니다.

연습 문제 1.8: 추가 납입 (Extra payments)

Dave 가 모기지 첫 12 개월 동안 매달 $1000 을 추가로 납입한다고 가정해 봅시다.

이 추가 납입을 포함하도록 프로그램을 수정하고, 납입한 총액과 필요한 개월 수를 함께 출력하도록 하세요.

새 프로그램을 실행하면 342 개월 동안 총 납입액이 929965.6199999959로 보고되어야 합니다.

연습 문제 1.9: 추가 납입 계산기 만들기

추가 납입 정보를 보다 일반적으로 처리할 수 있도록 프로그램을 수정하십시오. 사용자가 다음 변수를 설정할 수 있도록 만드세요:

extra_payment_start_month = 61
extra_payment_end_month = 108
extra_payment = 1000

프로그램이 이러한 변수를 확인하고 적절하게 총 납입액을 계산하도록 하세요.

Dave 가 처음 5 년이 지난 후 4 년 동안 매달 $1000 을 추가로 납입하면 얼마를 지불하게 될까요?

연습 문제 1.10: 테이블 만들기

프로그램을 수정하여 월, 지금까지 납입한 총액, 그리고 남은 원금을 보여주는 테이블을 출력하도록 하세요. 출력 결과는 다음과 유사해야 합니다:

1 2684.11 499399.22
2 5368.22 498795.94
3 8052.33 498190.15
4 10736.44 497581.83
5 13420.55 496970.98
...
308 874705.88 3478.83
309 877389.99 809.21
310 880074.10 -1871.53
Total paid 880074.10
Months 310

연습 문제 1.11: 보너스

이왕 하는 김에, 마지막 달에 발생하는 과다 납입을 수정하도록 프로그램을 수정하세요.

연습 문제 1.12: 미스터리

int()float()는 숫자를 변환하는 데 사용할 수 있습니다. 예를 들어,

>>> int("123")
123
>>> float("1.23")
1.23
>>>

이 점을 염두에 두고, 다음 동작을 설명할 수 있습니까?

>>> bool("False")
True
>>>

요약

축하합니다! 숫자 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.