python - 为什么我的 Python 代码显示错误的结果?

标签 python python-3.x

我有一个代码可以读取 2 个整数 m 和 n,并打印所有 perfect numbers m 和 n 之间(包括 m 和 n)。如果我输入 2 和 7,它应该给我 6。但它给我 13。出了什么问题?

m=int(input())
n=int(input())

myList=[]

for i in range(m,n+1):
    for j in range(1,i):
        if i%j==0:
            myList.append(j)

sum=0
for i in range(0,len(myList)):
    sum=sum+myList[i]
    for j in range(m,n+1):
        if sum==j:
            sum=j

print(sum)

最佳答案

你让事情变得比需要的更复杂。您需要一个嵌套循环来解决这个问题。遍历范围内的每个数字,将值 x 设置为 0,每次找到可以整除的数字时,将其与 x 相加。如果在内循环结束时 x == i,那么您就有一个完美的数字并将其打印出来。如果您需要将其添加到列表中,请将其附加到您的列表中。您正在尝试保存所有中间数字,如果找到结果,只需保存结果即可。

for i in range(m,n+1):
    x = 0
    for j in range(1,i):
        if i % j == 0:
            x += j
    if i == x:
        print(i)

关于python - 为什么我的 Python 代码显示错误的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52610724/

相关文章:

python - Python 中使用 numpy 进行多元回归

python - Flask服务器偶尔报错: 'RuntimeError: maximum recursion depth exceeded while calling a Python object'

python - 如何为 Python 3 安装发行版

python - 在 DataFrame 中编码多个标签

python - cython 中的关键部分

python - k 个最近邻,具有准确度得分和混淆矩阵的交叉验证

python - 为什么以下简单的 Python 3 strptime() 代码可以在 OSX 而不是 Linux 上运行?

忽略 Python 类型提示

python-3.x - 如何运行 chrome headless 浏览器

python - 路口2 Pandas 数据框