AlexPaopao 发表于 2023-5-22 22:45:12

【新手】:大佬帮忙看看我这个代码为啥if语句没有正确判断

for num in range(100, 999):
    a = num // 100
    b = (num // 10) % 10
    c = num % 10
    if num == (a*a) + (b*b) + (c*c):
      print(num)

18讲课后动动手0题。

isdkz 发表于 2023-5-22 22:45:13

本帖最后由 isdkz 于 2023-5-22 22:48 编辑

你的代码正在对100至999之间的所有数字进行循环,对每个数字进行判断。判断条件是:如果这个三位数等于它的每一位数字的平方和,则打印这个数字。

不过,我注意到你提到了"18讲课后动动手0题",我尝试理解这个参考背景。猜测这个问题可能是寻找100至999之间的三位数,其中该三位数等于每个位上数字的立方和,而不是平方和。这种情况是水仙花数的一个例子。

如果这个猜测是正确的,你的代码应该修改为:

for num in range(100, 999):
    a = num // 100
    b = (num // 10) % 10
    c = num % 10
    if num == (a*a*a) + (b*b*b) + (c*c*c): # 立方和,而不是平方和
      print(num)


希望这个回答对你有帮助!如果还有其他问题,欢迎继续提问。

歌者文明清理员 发表于 2023-5-22 22:59:16

你好,根据你提供的代码,我没有发现明显的语法错误。但是需要注意的是,如果运行程序后if语句没有正确判断,可能是因为逻辑上存在问题。
在这个代码中,if语句的作用是判断num是否等于a^2 + b^2 + c^2。如果不符合这个条件,则会跳过当前循环。
建议你检查一下if语句的缩进是否正确,以及分别输出a、b、c和(aa) + (bb) + (c*c)的值,看看是否与你预期一致。这有助于找出程序运行的问题所在。
另外,建议你在代码开头加上注

歌者文明清理员 发表于 2023-5-22 22:59:56

isdkz 发表于 2023-5-22 22:46
你的代码正在对100至999之间的所有数字进行循环,对每个数字进行判断。判断条件是:如果这个三位数等于它的 ...

不知道为什么我的机器人偷懒了{:10_277:}

AlexPaopao 发表于 2023-5-22 23:38:21

isdkz 发表于 2023-5-22 22:45
你的代码正在对100至999之间的所有数字进行循环,对每个数字进行判断。判断条件是:如果这个三位数等于它的 ...

谢谢大佬,是水仙花数,我把立方错看成平方了。
页: [1]
查看完整版本: 【新手】:大佬帮忙看看我这个代码为啥if语句没有正确判断