不能在 for 循环上使用 func



我正在努力解决欧拉问题22。我几乎做了所有的事情,但没能得到答案。

  1. 我做了一个名称dict,键是名称,值是它们的顺序
  2. 我创建了一个按字母顺序排列的dict witch,每个字母在订单上都有点

    {'A':1,'B':2,'C':3,……'Y':25,'Z':26}

  3. 定义了一个函数,它使循环中的每个名称都有意义,并给每个字母一个点,并将它们相加

    (对于"COLIN"c:3,o:15,…(

name_point = 0
for letter in name:
name_point += (alphabet.get(letter))
return name_point`enter code here
  1. 当尝试
for name in name_dict.keys():
x =name_pointer(name)

该错误属于

name_point += (alphabet.get(letter))
TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType' 
  1. 但是当ı不用于循环时
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的调用中。alphabetdictget方法用于获取某个密钥的值。如果找不到密钥,默认情况下会返回None(请参阅官方文档(。

您可以将default参数设置为0,这样找不到的键就不会添加到您的和中。

alphabet.get(letter, 0)

最新更新