Foro de elhacker.net

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
  1. cadena=str(raw_input("ESCRIBE UNA FRASE: "))
  2. while cadena != "":
  3.    cadena.lower()
  4.    for vocal in cadena:
  5.        if vocal=="a" or vocal=="e" or vocal=="i" or vocal=='o' or vocal=='u':
  6.            vocal="."
  7.            print cadena
  8.            respuesta=raw_input("ESCRIBA LA FRASE RESUELTA: ")
  9.            if respuesta==cadena:
  10.                print "CORRECTO"
  11.            if respuesta!=cadena:
  12.                print "INCORRECTO"
  13.    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
  1. def vocales():
  2.    texto=raw_input("ESCRIBE UNA FRASE: ")
  3.    while texto!="":
  4.        for vocales in texto:
  5.            if vocales=='a' or vocales=='e' or vocales=='i' or vocales=='o' or vocales=='u':
  6.                vocales='.'
  7.            vocal=[vocales][:]
  8.            print vocal
  9.        texto=raw_input("ESCRIBE UNA FRASE: ")
  10. 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 ?
Código:
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
  1. cadena = raw_input("Escribe lo que quieras:")
  2. vocales = "a","e","i","o","u"
  3. new_cadena = ""
  4.  
  5. for letra in cadena:
  6.    if not(letra.lower() in vocales):
  7.        new_cadena += letra
  8.  
  9. print new_cadena

Forma chachi ::) :xD :
Código
  1. 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
  1. vocales = ('a', 'e', 'i', 'o', 'u')
  2. texto = raw_input("introduzca el texto:")
  3. for letra in vocales:
  4.    texto = texto.replace(letra, "")
  5. print texto
  6.  

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
  1. 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
  1. 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
  1. 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
  1. 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
@Novlucker: Cuando quieras, donde quieras >:D :P

Mod:
Código
  1. 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
Código:
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