鱼C论坛

 找回密码
 立即注册
查看: 1593|回复: 3

[已解决]找水仙花数,求大佬教教我哪里不对

[复制链接]
发表于 2022-3-2 15:40:31 | 显示全部楼层 |阅读模式

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

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

x
def findsxh(a):
    sum=0
    while a:
        sum=sum+(a%10)**3
        a=a//10
    if a==sum:
        return sum
i=0
while True:
    print(findsxh(a=i),end=' ')
    i+=1
   

最佳答案
2022-3-2 15:57:18
你的思路是对的,不过有几个问题

第一个问题:你的 a 在循环完之后都变成 0 了,肯定不会等于 sum 的,

所以你可以先把 a 存起来,用于后面跟 sum 比较

第二个问题:你应该判断一下结果再打印,因为没有结果也会有返回值的,只不过返回None而已

第三个问题:你应该设置一个范围,而不是让它一直死循环,计算机运行地很快,

你让它死循环又不 sleep 的话,根本就没法看到结果

故对你的代码修改如下:
  1. def findsxh(a):
  2.     sum=0
  3.     temp = a          # 注意这里
  4.     while a:
  5.         sum=sum+(a%10)**3
  6.         a=a//10
  7.     if temp==sum:          # 注意这里
  8.         return sum

  9. for i in range(1000):          # 注意这里
  10.     result = findsxh(a = i)
  11.     if result:          # 注意这里
  12.         print(result,end=' ')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-2 15:57:18 | 显示全部楼层    本楼为最佳答案   
你的思路是对的,不过有几个问题

第一个问题:你的 a 在循环完之后都变成 0 了,肯定不会等于 sum 的,

所以你可以先把 a 存起来,用于后面跟 sum 比较

第二个问题:你应该判断一下结果再打印,因为没有结果也会有返回值的,只不过返回None而已

第三个问题:你应该设置一个范围,而不是让它一直死循环,计算机运行地很快,

你让它死循环又不 sleep 的话,根本就没法看到结果

故对你的代码修改如下:
  1. def findsxh(a):
  2.     sum=0
  3.     temp = a          # 注意这里
  4.     while a:
  5.         sum=sum+(a%10)**3
  6.         a=a//10
  7.     if temp==sum:          # 注意这里
  8.         return sum

  9. for i in range(1000):          # 注意这里
  10.     result = findsxh(a = i)
  11.     if result:          # 注意这里
  12.         print(result,end=' ')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-2 16:01:34 | 显示全部楼层
因为你 a的值已经改变, 我记得一般都是从100开始的,我稍作修改
  1. def findsxh(a):
  2.     sum = 0
  3.     temp = a
  4.     while a:
  5.         sum = sum+(a % 10)**3
  6.         a = a//10
  7.     if temp == sum:  # a 已经改变了
  8.         return print(sum, end=" ")


  9. i = 100
  10. while i < 1000:
  11.     findsxh(a=i)
  12.     i += 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-4 22:41:51 | 显示全部楼层
这种特性的数应该叫自幂数,也有叫自恋数,阿姆斯特朗数。水仙花数是特指三位数中的此类数。既:遍历范围在100 - 999。
所以,循环语句应该是 for i in range(100, 1000)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 05:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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