完美数字列表器



我正在尝试获取一个列出特定范围内完美数字的程序。

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

对于每个值,您应该输入thesum = 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 val ...循环中重置thesum。否则它只会增长。 (我也假设你的minvvsminrmaxvvsmaxr只是一个错字。确保它们相同。

您永远不会将thesum重置为 0。因此,它在数字之间携带。

在第一个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 = 1maxv = 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)

您忘记将thesum重置回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

最新更新