A codificação de resistores com cores é usada para classificar estes componentes. A ideia é simples e definida por um padrão internacional: há um mapeamento de cores para valores específicos, portanto o valor da resistência pode ser traduzido em uma sequência de cores sendo que as 2 ou 3 primeiras cores determinam o valor da resistência, a seguinte determina a ordem de grandeza e a última determina a tolerância. Por exemplo, um resistor de 2260Ω e 1% de tolerância tem 5 faixas de cor: vermelha (2), vermelha (2), azul (6), marrom (x10) e marrom (±1%).
Defina a função IEC60062
que recebe um string
determinando o valor da resistência e retorna a sequência de cores a ser impressa sobre o resistor, como um list
. O valor é dadono formato "FM T", onde FF é um número real com até 2 casas de precisão, MM é o múltiplo de grandeza da unidade de medida ohm (Ω) e TT é o valor da tolerância (real). Note que há uma lacuna (espaço) entre MM e TT.
Como você quer as entradas do sistema, poderia me dar um exemplo de saída do código?
Segue abaixo uma possível implementação da função IEC60062 em Python:
def IEC60062(resistor_value):
# Dicionário de cores e seus respectivos valores
colors = {
'preto': 0,
'marrom': 1,
'vermelho': 2,
'laranja': 3,
'amarelo': 4,
'verde': 5,
'azul': 6,
'violeta': 7,
'cinza': 8,
'branco': 9
}
# Extrai os valores do string
value, multiplier, tolerance = resistor_value.split()
# Converte o valor para ohms
value = float(value) * 10 ** colors[multiplier]
# Calcula as cores correspondentes às duas primeiras faixas
first_color = colors[str(int(value // 10 ** 2))]
second_color = colors[str(int(value % 10 ** 2 // 10 ** 1))]
# Calcula a cor correspondente à terceira faixa
if value >= 10 ** 6:
third_color = colors['megaohm']
elif value >= 10 ** 3:
third_color = colors['kiloohm']
else:
third_color = colors['ohm']
# Calcula a cor correspondente à quarta faixa
tolerance_color = {
1: 'marrom',
2: 'vermelho',
5: 'verde',
10: 'azul'
}[int(tolerance)]
# Retorna a sequência de cores
return [first_color, second_color, third_color, tolerance_color]
Essa função utiliza um dicionário de cores para mapear os nomes das cores para seus respectivos valores. Em seguida, ela extrai os valores do string de entrada, converte o valor para ohms e calcula as cores correspondentes a cada faixa. Para a quarta faixa, a função utiliza outro dicionário para mapear os valores de tolerância para as cores correspondentes. Finalmente, a função retorna a sequência de cores em forma de lista.
def IEC60062(valor_resistencia):
# Mapeamento de cores para valores de resistência
cores_resistencia = {
'0': 'preto',
'1': 'marrom',
'2': 'vermelho',
'3': 'laranja',
'4': 'amarelo',
'5': 'verde',
'6': 'azul',
'7': 'roxo',
'8': 'cinza',
'9': 'branco'
}
# Mapeamento de cores para valores de tolerância
cores_tolerancia = {
'1': 'marrom',
'2': 'vermelho',
'5': 'verde',
'10': 'ouro',
'20': 'prata'
}
# Dividir o valor da resistência em partes
partes = valor_resistencia.split()
# Obter as partes relevantes
parte_valor = partes[0]
parte_multiplo = partes[1]
parte_tolerancia = partes[2]
# Obter as cores correspondentes
cores_valor = [cores_resistencia[digito] for digito in parte_valor]
cor_multiplo = cores_resistencia[parte_multiplo]
cor_tolerancia = cores_tolerancia[parte_tolerancia]
# Retornar a sequência de cores
return cores_valor + [cor_multiplo, cor_tolerancia]
# Exemplo de uso:
valor_resistencia_exemplo = "2260 x10 ±1%"
sequencia_cores = IEC60062(valor_resistencia_exemplo)
print(sequencia_cores)