Python 完全数列表器
我正试图得到一个程序,列出一定范围内的完美数字Python 完全数列表器,python,math,Python,Math,我正试图得到一个程序,列出一定范围内的完美数字 minv= int(input('Give me a minimum value: ')) maxv= int(input('Give me a minimum value: ')) thesum = 0 perfectnums = [] for val in range(minr, maxr + 1): for n in range(1, val): if val % n == 0: thesu
minv= int(input('Give me a minimum value: '))
maxv= int(input('Give me a minimum value: '))
thesum = 0
perfectnums = []
for val in range(minr, maxr + 1):
for n in range(1, val):
if val % n == 0:
thesum += n
if thesum == val:
perfectnums.append(val)
print(perfectnums)
当我将最小值设置为1,将最大值设置为10时,我预计会弹出6,请尝试在
for val…
循环中重置thesum
。否则它只会成长。
(我还假设您的
minv
vsminr
和maxv
vsmaxr
只是一个打字错误。请确保它们是相同的。)您永远不会将thesum
重置为0。因此,它在数字之间进行传递。对于每个val,您应该将SUM=0放入
minv= int(input('Give me a minimum value: '))
maxv= int(input('Give me a minimum value: '))
thesum = 0
perfectnums = []
for val in range(minr, maxr + 1):
# here
thesum = 0
for n in range(1, val):
if val % n == 0:
thesum += n
if thesum == val:
perfectnums.append(val)
print(perfectnums)
在第一个for循环中应重置thesum
变量。以下是工作代码:
minv= int(input('Give me a minimum value: '))
maxv= int(input('Give me a minimum value: '))
perfectnums = []
for val in range(minv, maxv + 1): # right variables minv and maxv
thesum = 0 # declare the variable here
for n in range(1, val):
if val % n == 0:
thesum += n
if thesum == val:
perfectnums.append(val)
print(perfectnums)
现在,对于minv=1
和maxv=10
,您将得到[6]
把GaryO和Alex说的话放在一起,在问题中修正文本:
minv= int(input('Give me a minimum value: '))
maxv= int(input('Give me a maximum value: '))
perfectnums = []
for val in range(minv, maxv + 1):
thesum = 0
for n in range(1, val):
if val % n == 0:
thesum += n
if thesum == val:
perfectnums.append(val)
print(perfectnums)
您忘记将SUM重置为0
:
minv= int(input('Give me a minimum value: '))
maxv= int(input('Give me a maximum value: '))
thesum = 0
perfectnums = []
for val in range(minv, maxv + 1):
for n in range(1, val):
if val % n == 0:
thesum += n
if thesum == val:
perfectnums.append(val)
thesum = 0
一个完全数等于它的除数之和。您必须处理所有除数,然后测试它们的和是否等于该值。sum==val
测试必须在循环迭代可能的除数之后进行。对于您探测的每个val
,必须将和初始化为零;必须将thesum=0
移动到外部循环中。显然,您还复制并粘贴了输入行。看看你的第二个输入提示!