鱼C论坛

 找回密码
 立即注册
查看: 1839|回复: 9

[已解决]请问18期作业求水仙花数那题 我这个怎么算不出来呢

[复制链接]
发表于 2023-5-1 16:04:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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了

   
最佳答案
2023-5-1 16:23: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)

这段代码应该可以正确计算并输出所有的水仙花数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-1 16:05:21 | 显示全部楼层
您的代码中有一些小错误,让我帮您修正一下:
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) ,这部分代码用于获取十位数。现在这个修改后的代码应该可以正确计算水仙花数了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-1 16:06:12 | 显示全部楼层
您的代码存在两个问题。

首先,计算水仙花数的公式是:将一个三位数的百位、十位、个位上的数字分别立方后求和,如果等于该三位数本身,则为水仙花数。但您的代码中计算公式存在错误,应该是 (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)
这段代码将输出所有三位数的水仙花数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-1 16:17:59 | 显示全部楼层
陶远航 发表于 2023-5-1 16:06
您的代码存在两个问题。

首先,计算水仙花数的公式是:将一个三位数的百位、十位、个位上的数字分别立方 ...

for i in range(100, 1000):
    if i == (i//100)**3 + ((i0)//10)**3 + (i)**3:
        print(i)

不好意思 您这有几个字符缺失了 我这看不见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-1 16:21:05 | 显示全部楼层
本帖最后由 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-1 16:23: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)

这段代码应该可以正确计算并输出所有的水仙花数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-1 16:24:57 | 显示全部楼层
你的代码有一个小错误,导致只能得到水仙花数 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 中,除法 / 的结果是浮点数,即使两个操作数都是整数。如果你要进行整数除法,需要使用 // 运算符。

修正后的代码应该可以正确地输出所有的水仙花数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-1 16:25:35 | 显示全部楼层
isdkz 发表于 2023-5-1 16:23
我明白您的问题了。问题出在您计算十位数的方法上。您可以使用 (i % 100) // 10 来计算十位数。这是因为  ...

谢啦 我刚刚又看了一遍  发现我改的还是错的 你那个就是对的 正常运行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-1 16:26:24 | 显示全部楼层
mumei2018 发表于 2023-5-1 16:25
谢啦 我刚刚又看了一遍  发现我改的还是错的 你那个就是对的 正常运行了

不客气
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-1 16:26:30 | 显示全部楼层
陶远航 发表于 2023-5-1 16:24
你的代码有一个小错误,导致只能得到水仙花数 407。问题出在 if 语句中,你使用了减号 - 来计算十位和个位 ...

好的 谢啦 其实关键还是我算错了十位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 18:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表