[ Foro de Python ]

Duda con bucles en Python

11-Mar-2018 22:58
Invitado (Diego Parga)
1 Respuestas

Hola muy buenas, soy nuevo en Python y estor aprendiéndolo por mi cuenta, de momento todo me ha ido bien, pero hoy he tenido un problema. Estoy haciendo una calculadora que te pide la operación que deseas realizar además y después 2 números con los que quieras operar. La cuestión es que he puesto un while para que, en el caso de que el usuario no escriba una de las opciones deseadas, se siga un bucle hasta que inserte una de las 4 opciones contempladas con el programa.

La cuestión es que al poner cualquier tipo de palabra no contemplada, en vez de repetir el bucle, el programa omite el bucle y pasa a preguntarle al usuario por los dos números con los que operar. Cuando la operación que el usuario a elegido es "zanahoria", por poner un ejemplo, lo curioso, es que el programa realiza una multiplicación cuando escribo "zanahoria" xD.

Aquí va el código:


repeticion = 1
operacion = 0
numero1 = 0
numero2 = 0

while repeticion > 0:
    operacion = input("Que tipo de operacion deseas hacer: ( Suma / Resta / Multiplicacion / Division )").upper()

    if operacion == "SUMA" or "RESTA" or "MULTIPLICACION" or "DIVISION":
        repeticion -= 1
    else:
        print("No te he entendido")

numero1 = int(input("Di un numero: "))
numero2 = int(input("Di un segundo numero: "))

if operacion == "SUMA":
    print("El resultado es", numero1 + numero2)
elif operacion == "RESTA":
    print("El resultado es", numero1 - numero2)
elif operacion == "DIVISION":
    print("El resultado es", numero1 / numero2)
    print("El resto de la division es", numero1 % numero2)
else:
    print("El resultado es", numero1 * numero2)

print("Calculo terminado")



Muchas gracias de antemano :P


14-Mar-2018 01:05
Nacho Cabanes (+84)

El comportamiento de ese programa es el esperable: "else" (sin ninguna condición adicional detrás) quiere decir "en caso contrario". Por tanto, si escribes CUALQUIER COSA que no sea las que enumeras ( "SUMA", "RESTA", "DIVISION") el programa multiplicará, porque eso es lo que hace el "else".






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)