Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema na programaçao

Fiz esse código, ele está rodando bonitinho, mas estou com problema na transformação de hL/L/dL/cL para mL. Poderiam me ajudar? obs: fazendo a conta pela calculadora o valor resulta corretamente.

print('\n\033[1mTransformação de unidade de volume\033[0m')

def converter(valor, unidade_inicial, unidade_final): unidades = {'kL': 1, 'hL': 0.1, 'daL': 0.01, 'L': 0.001, 'dL': 0.0001, 'cL': 0.00001, 'mL':0.000001}

resultado = valor * unidades[unidade_inicial]

valor_final = resultado / unidades[unidade_final]
return valor_final

def exibir_opcoes_unidade_final(unidade_inicial): opcoes = { 'kL': ['hL', 'daL', 'L', 'dL', 'cL', 'mL'], 'hL': ['kL', 'daL', 'L', 'dL', 'cL', 'mL'], 'daL': ['kL', 'hL', 'L', 'dL', 'cL', 'mL'], 'L': ['kL', 'hL', 'daL', 'dL', 'cL', 'mL'], 'dL': ['kL', 'hL', 'daL', 'L', 'cL', 'mL'], 'cL': ['kL', 'hL', 'daL', 'L', 'dL', 'mL'], 'mL': ['kL', 'hL', 'daL', 'L', 'dL', 'cL']

}

print("\nEscolha a unidade final:")
for i, unidade in enumerate(opcoes[unidade_inicial], 1):
    print(f"{i}. {unidade}")

escolha = input('Digite a sua escolha: ')
return opcoes[unidade_inicial][int(escolha) - 1]

while True: entrada = input('\nEscolha a unidade a ser transformada:\n1.Quilolitro(kL)\n2.Hectolitro(hL)\n3.Decalitro(daL)\n4.Litro(L)\n5.Decilitro(dL)\n6.Centilitro(cL)\n7.Mililitro(mL)\n8.Sair\nDigite a sua escolha: ')

if entrada == '8':
    print('Saindo.')
    break

elif entrada in ['1', '2', '3', '4', '5', '6', '7']:
    unidades_iniciais = {'1': 'kL', '2': 'hL', '3': 'daL', '4': 'L', '5': 'dL', '6': 'cL', '7': 'mL'}

    unidade_inicial = unidades_iniciais[entrada]

    valor = float(input(f'\nDigite o valor que deseja converter: '))

    unidade_final = exibir_opcoes_unidade_final(unidade_inicial)

    valor_convertido = converter(valor, unidade_inicial, unidade_final)
    print(f'\n{valor} {unidade_inicial} é igual a {valor_convertido:} {unidade_final}')

else:
    print('Opção inválida. Tente novamente.')
2 respostas
solução!

Oi Luiz,

Percebi que você está com dificuldades na conversão de unidades de volume no seu código. 💪

Analisando a sua função converter, notei que a lógica está correta, mas a tabela de unidades parece estar invertida. 🤔

Para resolver o problema, sugiro ajustar os valores no dicionário unidades para refletir a relação correta entre as unidades e mililitros (mL).

unidades = {'kL': 1000000, 'hL': 100000, 'daL': 10000, 'L': 1000, 'dL': 100, 'cL': 10, 'mL': 1}

Com essa alteração, o seu código deve realizar as conversões corretamente, inclusive para mililitros.

Exemplo: Para converter 1 hectolitro (hL) para mililitros (mL):

valor = 1
unidade_inicial = 'hL'
unidade_final = 'mL'
valor_convertido = converter(valor, unidade_inicial, unidade_final)
print(f'{valor} {unidade_inicial} é igual a {valor_convertido} {unidade_final}') # Output: 1 hL é igual a 100000.0 mL

🎓 Para saber mais: Tabela de conversão de unidades.

Continue praticando e explorando a programação! 😄

📌 Nota: Insira o código usando a ferramenta do fórum, não copie e cole diretamente e não use imagem apenas para mostrar o código! Aprenda a usar a ferramenta em Como turbinar seus estudos utilizando o fórum. código

Deu certo, muito obrigado pela ajuda.

E obrigado pela nota de inserir código.