我正在尝试获取一个列出特定范围内完美数字的程序。
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
。否则它只会增长。 (我也假设你的minv
vsminr
和maxv
vsmaxr
只是一个错字。确保它们相同。
您永远不会将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 = 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)
您忘记将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