请问是我的思路有问题还是编码出错了(关键词-python)

我的水仙花数思路:
1.遍历100-1000,变量为n
2.把n转为字符串,定义为变量a,
3.遍历字符串a,每遍历一位数x,x转数字后添加进空列表b【】里,
4.定义变量c,遍历字符串a时每遍历一次c+1,当c==3(即遍历三次后),进行计算
5.计算是否列表b索引为0,1,2值的3次方之和 == int(x),是:把x值加入空列表shuzi【】,否:进行下一次遍历
详情见下图。请问是我的思路有问题还是编码出错了,为什么结果是个空列表呢

img

思路应该没问题。if里判断时不是int(x)而是n,x只是n的一部分,结果要等于n本身

img

你的 c 是多余的,直接for遍历a之后,得到的 b 就是3位

把 if b 判断缩进到 for a 循环对齐就可以了

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7596158
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的水仙花数的思路和代码,应该可以找出问题所在。以下是可能的原因和对应的解决方案。

    可能原因1:代码中计算错误 解决方案1:检查计算过程中的变量是否正确,可以添加一些打印语句来排查问题。例如,可以在计算每个数字的三次方并相加时,打印出中间结果。以下是一个可能的修正代码:

    results = []    # 创建一个空列表,用于存储水仙花数
    for n in range(100, 1000):
        i = n // 100
        j = n // 10 % 10
        k = n % 10
        sum_of_cubes = i**3 + j**3 + k**3    # 计算每个数字的三次方并相加
        if n == sum_of_cubes:
            results.append(n)    # 将水仙花数添加到结果列表中
        print(n, sum_of_cubes)    # 打印出中间结果,以便排查错误
    print(results)    # 打印出结果列表
    

    可能原因2:结果被输出到其他地方了 解决方案2:检查代码中是否有其他可疑的输出语句,例如将结果输出到文件中或者调用了其他函数。可以将结果存储到一个变量中,并打印出结果以检查结果是否正确。以下是一个可能的修正代码:

    results = []    # 创建一个空列表,用于存储水仙花数
    for n in range(100, 1000):
        i = n // 100
        j = n // 10 % 10
        k = n % 10
        sum_of_cubes = i**3 + j**3 + k**3    # 计算每个数字的三次方并相加
        if n == sum_of_cubes:
            results.append(n)    # 将水仙花数添加到结果列表中
    print(results)    # 打印出结果列表
    

    如果以上两种解决方案都没有解决问题,可能需要进一步排查其他的错误原因,例如IDE设置错误、Python环境问题等。