2

对于此代码,我尝试将与 ASCII 中字符串的字母相对应的数字代码相加,然后返回数字,但是错误是

ord() expected a character, but string of length 8 found

但我以为我已经拆分了字符串以避免这种情况

这是不起作用的代码:

def checksum(string):
    words = string.split()
    for i in words:
        num = ord(i)[0] + ord(i)[1:]
    return num

例如,如果字符串是“hi”,那么输出应该是 301

4

3 回答 3

1

你可以做一个单衬里,这可能是一种很好的pythonic方式

 def sum_string(string):
     return sum(map(ord, string))
于 2018-11-06T14:41:49.477 回答
0

据我所知,您对字符串中的字母求和的方式是错误的。试试这个:

string = 'hello world'

def sum_string(string):
     num = 0
     for letter in string:
         num += ord(letter)
     return num

sum_string(string)
于 2018-10-30T05:08:14.473 回答
-2
ord("h") # 105
ord("hi") # TypeError: ord() expected a character, but string of length 2 found

当您使用ord()内置函数时,只允许单个字符作为参数。

def check_sum(s):
    sum = 0
    for letter in s:
        sum += ord(letter)
    return sum

print(check_sum("hi")) # 209

顺便说一句,list在这个功能是不必要的。因为您已经可以遍历字符串类型本身。

于 2018-10-30T05:27:29.667 回答