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.

Error de nombre: el nombre ‘a’ no está definido – Cómo solucionar esto

Cómo solucionar este error, por favor revise el siguiente código, soy solo un principiante, estoy intentando hacer 2 opciones una con números normales y la otra opción es números fraccionarios:

if choice == 1:
    a = float(input("Ingrese el primer número: "))
try:
    val = float(a)
except ValueError:
    print("¡Por favor ingrese solo números!")
    continue
b = float(input("Ingrese el segundo número: "))
try:
    val = str(b)
except ValueError:
    print("¡Por favor ingrese solo números!")
    continue
slo = add(a, b)
print("=", int(slo))

if choice == 2:
    a = float(input("Ingrese el primer número: "))
    try:
        val = float(a)
    except ValueError:
        print("¡Por favor ingrese solo números!")
        continue
    b = float(input("Ingrese el segundo número: "))
    try:
        val = str(b)
    except ValueError:
        print("¡Por favor ingrese solo números!")
        continue
    def fracción(a, b):
        fr = Fraction(a, b)
        return '{}/{}'.format(fr.numerador, fr.denominador)
Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas con el código proporcionado que podrían estar causando un error.

    En primer lugar, la función ‘add(a,b)’ no está definida en ningún lugar del código, por lo que llamarla probablemente resultaría en un error. Si esta función está destinada a formar parte del código y no está incluida, debería agregarse. Si no está destinada a estar allí, la línea ‘slo = add(a,b)’ debería eliminarse.

    En segundo lugar, el código para la segunda opción (choice == 2) está anidado dentro del código para la primera opción (choice == 1), lo que significa que no se ejecutará a menos que el usuario elija la primera opción primero. Si el código para ambas opciones debe ser independiente, deben separarse fuera de las declaraciones condicionales.

    Por último, la función ‘fraction(a,b)’ está definida dentro de la declaración condicional de la segunda opción, lo que significa que solo será accesible si el usuario elige esa opción. Si está destinada a ser accesible para ambas opciones, debería definirse antes de ambas declaraciones condicionales.

    Aquí hay un código actualizado que aborda estos problemas:

    from fractions import Fraction
    
    def fraction(a, b):
        fr = Fraction(a, b)
        return '{}/{}'.format(fr.numerator, fr.denominator)
    
    print("Seleccione una operación.")
    print("1. Sumar números normales")
    print("2. Sumar números fraccionarios")
    
    choice = int(input("Ingrese su elección (1/2): "))
    
    if choice == 1:
        try:
            a = float(input("Ingrese el primer número: "))
        except ValueError:
            print("¡Por favor, ingrese solo números!")
            exit()
        try:
            b = float(input("Ingrese el segundo número: "))
        except ValueError:
            print("¡Por favor, ingrese solo números!")
            exit()
        slo = a + b
        print("=", int(slo))
    
    elif choice == 2:
        try:
            a = float(input("Ingrese el primer número: "))
        except ValueError:
            print("¡Por favor, ingrese solo números!")
            exit()
        try:
            b = float(input("Ingrese el segundo número: "))
        except ValueError:
            print("¡Por favor, ingrese solo números!")
            exit()
        print(fraction(a,b))
    
    else:
        print("Entrada no válida")
    

    Este código debería manejar la entrada del usuario tanto para números normales como para fracciones y devolver los resultados correctos.

Comments are closed.