Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: ChicoMaravilla en 8 Diciembre 2010, 16:17 PM

Título: [Python] - Texto sin vocales
Publicado por: ChicoMaravilla en 8 Diciembre 2010, 16:17 PM
Estoy en el ejercicio numero 194 de la pagina 159 del libro marmota ( lo tengo en la firma) , la cosa es que me tranque. Me pide que en una cadena de texto ingresada por el usuario, le saque las vocales, y muestre el texto sin las vocales, yo lo que hice fue:

Código (python) [Seleccionar]
cadena=str(raw_input("ESCRIBE UNA FRASE: "))
while cadena != "":
    cadena.lower()
    for vocal in cadena:
        if vocal=="a" or vocal=="e" or vocal=="i" or vocal=='o' or vocal=='u':
            vocal="."
            print cadena
            respuesta=raw_input("ESCRIBA LA FRASE RESUELTA: ")
            if respuesta==cadena:
                print "CORRECTO"
            if respuesta!=cadena:
                print "INCORRECTO"
    cadena=str(raw_input("ESCRIBE UNA FRASE: "))


aun así me da resultados erróneos, o cea no se como representar la cadena sin las vocales, yo allí las saque, pero luego no se como mostrarlas
Título: Re: [Python] - Texto sin vocales
Publicado por: Novlucker en 8 Diciembre 2010, 17:07 PM
Piensa que tu estas mostrando la cadena, por lo que para mostrarla sin vocales tienes que hacer algo con ella, y ahí no veo que estes haciendo nada :silbar:
Título: Re: [Python] - Texto sin vocales
Publicado por: .:WindHack:. en 8 Diciembre 2010, 17:13 PM
Tienes que leer carácter por carácter la cadena y comprobar si existe una vocal en ella. Si es así, la eliminas... Es muy fácil...


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Título: Re: [Python] - Texto sin vocales
Publicado por: ChicoMaravilla en 8 Diciembre 2010, 18:35 PM
  :rolleyes: y como seria hacer una subcadena para cada consonante de la cadena ingresada?  :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
Título: Re: [Python] - Texto sin vocales
Publicado por: ChicoMaravilla en 9 Diciembre 2010, 03:19 AM
Ya me eh aproximado hasta el punto de casi hacerlo, pero ahora me salta otro percance. Miren el script que hice es el siguiente:

Código (python) [Seleccionar]
def vocales():
    texto=raw_input("ESCRIBE UNA FRASE: ")
    while texto!="":
        for vocales in texto:
            if vocales=='a' or vocales=='e' or vocales=='i' or vocales=='o' or vocales=='u':
                vocales='.'
            vocal=[vocales][:]
            print vocal
        texto=raw_input("ESCRIBE UNA FRASE: ")
vocales()


muestra todo los consonantes y tapa a las vocales como yo quise desde un principio, pero me aparece una u a la izquierda de cada consonante, que no la puedo entender de donde surge ni que es. Y lo hice desde una lista ya que las cadenas no se le pueden agregar cosas, en cambio las listas si.
Desde ya muchas gracias  ;)
Título: Re: [Python] - Texto sin vocales
Publicado por: Novlucker en 9 Diciembre 2010, 11:11 AM
Te lo diré así ... te estas complicando :xD

Simplemente utiliza una variable temporal, y ve creando la palabra sin vocales

Saludos
Título: Re: [Python] - Texto sin vocales
Publicado por: daryo en 6 Enero 2011, 17:14 PM
algo asi ? while True:
   cadena=raw_input("ESCRIBE UNA FRASE: ")
   caden=""
   cadena = cadena.lower()
   for vocal in cadena:
       if vocal=="a" or vocal=="e" or vocal=="i" or vocal=='o' or vocal=='u':
           vocal=""
       caden += vocal
   print caden
   respuesta=raw_input("ESCRIBA LA FRASE RESUELTA: ")
   if respuesta==caden:
         print "CORRECTO"
   if respuesta!=caden:
         print "INCORRECTO"
   cadena=raw_input("presione enter")
Título: Re: [Python] - Texto sin vocales
Publicado por: Karcrack en 6 Enero 2011, 20:32 PM
Forma "normal":
Código (python) [Seleccionar]
cadena = raw_input("Escribe lo que quieras:")
vocales = "a","e","i","o","u"
new_cadena = ""

for letra in cadena:
   if not(letra.lower() in vocales):
       new_cadena += letra
       
print new_cadena


Forma chachi ::) :xD :
Código (python) [Seleccionar]
print "".join(letra for letra in raw_input("Escribe lo que quieras:") if not(letra.lower() in ("a","e","i","o","u")))
Título: Re: [Python] - Texto sin vocales
Publicado por: fallout20xx en 10 Enero 2011, 10:00 AM
a mi se me ocurre esta:

Código (python) [Seleccionar]

vocales = ('a', 'e', 'i', 'o', 'u')
texto = raw_input("introduzca el texto:")
for letra in vocales:
   texto = texto.replace(letra, "")
print texto


bastante simple no xD
Título: Re: [Python] - Texto sin vocales
Publicado por: Karcrack en 10 Enero 2011, 17:17 PM
@fallout20xx: No funcionara con mayusculas
Título: Re: [Python] - Texto sin vocales
Publicado por: Novlucker en 10 Enero 2011, 17:35 PM
La forma chachi :P
Código (python) [Seleccionar]
print ''.join(filter(lambda x:not x.lower() in 'aeiou',raw_input('Escribe lo que quieras:')))
Igual si reemplazamos las variables en la función de Karcrack, esta que dejo es dos caracteres más larga

Saludos

Título: Re: [Python] - Texto sin vocales
Publicado por: Karcrack en 10 Enero 2011, 18:02 PM
@Novlucker:(http://static.tumblr.com/1mzpegb/l5Ileo2w6/challenge-accepted.jpg)
Código (python) [Seleccionar]
print ''.join(l for l in raw_input() if not l in 'aeiouAEIOU')
:P No lo he reducido demasiado... pero algo es algo :rolleyes: :xD
Título: Re: [Python] - Texto sin vocales
Publicado por: Novlucker en 10 Enero 2011, 18:43 PM
También había pensado lo de aeiouAEIOU :xD , pero quería ponerlo igual al tuyo para que se viera la equivalencia, ahora me obligas a hacerlo más corto ::)
Código (python) [Seleccionar]
print''.join(l for l in raw_input()if not l in'aeiouAEIOU')
:xD
Título: Re: [Python] - Texto sin vocales
Publicado por: Karcrack en 10 Enero 2011, 21:14 PM
Quitar espacios no te parece deshonroso? :P :laugh:
Título: Re: [Python] - Texto sin vocales
Publicado por: Novlucker en 10 Enero 2011, 23:02 PM
Pero es más corto :xD

Saludos

P.D: si se te ocurre algún otro reto voy a estar listo, otra vez no me ganas >:D
Título: Re: [Python] - Texto sin vocales
Publicado por: Karcrack en 10 Enero 2011, 23:20 PM
@Novlucker: Cuando quieras, donde quieras >:D :P


Mod:
54 caracteres :P
Código (python) [Seleccionar]
print filter(lambda x:not x in'aeiouAEIOU',raw_input())

Un saludo :D
Título: Re: [Python] - Texto sin vocales
Publicado por: fallout20xx en 11 Enero 2011, 11:06 AM
Cita de: Karcrack en 10 Enero 2011, 23:20 PM
@Novlucker: Cuando quieras, donde quieras >:D :P


Mod:
Código (python) [Seleccionar]
print filter(lambda x:not x in'aeiouAEIOU',raw_input())

impresionante  :o
Título: Re: [Python] - Texto sin vocales
Publicado por: Novlucker en 11 Enero 2011, 11:11 AM
No me había dado cuenta, el filter no necesita del join :D , mi code podría haber sido el más corto :¬¬
Vamos! quiero un reto!

Saludos
Título: Re: [Python] - Texto sin vocales
Publicado por: Karcrack en 11 Enero 2011, 16:57 PM
http://foro.elhacker.net/scripting/retopython_a_ver_quien_la_tiene_mas_corta_v2-t316453.0.html;new#new
Me ha dado por la factorizacion :P