Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: supLord en 4 Mayo 2016, 21:01 pm



Título: Preguna de Novato Python Validacion
Publicado por: supLord en 4 Mayo 2016, 21:01 pm
Hola señores quieria saber donde falla mi codigo.
opcion = 0
while opcion != 1 or opcion != 2:
         opcion = int(raw_input(" Introduzca opcion"))

Lo que sucede es que se me queda en el while y no sale.
 


Título: Re: Preguna de Novato Python Validacion
Publicado por: ivancea96 en 4 Mayo 2016, 21:04 pm
No es 'or', es 'and'. Siempre va a ser diferente de 1 o de 2.


Título: Re: Preguna de Novato Python Validacion
Publicado por: supLord en 5 Mayo 2016, 16:35 pm
¿Pero con el and no estoy obligando a que se cumplan ambas condiciones para salir del bucle? Necesito que cuando se cumpla una de las dos salga.


Título: Re: Preguna de Novato Python Validacion
Publicado por: FurioMoltisanti en 5 Mayo 2016, 17:21 pm

while opcion != 1 or opcion != 2:

sería: mientras opcion sea diferente a 1 o opcion sea diferente a 2 ejecuta

el resultado es que cualquier numero va a ser diferente a 1 o a 2.


while opcion != 1 and opcion != 2:

sería: mientras opcion sea diferente a 1 y opcion sea diferente a 2 ejecuta

el resultado es que cuando el numero sea 1 o 2 terminara el bucle.

Espero que se entienda.


Título: Re: Preguna de Novato Python Validacion
Publicado por: tincopasan en 5 Mayo 2016, 17:44 pm
veo dos cosas que no haría, lo realizaría así:
Código
  1. opcion= int(input("Introduzca opcion: ") )
  2. while not (opcion == 1 or opcion == 2):
  3.    opcion = int(input("Introduzca opcion: "))
  4.  

o sea 1)opción no tiene valor hasta que el usuario se lo da
2) while se repite hasta que devuelve false, por eso en este caso uso while not opcion1 or opcion 2

edito: tercer error: va en el foro de script/python (no todos lo verán en cualquier lado, lo ví de casualidad)