请问18期作业求水仙花数那题 我这个怎么算不出来呢
本帖最后由 mumei2018 于 2023-5-1 16:15 编辑for i in range(100,1000):
if i == (i//100)**3 +(i%100-i%10) **3 + (i%10)**3:
#(i//100)得到百位 (i%100-i%10)得到十位 (i%10)得到各位
print(i)
我这个只能得到一个水仙花数 407 前面的都没有
我第一回发帖的时候 手滑把中间一小段删了 现在补回来了 上面红色那段 作业里是有些的 然后我发现(i%100-i%10)并不能得到十位 我改成这样((i%100-i%10)%10)但还是只有407了
您的代码中有一些小错误,让我帮您修正一下:
for i in range(100, 1000):
if i == (i // 100) ** 3 + ((i % 100) // 10) ** 3 + (i % 10) ** 3:
# (i // 100) 得到百位,((i % 100) // 10) 得到十位,(i % 10) 得到个位
print(i)
您之前的代码在计算十位数时缺少了 ((i % 100) // 10) ,这部分代码用于获取十位数。现在这个修改后的代码应该可以正确计算水仙花数了。 您的代码存在两个问题。
首先,计算水仙花数的公式是:将一个三位数的百位、十位、个位上的数字分别立方后求和,如果等于该三位数本身,则为水仙花数。但您的代码中计算公式存在错误,应该是 (i//100)**3 + ((i0)//10)**3 + (i)**3。
其次,您的代码中缺少一个循环判断语句。您只判断了 100 到 999 中是否有一个数等于 407,而没有对所有数进行判断。您需要将 if 语句放到循环中,对 100 到 999 中的每个数都进行判断。
修改后的代码如下所示:
for i in range(100, 1000):
if i == (i//100)**3 + ((i0)//10)**3 + (i)**3:
print(i)
这段代码将输出所有三位数的水仙花数。 陶远航 发表于 2023-5-1 16:06
您的代码存在两个问题。
首先,计算水仙花数的公式是:将一个三位数的百位、十位、个位上的数字分别立方 ...
for i in range(100, 1000):
if i == (i//100)**3 + ((i0)//10)**3 + (i)**3:
print(i)
不好意思 您这有几个字符缺失了 我这看不见 本帖最后由 mumei2018 于 2023-5-1 16:24 编辑
isdkz 发表于 2023-5-1 16:05
您的代码中有一些小错误,让我帮您修正一下:
我第一回发帖的时候 手滑把中间一小段删了 现在补回来了 上面红色那段 作业里是有些的 然后我发现(i%100-i%10)并不能得到十位 我改成这样((i%100-i%10)%10)但还是只有407了 后来我发现都不用减去个位了 直接 ((i%100)//10)
mumei2018 发表于 2023-5-1 16:21
我第一回发帖的时候 手滑把中间一小段删了 现在补回来了 上面红色那段 作业里是有些的 然后我发现(i%1 ...
我明白您的问题了。问题出在您计算十位数的方法上。您可以使用 (i % 100) // 10 来计算十位数。这是因为 i % 100 会去掉百位数,然后 // 10 会去掉个位数,从而得到十位数。这是修改后的代码:
for i in range(100, 1000):
if i == (i // 100) ** 3 + ((i % 100) // 10) ** 3 + (i % 10) ** 3:
# (i // 100) 得到百位,((i % 100) // 10) 得到十位,(i % 10) 得到个位
print(i)
这段代码应该可以正确计算并输出所有的水仙花数。 你的代码有一个小错误,导致只能得到水仙花数 407。问题出在 if 语句中,你使用了减号 - 来计算十位和个位的立方和,这是错误的。应该使用加号 +,才能正确计算十位和个位的立方和。以下是修正后的代码:
for i in range(100, 1000):
if i == (i//100)**3 + ((i%100)//10)**3 + (i%10)**3:
print(i)
在这个修正后的代码中,我们使用了两个 % 运算符来得到十位和个位上的数字。首先,i % 100 取出 i 的后两位,即十位和个位的数字。接下来,i % 10 取出 i 的个位上的数字。为了得到十位上的数字,我们需要先将 i 的后两位减去个位上的数字,再除以 10,即 ((i % 100) - (i % 10)) // 10。
注意,这个代码中用到了两次除法运算符 // 来进行整数除法。这是因为在 Python 中,除法 / 的结果是浮点数,即使两个操作数都是整数。如果你要进行整数除法,需要使用 // 运算符。
修正后的代码应该可以正确地输出所有的水仙花数。 isdkz 发表于 2023-5-1 16:23
我明白您的问题了。问题出在您计算十位数的方法上。您可以使用 (i % 100) // 10 来计算十位数。这是因为...
谢啦 我刚刚又看了一遍发现我改的还是错的 你那个就是对的 正常运行了 mumei2018 发表于 2023-5-1 16:25
谢啦 我刚刚又看了一遍发现我改的还是错的 你那个就是对的 正常运行了
不客气{:5_109:} 陶远航 发表于 2023-5-1 16:24
你的代码有一个小错误,导致只能得到水仙花数 407。问题出在 if 语句中,你使用了减号 - 来计算十位和个位 ...
好的 谢啦 其实关键还是我算错了十位
页:
[1]