gpt4 book ai didi

python - 在 Python 字典中查找值

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:47 24 4
gpt4 key购买 nike

我正在尝试记住数字的除数和。

divisorSums = {}

def sumDivisors(num):

global divisorSums

total = 0

if num == 1:
return 0

for i in xrange(num/2, 0, -1):
if i in divisorSums:
return divisorSums[i]
else:
if not num % i:
total += i

divisorSums[num] = total

return total

但是,当我循环遍历数字时,这会为所有数字返回 1。单独使用是正确的,所以问题出在我的查找系统上。我很确定我不明白如何在字典中查找值。有人可以帮帮我吗?

最佳答案

memoize 的常用快捷方式是使用可变的默认参数

def sumDivisors(num, divisorSums={}):

if num in divisorSums: # Check if you have
return divisorSums[num] # memoized the answer here

total = 0

if num == 1:
return 0

for i in xrange(num/2, 0, -1):
if not num % i:
total += i

divisorSums[num] = total

return total

除此之外,您的代码似乎工作正常。你是如何运行它以获得 1 的?

关于python - 在 Python 字典中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16640662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com