在Python中映射函数和字典以求和 ASCII 值
给定一个英语句子(也可以包含数字),我们需要计算并打印该句子中每个单词的字符的 ASCII 值之和。
例子:
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
此问题已有解决方案,请参考句子中每个单词的 ASCII 值总和链接。我们将在Python中使用 map()函数和 Dictionary 数据结构快速解决这个问题。做法很简单,
- 首先拆分句子中的所有单词,用空格分隔。
- 创建一个空字典,其中包含单词作为键,其字符的 ASCII 值之和作为值。
- 现在遍历拆分单词的列表,并为当前单词的每个字符上的每个单词映射 ord(chr)函数,它们计算当前单词每个字符的 ascii 值的总和。
- 在遍历上面创建的结果字典中对应单词的每个单词映射总和时。
- 通过查找结果字典,遍历拆分的单词列表并打印其对应的 ascii 值。
# 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)
输出:
Sum of ASCII values: 1361 97 879 730 658 327 527 Total sum -> 4579