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.')