카테고리: 파이썬 (Python)

Python - 저항값 구하는 프로그램 코드

"""

작성일자

2023-09-18

작성인 : Mojangcam

"""

class Resistor(object):

코드
def \_\_init\_\_(self) -> None:

    self.resistor\_value \= 0

    self.resistor\_percent \= 0

    self.resistor\_color\_value\_list \= \[\]

    self.color\_value \= "검갈빨주노초파보회흰금은없"

\# 저항의 값을 계산하는 함수

def resistor\_value\_calculate(self, color\_num:int) -> dict:

        #문자열로 합치고 정수로 변환하여 계산하는 방식 선택

        \# 컬러 개수가 4개인 경우

    if color\_num \== 4:

        string \= str(self.resistor\_color\_value\_list\[0\]) + str(self.resistor\_color\_value\_list\[1\])

        power \= self.resistor\_color\_value\_list\[2\]

        #컬러 개수가 5개인 경우

    if color\_num \== 5:

        string \= str(self.resistor\_color\_value\_list\[0\]) + str(self.resistor\_color\_value\_list\[1\]) + str(self.resistor\_color\_value\_list\[2\])

        power \= self.resistor\_color\_value\_list\[3\]

    if power \> 11 or self.resistor\_percent \== 0:

        raise Exception("Resistor color value Error")

    value \= int(string) \* (10 \*\* power)

    plma \= value / 100 \* self.resistor\_percent

    resistor\_min \= int(value \- plma)

    resistor\_max \= int(value + plma)

    \# 값을 전달할때 dictionary로 전달

    context \= {

        "resistor\_min" : resistor\_min,

        "resistor\_max" : resistor\_max,

        "resistor\_value" : value,

        "resistor\_percent" : self.resistor\_percent

    }

    return context

\# 저항의 값을 구하는 함수

def resistor\_value\_get(self, colors:str) -> None:

    if len(colors) < 4 and len(colors) \> 5 and colors\[0\] \== "검":

        raise Exception(f"Resistor color Error : {colors}")

    for i in range(len(colors)):

        if colors\[i\] in self.color\_value:

            find\_color\_index \= self.color\_value.find(colors\[i\])

            self.resistor\_color\_value\_list.append(find\_color\_index)

            \# 마지막 컬러가 오차범위를 나타내는 컬러일 경우

            if i \== len(colors) \- 1:

                if find\_color\_index \== 1:

                    self.resistor\_percent \= 1

                elif find\_color\_index \== 2:

                    self.resistor\_percent \= 2

                elif find\_color\_index \== 5:

                    self.resistor\_percent \= 0.5

                elif find\_color\_index \== 6:

                    self.resistor\_percent \= 0.25

                elif find\_color\_index \== 7:

                    self.resistor\_percent \= 0.1

                elif find\_color\_index \== 8:

                    self.resistor\_percent \= 0.05

                elif find\_color\_index \== 10:

                    self.resistor\_percent \= 5

                elif find\_color\_index \== 11:

                    self.resistor\_percent \= 10

                elif find\_color\_index \== 12:

                    self.resistor\_percent \= 20

    for i in range(len(self.resistor\_color\_value\_list)):

        if i \== 0:

            #첫번째 색깔은 검은색,금색,은색,없음이 올수 없기 때문에 에러 발생

            if self.color\_value\[self.resistor\_color\_value\_list\[i\]\] in "검금은없":

                raise Exception(f"Resistor color Error : {colors}")

            \# 금은없 은 숫자가 아닌 오차범위 (%)를 나타내기 때문에 올수 없어서 에러 발생

        if i < len(self.resistor\_color\_value\_list) \- 1:

            if self.color\_value\[self.resistor\_color\_value\_list\[i\]\] in "금은없":

                raise Exception(f"Resistor color Error : {colors}")

    return self.resistor\_value\_calculate(len(colors))

    \# 저항의 값을 Giga, Mega, kilo 옴으로 변환해주는 함수

def resistor\_unit\_convert(self, context:dict):

    res\_min \= context\['resistor\_min'\]

    res\_max \= context\['resistor\_max'\]

    res\_value \= context\['resistor\_value'\]

    res\_percent \= context\['resistor\_percent'\]

    if res\_value \> 1000000000:

        return "GΩ", res\_min/1000000000, res\_max/1000000000, res\_value/1000000000, res\_percent

    elif res\_value \> 1000000:

        return "MΩ", res\_min/1000000, res\_max/1000000, res\_value/1000000, res\_percent

    elif res\_value \> 1000:

        return "kΩ", res\_min/1000, res\_max/1000, res\_value/1000, res\_percent

    return "Ω", res\_min, res\_max, res\_value, res\_percent

from resistor import Resistor

if __name__ == '__main__':

코드
resistor\_color \= input("저항값을 입력하세요 (4 ~ 5개의 색깔만 허용합니다.) : ")

resistor1 \= Resistor()

resistor\_value \= resistor1.resistor\_value\_get(resistor\_color)

unit, res\_min, res\_max, res\_value, res\_percent \= resistor1.resistor\_unit\_convert(resistor\_value)

print(f"저항값의 최솟값 : {res\_min}{unit}")

print(f"저항값의 최댓값 : {res\_max}{unit}")

print(f"저항값 : {res\_value}{unit}")

print(f"저항 오차 : {res\_percent}%")

첫 번째 코드를 resistor.py로 저장하시고 아래의 코드를 main.py로 저장하신 뒤 main.py를 실행시키시면 됩니다.

글쓴이

Mojangcam

직접 코드를 짜고, 서버를 돌리고, 막힌 에러를 해결하며 배운 것들을 기록하는 개발·IT 실전 기록 블로그