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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


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


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
[Python] - Ordenal palabras.
« en: 3 Noviembre 2010, 02:54 am »

:)

Ver imagen.

He intentado ordenas las palabras alfabéticamente, al darme cuenta, sólo lo hace por letra.

Código
  1. cadena = raw_input('Introduce palabra alfabética o no: ')
  2.  
  3. dato = ''
  4. for caracter in cadena:
  5.    if (cadena >= 'A' and cadena <= 'Z') or (cadena >= 'a' and cadena <= 'z'):
  6.        print 'Es una palabra alfabética.'
  7.    else:
  8.        print 'No es una palabra alfabética.'

;)


En línea

VirajeCR

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: [Python] - Ordenal palabras.
« Respuesta #1 en: 3 Noviembre 2010, 03:02 am »

Lo que deberías hacer es comparar la actual letra con la siguiente, si la actual es menor que la siguiente la palabra es alfabética si no no.


En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: [Python] - Ordenal palabras.
« Respuesta #2 en: 3 Noviembre 2010, 03:25 am »

¿Cómo haces eso?
¿Todo el rato con if else o elif?

Sólo se me ocurre eso y me puedo pegar un pedazo de código enorme.
En línea

VirajeCR

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: [Python] - Ordenal palabras.
« Respuesta #3 en: 3 Noviembre 2010, 05:53 am »

Qué tal algo así.

Código:
import sys

myString = raw_input('Introduce una palabra alfabetica: ')

charA = myString[0]

for charB in myString[1:]:
    if charA > charB:
        print "La palabra no es alfabetica"
        sys.exit(1)

print "La palabra es alfabetica"

Perdón si está muy mal hecho, pero no soy programado en python.

Saludos.
« Última modificación: 3 Noviembre 2010, 05:55 am por VirajeCR » En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: [Python] - Ordenal palabras.
« Respuesta #4 en: 3 Noviembre 2010, 08:12 am »

Puede ser de esta forma:
Código
  1. #Python3
  2. def isAlfab(palabra):
  3.    for x in range(len(palabra)):
  4.        if x>0:
  5.            if ord(palabra[x])<ord(palabra[x-1]):
  6.                return False
  7.    return True
  8.  
  9. while True:
  10.    palabra = input("Introduce: ")
  11.    if isAlfab(palabra):
  12.        print("si es una palabra alfabetica")
  13.    else:
  14.        print("no es una palabra alfabetica")
  15.    continuar = input("Desea continuar? s/cualquier otro: ")
  16.    if continuar.lower() != 's':
  17.        break
  18. print("Saliendo del programa")

pero hay que probarlo...
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: [Python] - Ordenal palabras.
« Respuesta #5 en: 3 Noviembre 2010, 10:13 am »

¿Por qué pones un corchete y un 0 en el medio?

Código
  1. import sys
  2.  
  3. myString = raw_input('Introduce una palabra alfabetica: ')
  4.  
  5. charA = myString[0]
  6.  
  7. for charB in myString[1:]:
  8.    if charA > charB:
  9.        print "La palabra no es alfabetica"
  10.        sys.exit(1)
  11.  
  12. print "La palabra es alfabetica"

Aquí abajo no estiendo esta parte.
myString[1:]:

Código
  1. import sys
  2.  
  3. myString = raw_input('Introduce una palabra alfabetica: ')
  4.  
  5. charA = myString[0]
  6.  
  7. for charB in myString[1:]:
  8.    if charA > charB:
  9.        print "La palabra no es alfabetica"
  10.        sys.exit(1)
  11.  
  12. print "La palabra es alfabetica"
« Última modificación: 3 Noviembre 2010, 11:34 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: [Python] - Ordenal palabras.
« Respuesta #6 en: 3 Noviembre 2010, 11:38 am »

Porque los strings también son arrays/listas, así que el índice cero es el primer caracter.
[1:] es para indicar que se toman los caracteres que van desde el índice 1 hasta el último.
Digamos que es algo así:
Citar
string = Novlucker
string[0] = N
string[1:] = ovlucker

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: [Python] - Ordenal palabras.
« Respuesta #7 en: 3 Noviembre 2010, 11:51 am »

Ok. Aún no he llegado la parte de usar listas. Ya decía yo que no lo conozco.

En el libro http://marmota.act.uji.es/mtp/pdf/python.pdf voy por la página 159.

Como no lo ha explicado aún, te pide en el ejercicio que uses Cadenes, no listas Lista es para más delante. ;)
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: [Python] - Ordenal palabras.
« Respuesta #8 en: 5 Noviembre 2010, 01:21 am »

Puede ser de esta forma:
Código
  1. #Python3
  2. def isAlfab(palabra):
  3.    for x in range(len(palabra)):
  4.        if x>0:
  5.            if ord(palabra[x])<ord(palabra[x-1]):
  6.                return False
  7.    return True
  8.  
  9. while True:
  10.    palabra = input("Introduce: ")
  11.    if isAlfab(palabra):
  12.        print("si es una palabra alfabetica")
  13.    else:
  14.        print("no es una palabra alfabetica")
  15.    continuar = input("Desea continuar? s/cualquier otro: ")
  16.    if continuar.lower() != 's':
  17.        break
  18. print("Saliendo del programa")

pero hay que probarlo...

Lo he probado y adaptado al Python 2.6.

Código
  1. def isAlfab(palabra):
  2.    for x in range(len(palabra)):
  3.        if x>0:
  4.            if ord(palabra[x])<ord(palabra[x-1]):
  5.                return False
  6.    return True
  7.  
  8. while True:
  9.    palabra = raw_input("Introduce: ")
  10.    if isAlfab(palabra):
  11.        print("si es una palabra alfabetica")
  12.    else:
  13.        print("no es una palabra alfabetica")
  14.    continuar = raw_input("Desea continuar? s/cualquier otro: ")
  15.    if continuar.lower() != 's':
  16.        break
  17. print "Saliendo del programa"

Es preferible hacerlo con un while en vez de preguntar si quiero continuar. Que siempre continúe.
En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: [Python] - Ordenal palabras.
« Respuesta #9 en: 5 Noviembre 2010, 04:24 am »

Código
  1. import sys
  2.  
  3. myString = raw_input('Introduce una palabra alfabetica: ')
  4.  
  5. charA = myString[0]
  6.  
  7. for charB in myString[1:]:
  8.    if charA > charB:
  9.        print "La palabra no es alfabetica"
  10.        sys.exit(1)
  11.  
  12. print "La palabra es alfabetica"

Probaste ese code? porque si introduzco una cadena como ABCDFA o abcdea me devuelve que es alfabetica  :huh:

Lo he probado y adaptado al Python 2.6.

Código
  1. def isAlfab(palabra):
  2.    for x in range(len(palabra)):
  3.        if x>0:
  4.            if ord(palabra[x])<ord(palabra[x-1]):
  5.                return False
  6.    return True
  7.  
  8. while True:
  9.    palabra = raw_input("Introduce: ")
  10.    if isAlfab(palabra):
  11.        print("si es una palabra alfabetica")
  12.    else:
  13.        print("no es una palabra alfabetica")
  14.    continuar = raw_input("Desea continuar? s/cualquier otro: ")
  15.    if continuar.lower() != 's':
  16.        break
  17. print "Saliendo del programa"

Es preferible hacerlo con un while en vez de preguntar si quiero continuar. Que siempre continúe.

Lo probaste con varias cadenas para ver si funciona completamente  :huh: porque solo probe un poco  :o
Respecto al while, es por costumbre  :P
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Ordenar palabras « 1 2 »
Scripting
Meta 13 23,540 Último mensaje 24 Noviembre 2010, 05:39 am
por facu_m
[Python] - Contador de palabras en frases
Scripting
ChicoMaravilla 4 31,387 Último mensaje 18 Enero 2011, 21:17 pm
por Karcrack
[PYTHON] Contador de palabras
Scripting
ChicoMaravilla 2 11,009 Último mensaje 5 Abril 2011, 20:47 pm
por Novlucker
PALABRAS RESERVADAS de PYTHON
Scripting
catholicus 2 5,975 Último mensaje 27 Junio 2011, 00:22 am
por zZznewbiezZz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines