鱼C论坛

 找回密码
 立即注册
查看: 1677|回复: 7

[已解决]寻找水仙花数

[复制链接]
发表于 2020-8-4 15:03:34 | 显示全部楼层 |阅读模式

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

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

x
def numc():
    result = []
    for each in range(100,1000):
        if (each%10)**3+(each%100)**3+(each%1000)**3==each:
            result.append(each)
    return result

这个函数用来讯息找水仙花数的问题出在哪里呢
最佳答案
2020-8-4 15:06:14
本帖最后由 sunrise085 于 2020-8-4 15:14 编辑

你的if语句的第一项是个位,第二项不是十位,第三项也不是百位
def numc():
    result = []
    for each in range(100,1000):
        if (each%10)**3+(int(each%100/10))**3+(int(each/100))**3==each:
            result.append(each)
    return result

还可以先转字符串,再转回数字
def numc():
    result = []
    for each in range(100,1000):
        if sum(int(i)**3 for i in str(each))==each:
            result.append(each)
    return result
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-4 15:06:14 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-8-4 15:14 编辑

你的if语句的第一项是个位,第二项不是十位,第三项也不是百位
def numc():
    result = []
    for each in range(100,1000):
        if (each%10)**3+(int(each%100/10))**3+(int(each/100))**3==each:
            result.append(each)
    return result

还可以先转字符串,再转回数字
def numc():
    result = []
    for each in range(100,1000):
        if sum(int(i)**3 for i in str(each))==each:
            result.append(each)
    return result
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 15:07:28 | 显示全部楼层
十位和百位的计算有误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-4 15:25:19 | 显示全部楼层
sunrise085 发表于 2020-8-4 15:06
你的if语句的第一项是个位,第二项不是十位,第三项也不是百位

def numf():#    寻找水仙花数
    answer=0
    result=[]
    while True:
        i=0
        i=i+1
        if sum(int(i)**3 for each in str(i))==i:
            result.append(i)
    return result
如果这样呢 对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-4 15:25:57 | 显示全部楼层
zltzlt 发表于 2020-8-4 15:07
十位和百位的计算有误

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

使用道具 举报

发表于 2020-8-4 15:27:45 | 显示全部楼层
for each in range(100, 1000):
    # 个位               十位                  百位
    if (each % 10) ** 3 + (each // 10 % 10) ** 3 + (each // 100) ** 3 == each:
        print(each)
你个十位数,百位数求错了啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 16:33:17 | 显示全部楼层
15588686105 发表于 2020-8-4 15:25
def numf():#    寻找水仙花数
    answer=0
    result=[]

1、你这是死循环啊。每次循环i都先被赋值为0,然后再自加1,没有循环结束条件。
2、sum里面的这个推导式有问题,for后面是each,而前面是i,应该是  sum(int(each)**3 for each in str(i))
3、你可能对水仙花数有所误解,水仙花数,是三位自幂数,也就是必须是三位数,然后每一位的三次幂之和等于本身,一位自幂数叫独身数,四位自幂数叫四叶玫瑰数,五位自幂数叫五角星数……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-5 12:14:01 | 显示全部楼层
sunrise085 发表于 2020-8-4 16:33
1、你这是死循环啊。每次循环i都先被赋值为0,然后再自加1,没有循环结束条件。
2、sum里面的这个推导式 ...

明白了感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 09:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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