我正在努力解决欧拉问题22。我几乎做了所有的事情,但没能得到答案。
- 我做了一个名称dict,键是名称,值是它们的顺序
-
我创建了一个按字母顺序排列的dict witch,每个字母在订单上都有点
{'A':1,'B':2,'C':3,……'Y':25,'Z':26}
-
定义了一个函数,它使循环中的每个名称都有意义,并给每个字母一个点,并将它们相加
(对于"COLIN"c:3,o:15,…(
name_point = 0
for letter in name:
name_point += (alphabet.get(letter))
return name_point`enter code here
- 当尝试
for name in name_dict.keys():
x =name_pointer(name)
该错误属于
name_point += (alphabet.get(letter))
TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType'
- 但是当ı不用于循环时
x = name_dict.get('COLIN')
print(name_pointer('COLIN')*x)
它给了我想要的,但只是一个名字
49714
def get_points(letter):
return ord(letter.lower()) - ord('a') + 1
def score_name(name):
return sum(get_points(l) for l in name)
问题出在对alphabet.get
的调用中。alphabet
是dict
,get
方法用于获取某个密钥的值。如果找不到密钥,默认情况下会返回None
(请参阅官方文档(。
您可以将default
参数设置为0
,这样找不到的键就不会添加到您的和中。
alphabet.get(letter, 0)