반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 슬래시 커맨드
- 디스코드 임베드
- 마인크래프트 공지 플러그인
- ARK
- discord.py
- DISCORD BOT
- 만들기
- 아크서바이벌 플러그인
- 마인크래프트 공지 플러그인 만들기
- 플러그인 제작
- 명령어
- 디스코드 봇
- 슬래시 명령어
- 개발자 툴
- Ark Survival
- slash command
- discord
- 공지
- 디스코드
- ARK Survival Evolved
- 파이썬
- 아크서바이벌 플러그인 만들기
- 아크 플러그인
- 자살명령어
- discord embed
- ark plugin
- 디스코드 봇 만들기
- 파이썬으로 디스코드 봇 만들기
- 파이썬 봇
- 플러그인
Archives
- Today
- Total
Mojangcam
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를 실행시키시면 됩니다.
반응형
'Python' 카테고리의 다른 글
디스코드 봇 만들기 - Slash Command 완전 정복! (0) | 2025.04.14 |
---|---|
디스코드 봇 특정 채널에 메시지 보내기 (3) | 2023.12.22 |
디스코드 봇 임베드 만들기 (1) | 2023.12.22 |
디스코드 봇 공지 명령어 만들기 (0) | 2023.12.16 |
Discord Bot - 명령어 입력하면 AI가 그림그려주기 (0) | 2023.09.20 |