【问题标题】:finding a list of perfect integers from a range of integer numbers从一系列整数中找到完美整数列表
【发布时间】:2020-11-10 22:37:10
【问题描述】:

用户将输入一个任意范围,其中结束数字是用户想要从这些数字中获得完美数字的数字,并将数字附加到列表中并打印列表或列表元素... 示例代码: sum_1=0 sum_2=0 b=[]

a=range(1,int(input('enter_num_upto you want perfect num')))

for i in a:
    for items in range(1,i):
        if(i%items)==0:
            sum_1=sum_1+items
            sum_2=sum_2+items+i
        
        if sum_1==i and (sum_2//2)==i:
                   b.append(i)
               
    for j in b:
         print(j)
    

代码运行没有错误,但没有显示任何输出.....请标记我的错误并解释正确的逻辑 提前致谢

【问题讨论】:

    标签: python list loops printing range


    【解决方案1】:

    我认为问题在于您尚未定义列表“b”。我建议在你定义之后

    a=range(1,int(input('enter_num_upto you want perfect num')))
    

    定义 b 为

    b=[]
    

    这将告诉程序存在一个列表“b”,然后您可以将项目附加到该列表中。您不能将项目附加到尚不存在的列表中。

    这两个变量 sum_1 和 sum_2 应该是一样的,你不能在“if 语句”中有条件地定义它们,因此你应该在你定义 b 之后在程序的开头定义它们

    sum_1 = 0
    sum_2 = 0
    

    至于你的代码的逻辑,我建议你不需要 sum_2,在经过产生 sum_1 的 for 循环后,检查 sum_1 是否等于 i。但请确保无论何时使用“范围”,都将结尾设置为要结束的数字。例如,如果您希望范围从 1 开始并在 I 结束,请使用 range(1,i+1)。这仅用于您的输入。确保在每次迭代后也将 sum_1 设置回 0。

    所以:

    a=range(1,int(input('enter_num_upto you want perfect num'))+1)
    b=[]
    sum_1=0
    
    for i in a:
        for item in range(1,i):
           if (i%item)==0:
              sum_1= sum_1+item
         
        if sum_1==i:
            b.append(i)
        
        sum_1=0
    
    
    
    for j in b:
       print(j)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      相关资源
      最近更新 更多