[Python]Sumar valor numérico de cada carácter de una cadena(ASCII).

Iniciado por S3kh, 3 Septiembre 2011, 23:15 PM

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

S3kh

 Estoy intentando hacer una función en la cuál se le pasa una cadena como parámetro, y obtiene el valor numérico de cada carácter, y los suma todos. Intenté con for y while, pero no le encuentro la vuelta. Alguien me podría decir si hay una función que haga esto?
         
edit: Que idiotez la mía olvidé decir que trabajo en Python.

criskapunk

Con valor numérico te referís a por ejemplo a=1, b=2... etc? O al valor ascii de cada carácter?




WaAYa HaCK

La cacatúa yoyó es nueva en el zoo!

S3kh

 Es en Python, y hablo del código ASCII. Estuve intentando muchas cosas. Me da cualquier resultado, o no me da nada. No le encuentro la forma de hacerlo andar, en si la lista de pasos que hize es correcta, pero le estoy fallando en el código. Alguien se le ocurre una manera? No es necesario ningún código, sólo que estoy estancado.
Cualquier ayuda sirve. Gracias.

criskapunk

Publica el código que llevas hecho así te podemos ayudar mejor.
Igualmente para obtener el valor ASCII de un carácter disponés de la función Ord().

http://docs.python.org/library/functions.html#ord

Un saludo.

S3kh

Es parte de otro código, pero que no viene al caso. Es experimental igual, y hay cosas que le faltan porque las estoy borrando y sacando:


class Jzk:

        def __init__(self, Llave):
                self.Llave = Llave
        def ObtenerValor(self):
                Contador      = 0
                for Caracter in self.Llave:
                        suma1 = ord(Llave[Contador]) + ord(self.Llave[Contador+1])
                        Contador += 1
                        suma  = suma1 + ord(Llave[Contador+2]
                return suma


Ya se que está mal programado y todo, es que estoy aprendiendo y experimento jeje.
Mi razonamiento es que inicie un contador a 0 por cada caracter haga esto:
sume cadena[contador] + cadena[contador+1[ (Por ejemplo la cadena ABCD suma A + B). El resultado le suma cadena[contador+2], esto sería 0+2, que sería el 3er elemento, y así sucesivamente.
Ya se que seguro me estoy pasando algo por alto, y que es un desastre el código jeje, pero bueno de los errores y peteadas se aprenden jeje
Gracias por la ayuda n.n

Jirp96

Hola!
Soy medio novato en el tema de la programacion y con python, pero(en mi opinion) deberias:
->Usar un bucle for en la variable "Llave" para ir recorriendo cada caracter
->Sumar(en un contador) el valor ascii de cada caracter(usando la funcion ord() que ya te comentaron)
->Luego hacer lo que necesites con ese valor(retornarlo, presentarlo por pantalla, etc)

Aca dejo el codigo(creo que no es "hacer la tarea", si es asi, pido disculpas y lo borro :P), y creo hace lo que pides, si no es asi, supongo que te entendi mal  :silbar:
Código (python) [Seleccionar]
class Jzk:

        def __init__(self, Llave):
                self.Llave = Llave
        def ObtenerValor(self):
                tmpSuma = 0 #variable contador
                for caracter in self.LLave: #Por cada caracter en "LLave"
tmpSuma += ord(caracter) #Aumentamos el valor de tmpSuma en el valor ascii del caracter "actual"
                return tmpSuma


Saludos!


S3kh

 Ah, y yo complicándome la vida. Lo peor es que eso lo pensé. Como se nota mi novatez jajaj. Gracias por la ayuda, y no, no fue hacer la tarea porque no lo voy a copiar  jeje. Me sirvió de mucho para orientarme, voy a implementarlo de otra forma. Te agradezco, entendí un poco mejor como es la onda jaja. Muchísimas gracias . :)