elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Python (Moderador: Danielㅤ)
| | |-+  [Python] Ordenar palabras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Ordenar palabras  (Leído 23,710 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
[Python] Ordenar palabras
« en: 6 Octubre 2010, 19:19 pm »

Hola:

Quiero entender exactamente que es lo que hay que hacer. El problema hay que hacerlo en Python 2.x (no el 3.x).

Citar
Calcule la < de cinco palabras, es decir, la primera palabra
de las cinco en orden del abecedario. No se acepta que las mayúsculas sean ((alfabéticamente))
menores que las minúsculas. O sea, ’juanita’ es menor que ’Juanito’.

En la parte que dice:
Citar
Diseña un programa que calcule la menor de cinco palabras

Por ejemplo, no se si es lo que creo. Debo hacer un programa que deba escribir 5 palabras, no letras, que puede ser:

mesa, Silla, nevera, Cuadro, alfombra.

(Fijarse que Silla y Cuadro tiene la primera letra mayúscula).

A veces creo que se refiere a una palabra con 5 letras y que hay que resolver las letras de la palabra en orden alfabeto.

Creyendo más en lo primero. Introduzco las 5 palabras como indiqué arriba. Guardo en a = raw_input("Introduce la primera palabra: ") así hasta llegar e = raw_input("Introduce la quinta palabra: ").

¿Supuestamente el resultado debe quedar así en orden alfabético de "a" hasta la "z"?

alfombra
Cuadro
mesa
nevera
Silla

Sin contar lo otro que te cuenta el problema.
Citar
No aceptaremos que las mayúsculas sean ((alfabéticamente))
menores que las minúsculas. O sea, ’pepita’ es menor que ’Pepito’.

Aquí tendré que hacer más cosas. Lo qu eme interesa es lo primero entender que es lo que hay que hacer exactamente. Ya me encargaré si me sale ese problema. Estoy aprendiendo a programar con Python.

http://3.bp.blogspot.com/_p10GWKDC_aw/TCLE4jzQMMI/AAAAAAAABq8/v7MhUMTcGcA/s1600/ASCII1.GIF
http://2.bp.blogspot.com/_p10GWKDC_aw/TCLE7eUw4HI/AAAAAAAABrE/UaKf7iMsczQ/s1600/ascii2.gif

Saludo.


« Última modificación: 8 Octubre 2010, 05:48 am por Meta » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ordenar palabras
« Respuesta #1 en: 6 Octubre 2010, 19:36 pm »

Yo digo que es

alfombra
mesa
nevera
Cuadro
Silla

La verdad que no esta muy bien planteado :-\

Saludos


« Última modificación: 6 Octubre 2010, 19:52 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Ordenar palabras
« Respuesta #2 en: 6 Octubre 2010, 19:50 pm »

¿No será?

alfombra
mesa
nevera
Cuadro
Silla

Ya que la C de Cuadro va antes que la S de Silla. Digo, no lo se.

¿No está bien planteado el anuncio del problema o yo?

JEjeje.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ordenar palabras
« Respuesta #3 en: 6 Octubre 2010, 19:53 pm »

Si!, justo ahora lo miré y venía a cambiarlo :xD
Así como dices tu, pero coincido en que esta mal planteado el enunciado :-X

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Ordenar palabras
« Respuesta #4 en: 6 Octubre 2010, 20:11 pm »

Hola:

Parece ser que hay que ordenar las palabras. Se que en Excell lo hace tan fácil como complejo en Python.

Me imagino que mirará la tabla ASCII en cada palabra.

1) ¿Sumará los decimales en total de cada palabra?

2) Me imagino que debe comparar algo de una palabra a otra palabra y será letra por letra de cada palabra, si es así. ¿Cómo se hace? ¿Alguna idea?

3) Parece que hay que usar muchos <>= or and not, etc. Hay que jugar como eso. ¿Lo primero es cómo hacerlo?

No tengo las ideas claras para empezar a programar.

Saludo.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Ordenar palabras
« Respuesta #5 en: 6 Octubre 2010, 20:42 pm »

He buscado por ahí y se hace así:

Código
  1. lista = ["mesa", "Silla", "nevera", "Cuadro", "alfombra"]
  2. print max(*lista, key=lambda x: x.lower())

Debo aprender hacerlo sólo con If, else, elif, <, <=, >, or, and, etc...

¿A qué ya no es tan fácil así?

Es para tener soltura con ella, ya que estoy aprendiendo.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ordenar palabras
« Respuesta #6 en: 6 Octubre 2010, 20:53 pm »

A si, puedes hacerlo con expresiones lambda, con sort (lista.sort()), con un for, etc.
Digamos que la del if vuelve a ser la peor de todas :-\

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Ordenar palabras
« Respuesta #7 en: 7 Octubre 2010, 00:58 am »

Perdón, el ejercico es este:

Citar
Diseña un programa que calcule la menor de cinco palabras dadas; es decir, la primera palabra de las cinco en orden alfabético. Aceptaremos que las mayúsculas son "alfabéticamente" menores que las minúsculas, de acuerdo con la tabla ASCII.

Por ahora hay que hacer la entrada de datos.

Código
  1. # Introducir datos a la variable.
  2. palabra_1 = raw_input('Introduce primera palabra: ')
  3. palabra_2 = raw_input('Introduce segunda palabra: ')
  4. palabra_3 = raw_input('Introduce tercera palabra: ')
  5. palabra_4 = raw_input('Introduce cuarta palabra: ')
  6. palabra_5 = raw_input('Introduce quinta palabra: ')

Me imagino que habrá que usar algo de eso todo el rato, algo así:

Código
  1. if palabra_1 < palabra_2 < palabra_3 < palabra_4 < palabra_5:

o este otro pero hay que mejorarlo de alguna manera, hay que mostrar todos las palabras, no las que salgan.

Código
  1. if palabra_1 < palabra_2:
  2.    print palabra_1
  3. if palabra_2 < palabra_3:
  4.    print palabra_2
  5. if palabra_3 < palabra_4:
  6.    print palabra_3
  7. if palabra_4 < palabra_5:
  8.    print palabra_4

Edito:

Código
  1. # Introducir datos a la variable.
  2. palabra_1 = raw_input('Introduce primera palabra: ')
  3. palabra_2 = raw_input('Introduce segunda palabra: ')
  4. palabra_3 = raw_input('Introduce tercera palabra: ')
  5. palabra_4 = raw_input('Introduce cuarta palabra: ')
  6. palabra_5 = raw_input('Introduce quinta palabra: ')
  7.  
  8. if palabra_1 < palabra_2:
  9.    var1 = palabra_1
  10. if palabra_2 < palabra_3:
  11.    var2 = palabra_2
  12. if palabra_3 < palabra_4:
  13.    var3 = palabra_3
  14. if palabra_4 < palabra_5:
  15.    var4 = palabra_4
  16. if var1 < var3:
  17.    h1 = var1
  18. if var2 < var4:
  19.    h2 = var2
  20. else:
  21.    h3 = var5

No funciona porque sale este error.
Código:
Traceback (most recent call last):
  File "/home/acaymo/NetBeansProjects/tema4e2a4/src/tema4e2a4.py", line 37, in <module>
    if var1 < var3:
NameError: name 'var1' is not defined

Cosa que es normal porque aún no he definido las variables.


Edito 2:
Código
  1. # Introducir datos a la variable.
  2. palabra_1 = raw_input('Introduce primera palabra: ')
  3. palabra_2 = raw_input('Introduce segunda palabra: ')
  4. palabra_3 = raw_input('Introduce tercera palabra: ')
  5. palabra_4 = raw_input('Introduce cuarta palabra: ')
  6. palabra_5 = raw_input('Introduce quinta palabra: ')
  7.  
  8. var1 = palabra_1
  9. var2 = palabra_2
  10. var3 = palabra_3
  11. var4 = palabra_4
  12. var5 = palabra_5
  13.  
  14. if palabra_1 < palabra_2:
  15.    var1 = palabra_1
  16. if palabra_2 < palabra_3:
  17.    var2 = palabra_2
  18. if palabra_3 < palabra_4:
  19.    var3 = palabra_3
  20. if palabra_4 < palabra_5:
  21.    var4 = palabra_4
  22. if var1 < var3:
  23.    h1 = var1
  24. if var2 < var4:
  25.    h2 = var2
  26. else:
  27.    h3 = var5
  28.  
  29.    print var1, var2, var3, var4, var5

Me da este resultado sin ordenar las palabras, se qeudan como está.Voy a seguir chasmusquearme las neuronas.

Citar
Introduce primera palabra: mesa
Introduce segunda palabra: Silla
Introduce tercera palabra: nevera
Introduce cuarta palabra: Cuadro
Introduce quinta palabra: alfombra
mesa Silla nevera Cuadro alfombra
« Última modificación: 7 Octubre 2010, 01:12 am por Meta » En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: [Python] Ordenar palabras
« Respuesta #8 en: 11 Octubre 2010, 05:16 am »

He intentado hacer algo como esto:

Parece que no tengo lógica.

Código
  1. palabra_1 = raw_input('Introduce primera palabra: ')
  2. palabra_2 = raw_input('Introduce segunda palabra: ')
  3. palabra_3 = raw_input('Introduce tercera palabra: ')
  4. palabra_4 = raw_input('Introduce cuarta palabra: ')
  5. palabra_5 = raw_input('Introduce quinta palabra: ')
  6.  
  7. # Variable que guarda en la primera palabra.
  8. minimo =palabra_1
  9.  
  10. # Condiciones.
  11. if palabra_2.lower() < minimo:
  12.    minimo = palabra_2
  13. if palabra_3.lower() < minimo:
  14.    minimo = palabra_3
  15. if palabra_4.lower() < minimo:
  16.    minimo = palabra_4
  17. if palabra_5.lower() < minimo:
  18.    minimo = palabra_5
  19.  
  20. # Visualiza en pantalla la menor de la palabras.
  21.    print "\n" + minimo

Llevo un tiempito y nada.
En línea

ace332

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: [Python] Ordenar palabras
« Respuesta #9 en: 11 Octubre 2010, 20:16 pm »

Creo que Python hace las comparaciones de cadenas tal como lo pide el ejercicio:
Citar
... las mayúsculas son "alfabeticamente" menores que las minúsculas, de acuerdo con la tabla ASCII.

por consiguiente no es necesario usar lower para convertir las cadenas a minúsculas al efectuar las comparaciones..
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ordenar las palabras de un listbox
Programación Visual Basic
ricardovinzo 1 5,456 Último mensaje 8 Junio 2008, 21:06 pm
por cassiani
[Python] - Ordenal palabras. « 1 2 »
Python
Meta 15 10,670 Último mensaje 5 Noviembre 2010, 16:16 pm
por xassiz~
[Python] - Contador de palabras en frases
Python
ChicoMaravilla 4 31,442 Último mensaje 18 Enero 2011, 21:17 pm
por Karcrack
[SOLUCIONADO][PYTHON] Como ordenar(sort) un diccionario?
Scripting
Jirp96 5 17,090 Último mensaje 10 Junio 2016, 17:35 pm
por cerototal
Como ordenar alfabéticamente palabras en C++
Programación C/C++
loko5755 4 22,462 Último mensaje 5 Mayo 2014, 12:04 pm
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines