我正在制作一个针对我的挑战的程序:取一个字符串,找到每个字母的ascii值,并将这些数字加在一起并返回最终值。我到目前为止:
def AddAsciiList(string):
ascii = [ord(c) for c in string]
for item in ascii:
print item
total = ascii[i-1] + ascii[i]
return total
string = raw_input("Enter String:")
AddAsciiList(string)
“打印项目”声明是为了帮助我看出出了什么问题。我知道total =语句还没有用,我正在修复它。基本上我要问的是,为什么“打印项目”打印数字97?!
答案 0 :(得分:4)
这是因为ord()
返回数字的ASCII码,ascii
列表包含代码。请参阅示例 -
>>> testString = "test"
>>> testList = [ord(elem) for elem in testString] # testList = map(ord, testString) is another way.
>>> testList
[116, 101, 115, 116]
并且,当您遍历列表时,您将获得打印出来的整数值。
它会打印97
,因为您的输入字符串中必须有'a'
,因为
>>> chr(97)
'a'
查看help
函数的含义 -
>>> help(ord)
Help on built-in function ord in module __builtin__:
ord(...)
ord(c) -> integer
Return the integer ordinal of a one-character string.
如果要为字符串中的字符添加所有ASCII代码,请执行
>>> sum(map(ord, testString))
448
或
>>> sum(ord(elem) for elem in testString)
448
答案 1 :(得分:0)
在第二个语句中,您将创建一个整数列表。我们来看一个例子:
>>> s = 'abcde'
>>> a = [ord(c) for c in s]
>>> a
[97, 98, 99, 100, 101]
>>>
如果要对列表中的项目求和,只需使用sum。
>>> sum(a)
495
如果你想在一个膨胀的泡沫中完成整个事情:
>>> total = sum(ord(c) for c in s)
>>> total
495
希望这有帮助。