Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ChicoMaravilla en 3 Diciembre 2010, 19:30 pm



Título: [Python] - Texto sin mayusculas
Publicado por: ChicoMaravilla en 3 Diciembre 2010, 19:30 pm
Pido disculpas por las reiteradas preguntas que hago en el foro, pero no logro descifrar esto, pues miren, ahora estoy en el ejercicio 113 del libro de http://marmota.act.uji.es/mtp/pdf/python.pdf y la cuestión es que me pide que haga un programa que sea tal:

que pida un texto, y que si en ese texto aparece una letra mayúscula vuelva a repetir el input, pues miren yo hice esto:

Código
  1. def condicionwhile():
  2.    texto=str(raw_input("ESCRIBE UN TEXTO SIN MAYUSCULAS "))
  3.    while texto.isupper()==1:
  4.        texto=str(raw_input("ESCRIBE UN TEXTO SIN MAYUSCULAS "))
  5.        print "vuelve a intentarlo"
  6.    print "TEXTO CORRECTAMENTE ESCRITO"
  7. condicionwhile()

El texto aclara que hay que volver a preguntar solamente si se colocó una mayúscula en alguna parte del texto, pero el problema es que no se cual es la función que tengo que citar, yo me aproximé a poner :

Código
  1. while texto.isupper()==1:

pero resulta que el upper solo funciona con un carácter suelto y luego pensé que podría ser el title pero tampoco, ya que solo es en el comienzo de las palabras y no me sirve tampoco.

PD: voy por la función while



Título: Re: [Python] - Texto sin mayusculas
Publicado por: Shell Root en 3 Diciembre 2010, 19:48 pm
Podrías hacer algo como esto,
Código
  1. #!/usr/bin/python
  2.  
  3. # Ingresar cadena.
  4. sString = "HoLa"
  5.  
  6. # Recorrer cadena, caracter por caracter.
  7. for character in sString:
  8.  if ( character.isupper() == 1 ):
  9.    print character + " upper"
  10.  else:
  11.    print character + " lower"

output:
Código
  1. shellroot@alex:~/Escritorio$ python PoC.py
  2. H upper
  3. o lower
  4. L upper
  5. a lower


Título: Re: [Python] - Texto sin mayusculas
Publicado por: ChicoMaravilla en 3 Diciembre 2010, 23:41 pm
Podrías hacer algo como esto,
Código
  1. #!/usr/bin/python
  2.  
  3. # Ingresar cadena.
  4. sString = "HoLa"
  5.  
  6. # Recorrer cadena, caracter por caracter.
  7. for character in sString:
  8.  if ( character.isupper() == 1 ):
  9.    print character + " upper"
  10.  else:
  11.    print character + " lower"

output:
Código
  1. shellroot@alex:~/Escritorio$ python PoC.py
  2. H upper
  3. o lower
  4. L upper
  5. a lower

ok voy a hacer eso, gracias por la respuesta  ;-)


Título: Re: [Python] - Texto sin mayusculas
Publicado por: lalalpa en 25 Septiembre 2011, 18:25 pm
Hola como estan yo tengo estoy haciendo el mismo ejercicio y mi algoritmo quedo asi

texto=str(raw_input("ESCRIBE UN TEXTO EN MINUSCULAS: "))
   
for character in texto:

   while (character.isupper()== 1 ):
      texto=str(raw_input("ESCRIBE UN TEXTO EN MINUSCULAS: "))

el problema es q a pesar de que ingrese el texto en minúsculas sigue pidiéndome el ingreso del texto. probe usando un breake pero sigue sin funcionar


Título: Re: [Python] - Texto sin mayusculas
Publicado por: criskapunk en 25 Septiembre 2011, 19:22 pm
@lalalpa

Puse tu código dentro de una función:

Código
  1. def funcion():
  2. texto = raw_input("Escribe un texto en minusculas: ")
  3. for character in texto:
  4. while character.isupper():
  5. texto = raw_input("Escribe un texto en minusculas: ")

Cuando llamás a la función y la cadena que escribís está en minúsculas no hay problema, porque la condición del while no se cumple y no vuelve a pedir datos.
El problema aparece cuando la cadena cumple la condición del while.
Supongamos por ejemplo que la cadena introducida es "Hola mundo". Con el for recorremos la variable y tomamos el primer carácter, en este caso "H". La condición del while se cumple y se vuelve a pedir un valor al usuario, pero el problema está en que el valor de la variable character NO CAMBIÓ, por lo tanto la condición se cumplirá siempre y volverá a pedir datos infinitamente.

Un saludo.



Título: Re: [Python] - Texto sin mayusculas
Publicado por: lalalpa en 25 Septiembre 2011, 20:39 pm
-


Título: Re: [Python] - Texto sin mayusculas
Publicado por: lalalpa en 25 Septiembre 2011, 21:02 pm
-


Título: Re: [Python] - Texto sin mayusculas
Publicado por: lalalpa en 25 Septiembre 2011, 21:23 pm
def funcion():
  texto = raw_input("ESCRIBE EL TEXTO EN MINUSCULAS: ")
  for f in texto:
   while f.isupper():
      texto = raw_input("ESCRIBE EL TEXTO EN MINUSCULAS: ")
      f+= texto

funcion()



sigue sin funcionar..por favor q alguien me indique el error porq la verdad llevo un monton tratando de hacer est eejercicio y ya me canse