взятие функции ord () из строки и возврат суммы - PullRequest
0 голосов
/ 30 октября 2018

Для этого кода я пытаюсь сложить числовые коды, которые соответствуют буквам строки в 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

Ответы [ 3 ]

0 голосов
/ 30 октября 2018
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 в этой функции не нужен. Поскольку вы уже можете перебирать сам строковый тип.

0 голосов
/ 06 ноября 2018

Вы можете сделать один вкладыш, который может быть хорошим питоническим способом сделать это

 def sum_string(string):
     return sum(map(ord, string))
0 голосов
/ 30 октября 2018

Из того, что я могу сказать, способ суммирования букв в строке неверен. Попробуйте вместо этого:

string = 'hello world'

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

sum_string(string)
...