Foros del Web » Programando para Internet » Python »

Ordenar palabras

Estas en el tema de Ordenar palabras en el foro de Python en Foros del Web. Hola: Quiero entender exactamente que es lo que hay que hacer. El problema hay que hacerlo en Python 2.x (no el 3.x). Cita: Diseña un ...
  #1 (permalink)  
Antiguo 06/10/2010, 11:20
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 729
Antigüedad: 17 años, 5 meses
Puntos: 8
Ordenar palabras

Hola:

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

Cita:
Diseña un programa que calcule la menor de cinco palabras dadas; es decir, la primera palabra
de las cinco en orden alfabético. No aceptaremos que las mayúsculas sean ((alfabéticamente))
menores que las minúsculas. O sea, ’pepita’ es menor que ’Pepito’.
En la parte que dice:
Cita:
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.
Cita:
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_a...600/ASCII1.GIF
http://2.bp.blogspot.com/_p10GWKDC_a...600/ascii2.gif

Saludo.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #2 (permalink)  
Antiguo 06/10/2010, 12:33
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ordenar palabras

Checa las FAQ's hay una función para sacar el máximo.

Código Python:
Ver original
  1. lista = ["mesa", "Silla", "nevera", "Cuadro", "alfombra"]
  2. print max(*lista, key=lambda x: x.lower())
  #3 (permalink)  
Antiguo 06/10/2010, 12:41
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 729
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Ordenar palabras

Cita:
Iniciado por razpeitia Ver Mensaje
Checa las FAQ's hay una función para sacar el máximo.

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

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.

aún así muchas gracias.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #4 (permalink)  
Antiguo 06/10/2010, 13:44
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ordenar palabras

Si bien implementar una función que saque el máximo (o mínimo) de una lista de elementos no es difícil.

Y como es para propósitos educacionales deberías de intentarlo por ti mismo y preguntar tus dudas puntuales no solo dejar el problema y simplemente decir resuelvan lo.

Código:
funcion maximo(lista):
    max = primer elemento en la lista
    para cada elemento en lista:
        Si elemento > max:
            max = elemento
    return max
  #5 (permalink)  
Antiguo 06/10/2010, 16:35
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 729
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Ordenar palabras

Perdón, el ejercico es este:

Cita:
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:
# Introducir datos a la variable.
palabra_1 = raw_input('Introduce primera palabra: ')
palabra_2 = raw_input('Introduce segunda palabra: ')
palabra_3 = raw_input('Introduce tercera palabra: ')
palabra_4 = raw_input('Introduce cuarta palabra: ')
palabra_5 = raw_input('Introduce quinta palabra: ')
Me imagino que habrá que usar algo de eso todo el rato, algo así:

Código:
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:
if palabra_1 < palabra_2:
    print palabra_1
if palabra_2 < palabra_3:
    print palabra_2
if palabra_3 < palabra_4:
    print palabra_3
if palabra_4 < palabra_5:
    print palabra_4
Edito:

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

if palabra_1 < palabra_2:
    var1 = palabra_1
if palabra_2 < palabra_3:
    var2 = palabra_2
if palabra_3 < palabra_4:
    var3 = palabra_3
if palabra_4 < palabra_5:
    var4 = palabra_4
if var1 < var3:
    h1 = var1
if var2 < var4:
    h2 = var2
else:
    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 Python:
Ver original
  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.

Cita:
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
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar

Última edición por REHome; 06/10/2010 a las 17:11
  #6 (permalink)  
Antiguo 06/10/2010, 22:27
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ordenar palabras

Ok por lo que veo todavía no te enseñar a usar for, while, listas, etc...

Código:
#Pseudo código:
minimo = palabra_1
Si palabra_2 < minimo
    minimo = palabra_2
print minimo
#Este imprime el valor minimo en para 2 palabras
#Puedes generalizarlo para N palabras? (Y por lo tanto para 5).
Ojo no te piden que imprimas la lista en orden solo que imprimas el menor. Ademas te dicen que esta bien que "A" es menor que "a" así que NO necesitaras algún ajuste especial.

Edito a la mejor lo entiendas mejor con 3 palabras
Código:
#Pseudo código:
minimo = palabra_1
Si palabra_2 < minimo
    minimo = palabra_2
Si palabra_3 < minimo
    minimo = palabra_3
print minimo

Última edición por razpeitia; 06/10/2010 a las 23:08
  #7 (permalink)  
Antiguo 07/10/2010, 07:15
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 729
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Ordenar palabras

Es verdad, hay que poner una sola palabra. El tema de los for no hay que usarlo, ni while, ni array. Cuando llegue a esa parte los usaré, si no no aprendo ahcer las cosas bien.

Me funciona. Muchas gracias por tu algoritmo.

En cuanto al otro es:

Diseña un programa que calcule la menor de cinco palabras dadas; es decir, la primera palabra de las cinco en orden alfabético. No aceptaremos que las mayúsculas sean "alfabéticamente" menores que las minúsculas. O sea, ’pepita’ es menor que ’Pepito’.


Si necesita algo especial para que las minúscula sea primero.

Estaba traquiniando con ello de esa manera.

Código:
if minimo >= "A" and minimo <= "Z":
Pero no funciona.

Código:
palabra_1 = raw_input('Introduce primera palabra: ')
palabra_2 = raw_input('Introduce segunda palabra: ')
palabra_3 = raw_input('Introduce tercera palabra: ')
palabra_4 = raw_input('Introduce cuarta palabra: ')
palabra_5 = raw_input('Introduce quinta palabra: ')


minimo =palabra_1


if palabra_2 < minimo:
    minimo = palabra_2
if palabra_3 < minimo:
    minimo = palabra_3
if palabra_4 < minimo:
    minimo = palabra_4
if palabra_5 < minimo:
    minimo = palabra_5

if minimo >= "A" and minimo <= "Z": # Sin esta línea me funciona el ejercicio del primero. Este caso se trata de hacer funcionar el segundo.


print "\n" + minimo
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar

Última edición por REHome; 07/10/2010 a las 08:18
  #8 (permalink)  
Antiguo 07/10/2010, 08:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ordenar palabras

Puedes usar palabra_n.lower() para convertir toda la cadena a minúsculas ; )
  #9 (permalink)  
Antiguo 07/10/2010, 10:47
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 729
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Ordenar palabras

Cita:
Iniciado por razpeitia Ver Mensaje
Puedes usar palabra_n.lower() para convertir toda la cadena a minúsculas ; )
No me muestra nada a la salida del print.

Código:
# Condiciones.
if palabra_2.lower() < minimo:
    minimo = palabra_2.lower()
if palabra_3.lower() < minimo:
    minimo = palabra_3.lower()
if palabra_4.lower() < minimo:
    minimo = palabra_4.lower()
if palabra_5.lower() < minimo:
    minimo = palabra_5.lower()

# Visualiza en pantalla la menor de la palabras.
    print "\n" + minimo
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #10 (permalink)  
Antiguo 07/10/2010, 11:19
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ordenar palabras

Es por que print esta identado. O sea este dentro del if palabra_5.lower() < minimo

Otra cosa te piden mantener la mayúsculas y minúsculas?

Si no te piden mantener mayúsculas y minúsculas entonces cuando leas solo convierte todas las palabras a minúsculas.

Si te piden conservar la palabra original tienes que ser mas cuidadoso con lo que le pones a mínimo y donde usar lower()
  #11 (permalink)  
Antiguo 07/10/2010, 19:01
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 729
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Ordenar palabras

¿Estás diciendo que debo saber en que palabra_n debo usar el lower()?

Sigo investigando.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #12 (permalink)  
Antiguo 07/10/2010, 22:01
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ordenar palabras

Solo es cuestión de lógica, si quiero mantener la palabra original entonces no le debo asignar palabra_n.lower() y al momento de comparar la palabra_n con el mínimo y mínimo es la cadena original entonces también tendría que convertirla en minúsculas.

Etiquetas: palabras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:01.