es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mi código está dando una salida incorrecta al traducir pulgadas a centímetros y viceversa?

Mi código está dando una salida incorrecta aunque parece que todo está bien.

El propósito del código es traducir pulgadas a centímetros y viceversa.

Por ejemplo, con la entrada cm y luego 6, la salida es:

inch: 6, centimeter: 15.24

Pero debería ser:
<code>
inch: 2.362, centimeter: 6
</code>

Código:
```py
def intocm():
    ms = input('¿Qué es? (pulgadas-in o centímetros-cm): ')
    am = int(input('¿Cuántos de ellos hay?: '))
    intocm = 2.54
    global pulgada
    global cm

if ms == 'pulgadas' or 'in':
    cm = am * intocm
    pulgada = am

elif ms == 'centímetros' or ms == 'cm':
    cm = am
    pulgada = cm / intocm

print(f'pulgada: {pulgada}, centímetros: {cm}')

intocm()
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece haber un problema con el factor de conversión utilizado en el código. Mientras que el factor de conversión correcto de pulgadas a centímetros es 2.54, el código está usando 2.54 como el factor de conversión de centímetros a pulgadas también. Esto está resultando en una salida incorrecta para ciertos casos.

    Para solucionar este problema, necesitamos actualizar el factor de conversión de centímetros a pulgadas para que sea 1/2.54. Además, podemos simplificar el código eliminando el uso innecesario de variables globales.

    Código actualizado:

    def intocm():
        ms = input('¿Qué es? (pulgada-in o centímetro-cm): ')
        am = int(input('¿Cuántas son?: '))
        pulgada_a_cm = 2.54
        cm_a_pulgada = 1/2.54
    
        if ms == 'pulgada' or ms == 'in':
            cm = am * pulgada_a_cm
            pulgada = am
        elif ms == 'centímetro' or ms == 'cm':
            cm = am
            pulgada = cm * cm_a_pulgada
    
        print(f'pulgada: {pulgada:.3f}, centímetro: {cm:.3f}')
    
    intocm()
    

    Con la entrada cm y luego 6, el código actualizado producirá la salida esperada:

    pulgada: 2.362, centímetro: 6.000
    

Comments are closed.