[Python] - Texto sin mayusculas

Iniciado por ChicoMaravilla, 3 Diciembre 2010, 19:30 PM

0 Miembros y 3 Visitantes están viendo este tema.

ChicoMaravilla

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 (python) [Seleccionar]
def condicionwhile():
    texto=str(raw_input("ESCRIBE UN TEXTO SIN MAYUSCULAS "))
    while texto.isupper()==1:
        texto=str(raw_input("ESCRIBE UN TEXTO SIN MAYUSCULAS "))
        print "vuelve a intentarlo"
    print "TEXTO CORRECTAMENTE ESCRITO"
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 (python) [Seleccionar]
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


Shell Root

Podrías hacer algo como esto,
Código (python) [Seleccionar]
#!/usr/bin/python

# Ingresar cadena.
sString = "HoLa"

# Recorrer cadena, caracter por caracter.
for character in sString:
  if ( character.isupper() == 1 ):
    print character + " upper"
  else:
    print character + " lower"


output:
Código (PoC) [Seleccionar]
shellroot@alex:~/Escritorio$ python PoC.py
H upper
o lower
L upper
a lower
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

ChicoMaravilla

Cita de: Shell Root en  3 Diciembre 2010, 19:48 PM
Podrías hacer algo como esto,
Código (python) [Seleccionar]
#!/usr/bin/python

# Ingresar cadena.
sString = "HoLa"

# Recorrer cadena, caracter por caracter.
for character in sString:
  if ( character.isupper() == 1 ):
    print character + " upper"
  else:
    print character + " lower"


output:
Código (PoC) [Seleccionar]
shellroot@alex:~/Escritorio$ python PoC.py
H upper
o lower
L upper
a lower


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

lalalpa

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

criskapunk

@lalalpa

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

Código (python) [Seleccionar]
def funcion():
texto = raw_input("Escribe un texto en minusculas: ")
for character in texto:
while character.isupper():
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.


lalalpa

#5
-

lalalpa

#6
-

lalalpa

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