Python - Novato - Problema con while

 
Vista:

Novato - Problema con while

Publicado por Diego Parga (3 intervenciones) el 11/03/2018 22:14:02
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Novato - Problema con while

Publicado por algoritmo (245 intervenciones) el 11/03/2018 23:01:22
Prueba con:

1
if operacion in ["SUMA","RESTA","MULTIPLICACION","DIVISION"]:

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Novato - Problema con while

Publicado por Diego Parga (3 intervenciones) el 11/03/2018 23:07:20
Muchas gracias, el programa ahora si que funciona. ¿Podrias explicarme la diferencia entre lo que yo puse y tu solución?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Novato - Problema con while

Publicado por algoritmo (245 intervenciones) el 11/03/2018 23:53:32
Lo que yo te puse, es simple de entender:

if operacion in ["SUMA","RESTA","MULTIPLICACION","DIVISION"]:

Acepta el valor, si coincide con algún elemento de la lista

En la respuesta que tú pusiste, incluiste separadores con 'or'. Devolverá cierto si alguno de los condicionantes lo es.
Quizás tendrías que haber puesto:
if operacion == "SUMA" or operacion == "RESTA" or operacion == "MULTIPLICACION" or operacion == "DIVISION":
pero es muy largo. Creo que es preferible lo que te escribí.

Por otra parte, considera que python se comporta así en las siguientes situaciones:

if 'resta': print 1 ---> Pinta 1
if True: print 1 --> Pinta 1
if False: print 1 ----> No pinta nada
if 1: print 1 ----> Pinta 1
if 0: print 0 --> No pinta nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Novato - Problema con while

Publicado por Diego Parga (3 intervenciones) el 12/03/2018 00:02:25
Perfecto, me lo apunto. Muchisimas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar