Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2009, 11:53
ASelo182
 
Fecha de Ingreso: marzo-2009
Mensajes: 61
Antigüedad: 15 años, 1 mes
Puntos: 0
Sonrisa [Consulta] Prohibir ingresar datos invalidos en Python

Hola amigos!
Estoy desarrollando mi primera pequeña aplicación en Python y tengo algunos problemas.
Cabe destacar que estoy usando Python GUI y quisiera almacenar estos datos solo mientras el programa corre, es decir, cuando pongo Run Module en la ventana de Python.

Trataré de explicarme lo más detalladamente posible.
La cuestión es que deseo crear una función que le brinde al usuario la posibilidad de elegir entre cuatro colores disponibles: Rojo, Azul, Negro y Blanco. El usuario debe escribir alguno de esos cuatros colores cuando la aplicacion lo requiera. Si escribe alguno de esos colores correctamente, se procede con el siguiente paso, si lo deja en blanco o escribe cualquier palabra excepto esos colores NO dejarlo pasar al siguiente paso que es el DNI.

Yo he creado el siguiente código:
Código:
personas=0
while personas<20:
    personas=personas+1
    print "ID. Persona:",personas
    color=""
    negro="negro"
    blanco="blanco"
    rojo="rojo"
    azul="azul"
    while color=="":
        color=raw_input ("Ingresar Color (Negro, Blanco, Rojo o Azul) ")
        if color==negro:
            print "-- CORRECTO. 'Negro' es un Color valido --"
        if color==blanco:
            print "-- CORRECTO. 'Blanco' es un Color valido --"
        if color==azul:
            print "-- CORRECTO. 'Azul' es un Color valido --"
        if color==rojo:
            print "-- CORRECTO. 'Rojo' es un Color valido --"
    dni=""
    while len(dni)<>8:
        dni=raw_input ("Ingresar DNI ")
        if dni=="":
            print "-- ERROR. El DNI debe contener 8 numeros. --"
Bien. ¿Qué pasa con esto? Si yo no escribo ningún dato, es decir si dejo el paso en blanco y presiono ENTER, me vuelve a decir que ingrese Color. Pero si escribo cualquier cosa, por ejemplo, safsdfs (y aquí está el problema) me deja seguir al paso siguiente. Y es eso lo que quiero evitar. Me gustaria que los usuarios solo deban ingresar un color valido de los que predefiní anteriormente (Rojo, Azul, Blanco, Negro) para que puedan proceder con el siguiente paso. Y si escriben un dato no valido quiero que vuelvan a repetir ese paso hasta escribir un dato valido.

Espero que puedan ayudarme, estoy cansado de probar variables y ninguna me funciona.

Desde ya, muchas gracias!

Saludos a toda la comunidad