[Python] Ordenar palabras

Iniciado por Meta, 6 Octubre 2010, 19:19 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Hola:

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

CitarCalcule 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:
CitarDiseñ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.
CitarNo 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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Novlucker

#1
Yo digo que es

alfombra
mesa
nevera
Cuadro
Silla

La verdad que no esta muy bien planteado :-\

Saludos
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

¿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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Novlucker

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
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

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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

He buscado por ahí y se hace así:

Código (python) [Seleccionar]
lista = ["mesa", "Silla", "nevera", "Cuadro", "alfombra"]
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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Novlucker

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
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

#7
Perdón, el ejercico es este:

CitarDiseñ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 (python) [Seleccionar]
# 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 (python) [Seleccionar]
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 (python) [Seleccionar]
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 (python) [Seleccionar]
# 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.
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) [Seleccionar]
# 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: ')

var1 = palabra_1
var2 = palabra_2
var3 = palabra_3
var4 = palabra_4
var5 = palabra_5

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

    print var1, var2, var3, var4, var5


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

CitarIntroduce primera palabra: mesa
Introduce segunda palabra: Silla
Introduce tercera palabra: nevera
Introduce cuarta palabra: Cuadro
Introduce quinta palabra: alfombra
mesa Silla nevera Cuadro alfombra
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

He intentado hacer algo como esto:

Parece que no tengo lógica.

Código (python) [Seleccionar]
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: ')

# Variable que guarda en la primera palabra.
minimo =palabra_1

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

# Visualiza en pantalla la menor de la palabras.
    print "\n" + minimo


Llevo un tiempito y nada.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

ace332

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..