Hola, buenas. Estoy aprendiendo python y haciendo ejercicios me ha entrado una duda. Como podria hacer este programa sin recurrir a arrays/colecciones. Es decir, he intentado hacerlo facilmente usando solo estructuras de control pero se me atraganta.
He intentado también recurrir a los metodos del objeto 'string' pero no he conseguido llegar a una solucion clara.
El ejercicio es el siguiente:
7. Cree un programa que lea una secuencia de teclado terminada en punto y determine si es una secuencia de palabras ascendente, descendente, ambos o ninguno. Para ello se usa el numero de palabras de cada palabra. Supongamos que la secuencia esta compuesta exclusivamente por letras minusculas, sin acentos ni puntos y con el punto como final de secuencia.
Otra opcion que he pensado es usar subprogramas. El hecho es que pretendo encontrar una solución sencilla, corta y eficiente. Quizas la respuesta a este ejercicio no sea tan facil y por eso no encuentro dicha solución 'tan fácil'.
Por otra parte, aclaro una parte del ejercicio:
- Una secuencia no es ascendiente si el numero de letras de una palabra es mayor que el numero de letras siguiente
- Por otra parte, no es descendiente si el numero de letras de una palabra es menor que el numero de letras de la siguiente.
Es decir, para dar algunos ejemplos:
hola amigo --> ascendente porque las longitudes son 4 y 5
cama rama pato. --> ascendente y descendente porque las longitudes son 4,4,4
armario rama --> descente porque las longitudes son 7 y 4
amigo --> ascendente y descendente porque las longitudes son 5
llama a casa --> Ni ascendente ni descendente porque las longitudes son 5,1,4
[FONT=monospace]
[/FONT]
Aqui dejo mi programa comenzado:
sec = raw_input('Escribe una secuencia en letras minusculas y acabada en punto. Entonces, te dire si es ascendente o descendente:')
c_prec ='' #Lo he creado con vista a que cuando recorramos la secuencia, también evalue el elemento anterior. Creo que puede ir por ahi
num_letras = 0
# Esto lo hago para detectar que el usuario no me hace trampas.
while sec.islower() == False or sec.endswith('.') == False:
___print ' No has introducido bien los datos. Comprueba si has escrito la secuencia acabada en punto y en minusculas'
___sec = raw_input('Escribe una secuencia en letras minusculas y acabada en punto. Entonces, te dire si es ascendente o descendente:')
for i in sec:
___
(a partir de aqui me entran muchas dudas. No se si estoy haciendo el programa mas dificil de lo que deberia)
# Tengo diferentes ideas en mi cabeza pero no consigo materializarlas. A primera vista, he pensado en usar la estructura de control for-in para recorrer la secuencia. Luego, he pensado en hacer algo de contar los espacios (o almenos considerar los espacios en blanco para algo) i tambien muy importante, he pensado en crear un contador o algo parecido que vaya contando las letras entre espacio y espacio. Luego solo se trataria de comparar los diferentes contadores y asi dar una respuesta.
# Recuerdo que me estoy iniciando en python. No se si mi idea es buena o me estoy complicando demasiado. En lo que llevo en python lo que si que me he dado cuenta es que existen metodos, librerias... que te facilitan mucho estas cosas.
Gracias!
He intentado también recurrir a los metodos del objeto 'string' pero no he conseguido llegar a una solucion clara.
El ejercicio es el siguiente:
7. Cree un programa que lea una secuencia de teclado terminada en punto y determine si es una secuencia de palabras ascendente, descendente, ambos o ninguno. Para ello se usa el numero de palabras de cada palabra. Supongamos que la secuencia esta compuesta exclusivamente por letras minusculas, sin acentos ni puntos y con el punto como final de secuencia.
Otra opcion que he pensado es usar subprogramas. El hecho es que pretendo encontrar una solución sencilla, corta y eficiente. Quizas la respuesta a este ejercicio no sea tan facil y por eso no encuentro dicha solución 'tan fácil'.
Por otra parte, aclaro una parte del ejercicio:
- Una secuencia no es ascendiente si el numero de letras de una palabra es mayor que el numero de letras siguiente
- Por otra parte, no es descendiente si el numero de letras de una palabra es menor que el numero de letras de la siguiente.
Es decir, para dar algunos ejemplos:
hola amigo --> ascendente porque las longitudes son 4 y 5
cama rama pato. --> ascendente y descendente porque las longitudes son 4,4,4
armario rama --> descente porque las longitudes son 7 y 4
amigo --> ascendente y descendente porque las longitudes son 5
llama a casa --> Ni ascendente ni descendente porque las longitudes son 5,1,4
[FONT=monospace]
[/FONT]
Aqui dejo mi programa comenzado:
sec = raw_input('Escribe una secuencia en letras minusculas y acabada en punto. Entonces, te dire si es ascendente o descendente:')
c_prec ='' #Lo he creado con vista a que cuando recorramos la secuencia, también evalue el elemento anterior. Creo que puede ir por ahi
num_letras = 0
# Esto lo hago para detectar que el usuario no me hace trampas.
while sec.islower() == False or sec.endswith('.') == False:
___print ' No has introducido bien los datos. Comprueba si has escrito la secuencia acabada en punto y en minusculas'
___sec = raw_input('Escribe una secuencia en letras minusculas y acabada en punto. Entonces, te dire si es ascendente o descendente:')
for i in sec:
___
(a partir de aqui me entran muchas dudas. No se si estoy haciendo el programa mas dificil de lo que deberia)
# Tengo diferentes ideas en mi cabeza pero no consigo materializarlas. A primera vista, he pensado en usar la estructura de control for-in para recorrer la secuencia. Luego, he pensado en hacer algo de contar los espacios (o almenos considerar los espacios en blanco para algo) i tambien muy importante, he pensado en crear un contador o algo parecido que vaya contando las letras entre espacio y espacio. Luego solo se trataria de comparar los diferentes contadores y asi dar una respuesta.
# Recuerdo que me estoy iniciando en python. No se si mi idea es buena o me estoy complicando demasiado. En lo que llevo en python lo que si que me he dado cuenta es que existen metodos, librerias... que te facilitan mucho estas cosas.
Gracias!
Comentario