Python - Duda al validar una cadena

   
Vista:

Duda al validar una cadena

Publicado por Alejandro (10 intervenciones) el 23/06/2014 21:02:50
hola , buenas tardes aqui en Argentina:

Tengo q validar un input de manera tal q solo este compuesto de unos y ceros. He tratado con un Try/(int(input('ingrese
un nro entero'))/ except/ print('solo nros enteros') pero tengo problemas para limitar los numeros que se ingresan pues quiero poner que se re ejecute el input si los nros ingresados son distintos de 1 o 0 y no me sale, si alguien pudiera ayudarme le estare desde ya agradecido. saludos
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

Duda al validar una cadena

Publicado por sergio (15 intervenciones) el 24/06/2014 06:51:45
una manera sencilla de hacerlo es con un for

ejemplo

for i in input
en el cuerpo pones la condicion si algun numero no es 1 o 0
imprimes que no es un numero valido

y si si es pues ya sabes que hacer


espero haberte ayudado
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

Duda al validar una cadena

Publicado por Alejandro (10 intervenciones) el 24/06/2014 13:20:27
pues te agradezco la molestia en responderme pero lo he intentado asi y no me sale:

1
2
3
4
5
6
binario=input('ingresa un binario:')
for digito in binario:
    if digito !='0' or digito !='1':
            print('solo numeros binarios')
    else:
            print('numero valido')

le he dado vueltas y no veo donde me estoy equivocando(de hecho me estoy equivocando pero no veo donde)
Gracias por la ayuda desde ya
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

Duda al validar una cadena

Publicado por sergio (15 intervenciones) el 24/06/2014 17:57:50
aqui tienes

1
2
3
4
5
6
7
binario=input("ingrese binario:")
 
for digito in binario:
    if digito != "0" and digito != "1":
        print("tu numero no es binario")
 
print ("tu numero que ingresaste es correcto")


recuerda que la pregunta es and no or porque el 1 no es igual que el 0 y viceversa por eso no te da.
y con un and tiene que ser 1 o 0.

en este codigo solo verifica que sean 1 o 0
asi que al ser diferente te manda al if y al ser iguales solo brinca el for y sigue con el codigo

si quieres que cuando un numero no sea 1 y 0 se repita desde el momento de ingresar el numero
metelo dentro de un while asi; hasta que sean puros 1 y 0, no se si me explico


espero haberte ayudado
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

Duda al validar una cadena

Publicado por Alejandro (10 intervenciones) el 24/06/2014 18:23:56
pues si, me has ayudado y mucho y te lo agradezco, pero tengo otra inquietud y es que si el numero no es binario me repite 'reingrese' tantas veces como nros incorrectos haya(logicamente por estar dentro de un for) tal como sigue:

1
2
3
4
5
6
binario =input('binario:')
for digito in binario:
    if digito != '0' and digito !='1':
        print('reingrese')
 
print('correcto')

la duda es como hacer para que si el input es incorrecto imprima solo una vez 'reingrese'. Probe hacerlo asi tambien:

1
2
3
4
5
6
7
8
binario =input('binario:')
for digito in binario:
    if digito != '0' and digito !='1':
 
        print('reingrese')
        break
 
print('correcto')

pero me imprime 'reingrese' y acto seguido ' correcto', espero que disculpes mi novatez pero estoy intentando aprender. Te agradezco una vez mas,
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

Duda al validar una cadena

Publicado por sergio (15 intervenciones) el 24/06/2014 19:36:29
mira tienes que buscar la manera de meterlo dentro de un while

ya tienes la base

el reingreso del numero al no ser un numero con 1 y 0 el brake esta bien porque ahi rompes el bucle for
pero no debes pedir un nuevo numero, lo que debes de hacer es que se vuelva a repetir desde el input
para eso debes meterlo en un while

esta es tu pregunta en tu codigo

1
si el numero es binario ?
si lo es el codigo no hace nada se brinca y ejecuta lo que esta seguido

ejemplo

for
cuerpo del for

lo que se ejecuta fura del for por ejemplo print(tu numero es correcto)


2
si el numero no es binario?
si no es de 1 y 0 rompe el if junto con el for
y vuelve desde el principio desde el momento que pedimos el input()
como te dije si tu pones el input en el if no se regresara al for entonces usa un while

3
entonces mientras el numero contenga un numero que sea diferente a 1 y 0 repite el while "logico el cuerpo del while tendra el for dentro"



mira has tu codigo intentalo y muestramelo
si no lo logras yo te ayudo


sale
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

Duda al validar una cadena

Publicado por Alejandro (10 intervenciones) el 24/06/2014 19:44:37
pues te agradezco tu gentileza, trabajare hoy con eso q me has explicado y mañana colgare el codigo, un abrazo.
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

Duda al validar una cadena

Publicado por sergio (15 intervenciones) el 24/06/2014 19:46:36
1
2
3
4
5
6
7
8
9
10
11
12
13
14
i=0
while i==0:
    binario=input("ingrese binario:")
 
    for digito in binario:
        if digito != "0" and digito != "1":
            print("tu numero no es binario")
            break
        else:
            i+=1
 
 
else:
    print ("tu numero que ingresaste es correcto")


mira prueba con eso tiene un error es un detalle
te lo dejo te tarea encuentra el error
aunque asi te puede funcionar
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

Duda al validar una cadena

Publicado por Alejandro (10 intervenciones) el 24/06/2014 20:09:08
pues me puse manos a la obra antes de lo previsto puesto q el asunto ya me tenia frustrado y quise resolverlo a la brevedad, aqui esta:
1
2
3
4
5
6
7
8
9
digito='' "
while digito != '0' and digito !='1':
    binario =input('binario:')
    for digito in binario:
        if digito != '0' and digito !='1':
 
            print('reingrese')
            break
print('correcto')

pues probandolo, y debo recalcar que mayormente gracias a tu explicacion, el codigo funciona tal como hacia una semana que venia intentandolo!, lo unico q resta en todo caso es si hay otra forma mas optima de escribirlo pero creo q asi esta bien. Una vez mas, eres un genio en lo q a mi respecta por haber dedicado tu tiempo a mis preguntas, estoy a tus ordenes.(pues aclaro q no vi tu ultimo post sino despues de publicar este, ya lo estoy llevando al interprete a ver q pasa lo tu me has mandado)
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

Duda al validar una cadena

Publicado por sergio (15 intervenciones) el 24/06/2014 20:43:37
te doy un consejo un error de principiante

el error que te comento es que si el numero escrito empiesa con 1 o 0 te va dar correcto

por eso siempre que formules una pregunta con un while o un for
ejemplo en este codigo lo que quieres buscar son numeros que no sean iguales a 1 o 0

entonces lo correcto seria
if binario == 2 and 3 and 4 5 6 7 8 9

porque al poner !=0 and 1
con el while o el for, si el numero empiesa con 0 o 1 te dara ese error

error de principiante

espero me entiendas

y haberte ayudado
con gusto
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

Duda al validar una cadena

Publicado por Alejandro (10 intervenciones) el 24/06/2014 20:49:36
pues espero sepas disculpar mi actual nivel primerizo pero no te he entendido bien,o sea, dicho de otro modo el codigo es incorrecto? ES que de hecho el ejercicio q debia resolver era no solo invalido para el caso de nros distinto de unos y ceros sino ademas invalido para cualquier otro caracter de la A a la Z y en un principio habia pensado eso q tu dices pero se me dio por pensar que si ponia ...== del 2 al 9 y de la A a la Zeta el codigo se me haria demasiado largo y dificultoso, por eso pense q mas facil seria poner que el programa falla para cualquier caracter distinto de '1' y '0'. Espero me haya podido explicar, 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

Duda al validar una cadena

Publicado por sergio (15 intervenciones) el 24/06/2014 21:35:31
si te entiendo pero si lo que estas manejando son numeros enteros y lo que esperas obtener son solo 1 y 0
puedes convertir a enteros la cadena

bueno ya seria segun el uso del programa

sale pues espero haberte ayudado y tambien consigas lo que quieres


saludo desde mexico
aqui estamos cuando quieras
adios
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