[Python] Las constante K.

Iniciado por Meta, 28 Octubre 2010, 15:18 PM

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

Meta

Hola:

Viendo este ejercicio.
Ver ejercicio

No se si he interpretado bien lo que me pide y siguiendo los ejemplos del PDF he modificado este código.

Código (python) [Seleccionar]
cadena = raw_input('Escribe una frase: ')
while cadena != '':
    cambios = 0
    for i in range(1, len(cadena)):
        if cadena[i] == ' ' and cadena[i-1] != ' ':
            cambios = cambios + 1

    if cadena[-1] == ' ':
        cambios = cambios - 1

    palabras = cambios + 1
    print 'Palabras:', palabras, 'palabras y', i, 'carácteres.'

    cadena = raw_input('Escribe una frase: ')


Su resultado es este.
CitarEscribe una frase: Vale más una imagen, que mil palabras.
Palabras: 7 palabras y 38 carácteres.
Escribe una frase:

¿Qué opinas?

;)
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

criskapunk

El codigo no lo mire, pero viendo el resultado que devuelve, no hace exactamente lo que te pide el ejercicio.

Lo que tenes que hacer es, dada una cadena y un numero entero, por ejemplo:

cadena = "Una imagen vale mas que mil palabras"
k = 3


Te diga si alguna de las palabras de la cadena tiene una cantidad de letras k. En este caso te deberia devolver verdadero ya que las palabras "Una" - "mas" - "que" - "mil" tienen k (3) letras.

Un saludo ;)

Meta

Ya te endiendo. Deja ver com me expreso lo que me cuentas.

Si en este cadena:
Citarcadena = "Una imagen vale mas que mil palabras"
Debo detectar de alguna manera que una palabra que contenga (k) 3 letras y algún espacio por medio para que las detecte. ¿Te refieres a eso? Parece que si.

Parece que hay que hacer algo, por ejemplo que detecte las tres primeras letras y cuando detecte un espacio o una coma o un punto te lo guarda y lo presenta con print.

Ejemplo:
cadena = "Una imagen vale mas que mil palabras"
- Si recorre una cadena "cadena" y detecta tres letras (k) y un espacio.
- Muestra k
-En caso contrario lo ignora su es mayor o menor.

¿Es algo así?

Sigo investigando...
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

#3
Con este código sacado del libro.

Código (python) [Seleccionar]
cadena = raw_input('Escribe una frase: ')
while cadena != '':
   cambios = 0
   anterior = ' '
   for i in cadena:
       if caracter == ' ' and caracter != ' ':
           cambios + 1
       anterior = caracter

   if cadena[-1] == ' ':
       cambios = cambios - 1

   palabras = cambios + 1
   print 'Palabras:', palabras, 'palabras y', i, 'carácteres.'
   print 'cambios', cambios


   cadena = raw_input('Escribe una frase: ')


Me da este error.
CitarTraceback (most recent call last):
 File "/home/simi/NetBeansProjects/simi/src/simi.py", line 25, in <module>
   if caracter == ' ' and caracter != ' ':
NameError: name 'caracter' is not defined

Edito:
Ya encontré el error.
Código (python) [Seleccionar]
cadena = raw_input('Escribe una frase: ')
while cadena != '':
    cambios = 0
    anterior = ' '
    for caracter in cadena:
        if caracter == ' ' and anterior != ' ':
            cambios += 1
        anterior = caracter

    if cadena[-1] == ' ':
        cambios = cambios - 1

    palabras = cambios + 1
    print 'Palabras:', palabras


Estoy traquiniando de como detectar los 3 primeros (k) caracter y espacio para que se quede con él.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

Pues, la variable CARACTER que valor contiene? Solo la veo en esa parte de código nada más. :p
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Meta

Haciéndola de esta menera:

Código (python) [Seleccionar]
cadena = raw_input('Escribe una frase: ')
while cadena != '':
    cambios = 0
    anterior = ' '
    for caracter in cadena:
        if caracter == ' ' and anterior != ' ':
            cambios += 1
        anterior = caracter

    if cadena[-1] == ' ':
        cambios = cambios - 1

    palabras = cambios + 1
    print 'Palabras:', palabras
    print 'Cambios',cambios
    print 'Caracter',caracter
    print 'Cadena',cadena


    cadena = raw_input('Escribe una frase: ')


Su resultado es este:
CitarEscribe una frase: Una imagen vale mas que mil palabras
Palabras: 7
Cambios 6
Caracter s
Cadena Una imagen vale mas que mil palabras
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

No entendí está parte del código,
Código (python,6) [Seleccionar]
cadena = raw_input('Escribe una frase: ')
while cadena != '':
   cambios = 0
   anterior = ' '
   for caracter in cadena:
       if caracter == ' ' and anterior != ' ':
           cambios += 1
       anterior = caracter

   if cadena[-1] == ' ':
       cambios = cambios - 1

   palabras = cambios + 1
   print 'Palabras:', palabras
   print 'Cambios',cambios
   print 'Caracter',caracter
   print 'Cadena',cadena


   cadena = raw_input('Escribe una frase: ')
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Meta



Por lo que entiendo if caracter es igual a espacio y anterior es distinto a espacio, si se cumple, cambios += 1, en caso de no cumplirse salta a anterior = caracter.

PD: ¿Cómo marcas ese color en las líneas de código?
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

xassiz~

Cita de: Meta en 28 Octubre 2010, 22:02 PM
PD: ¿Cómo marcas ese color en las líneas de código?
Dale a Citar y ya ves su BBCode ;D

criskapunk

En las etiquetas de Python pones una , y el numero de linea a resaltar.

[*code=python,2][*/code]

Muestra:

Código (python,2) [Seleccionar]

print "Prueba"
print "Prueba"
print "Prueba"
print "Prueba"


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
:¬¬