본문 바로가기
개발일지/Python

파이썬 근사값 알고리즘으로 수심에 가까운 수온출력

by 개발에정착하고싶다 2022. 5. 22.
320x100

첫번째파일

ex

 

# 근삿값 알고리즘1
# 현재 내가 있는곳에서 가장 가까운 데이터가 어디에 있는지 찾는것

# 다음표는 수심에 따른 수온을 나타내고있다.
# 근사값 알고리즘을 이용해서 수심을 입력하면 근사값에 해당하는
# 수온을 출력하는 모듈을 만들어보자

# 수심(m) = [0,5,10,15,20,25,30]
# 수온(°C) = [24,22,20,16,13,10,6]

import nearMode

depth = float(input('input depth: '))

print(f'depth: {depth}m')

na = nearMode.NearAlgorithm(depth)
# 현재 깊이에 대한 근사치 수온
temp = na.getNearNumbers()
print(f'water temperature: {temp}°C')

 

두번째 파일

nearMode

 

class NearAlgorithm:

    def __init__(self, d):
        # 초기 대조값에 대해서 딕셔너리 처리
        self.temps = {0:24,5:22,10:20,15:16,20:13,25:10,30:6}
        self.depth = d
        self.nearNum = 0
        # 온도 중에서 가장 큰 숫자로 초기화해준다는 의미
        self.minNum = 24

    def getNearNumbers(self):

        # self.temps의 딕셔너리의 key에 해당하는 0,5,10~~ 이런것들
        for n in self.temps.keys():
            # 절대값으로 key와 입력된 depth와의 차이를 구한다.
            absNum = abs(n - self.depth)
            if absNum < self.minNum:
                self.minNum = absNum
                self.nearNum = n

        return self.temps[self.nearNum]
300x250