Función de mapa y diccionario en Python para sumar valores ASCII

Nos dan una oración en inglés (también puede contener dígitos), necesitamos calcular e imprimir la suma de los valores ASCII de los caracteres de cada palabra en esa oración.

Ejemplos:

Input :  GeeksforGeeks, a computer science portal
         for geeks
Output : Sentence representation as sum of ASCII 
         each character in a word:
         1361 97 879 730 658 327 527 
         Total sum -> 4579
Here, [GeeksforGeeks, ] -> 1361, [a] -> 97, [computer] 
-> 879, [science] -> 730 [portal] -> 658, [for] 
-> 327, [geeks] -> 527 

Input : I am a geek
Output : Sum of ASCII values:
         73 206 97 412 
         Total sum -> 788

Este problema tiene una solución existente, consulte Sumas de valores ASCII de cada palabra en un enlace de oración. Resolveremos este problema rápidamente en python usando la función map() y las estructuras de datos del diccionario . El enfoque es simple,

  1. Primero divida todas las palabras de la oración separadas por espacios.
  2. Cree un diccionario vacío que contendrá la palabra como clave y la suma de los valores ASCII de sus caracteres como valor.
  3. Ahora recorra la lista de palabras divididas y para cada palabra mapee la función ord(chr) en cada carácter de la palabra actual y luego calcule la suma de los valores ASCII de cada carácter de la palabra actual.
  4. Mientras recorre cada mapa de palabras, suma los valores ASCII de su palabra correspondiente en el diccionario resultante creado anteriormente.
  5. Recorra la lista dividida de palabras e imprima su valor ascii correspondiente buscando en el diccionario resultante.
    1. Python3

      # Function to find sums of ASCII values of each 
      # word in a sentence in
        
      def asciiSums(sentence):
        
          # split words separated by space
          words = sentence.split(' ')
        
          # create empty dictionary
          result = {}
        
          # calculate sum of ascii values of each word
          for word in words:
               currentSum = sum(map(ord,word))
        
               # map sum and word into resultant dictionary
               result[word] = currentSum
        
          totalSum = 0
        
          # iterate list of splited words in order to print
          # sum of ascii values of each word sequentially
          sumsOfAscii = [result[word] for word in words]
          print ('Sum of ASCII values:')
          print (' '.join(map(str,sumsOfAscii)))
          print ('Total Sum -> ',sum(sumsOfAscii))
        
      # Driver program
      if __name__ == "__main__":
          sentence = 'I am a geek'
          asciiSums(sentence)

      Producción:

      Sum of ASCII values:
      1361 97 879 730 658 327 527 
      Total sum -> 4579
      

Publicación traducida automáticamente

Artículo escrito por Shashank Mishra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *