鱼C论坛

 找回密码
 立即注册
查看: 2950|回复: 2

[已解决]寻找水仙花数

[复制链接]
发表于 2022-10-5 23:13:05 | 显示全部楼层 |阅读模式

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

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

x
def Narcissus():
    for each in range(100, 1000):
        temp = each
        sum = 0
        while temp:
            sum = sum + (temp%10) ** 3
            temp = temp // 10  # 注意这里用地板除

        if sum == each:
            print(each, end='\t')

print("所有的水仙花数分别是:", end='')
Narcissus()

理解是理解,,但是这道题的解题思路是怎么来的,,,为什么能想到是这样解的。。。有大神能解释下吗。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-5 23:39:25 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-5 23:45 编辑

        为了便于研究,先改写一下代码
  1. def Narcissus(k):
  2.     r = False
  3.     temp = k
  4.     sum = 0
  5.     while temp:
  6.         sum = sum + (temp % 10) ** 3
  7.         temp = temp // 10
  8.     if sum == k:
  9.         r = True
  10.     return r

  11. for i in range(100 , 1000):
  12.     if Narcissus(i):
  13.         print(i)
复制代码

        此代码的运行结果与楼主的代码完全相同,不同之处只是在于把水仙花数的枚举循环安排在了主程序,而楼主的代码是安排在了函数内。
        下面,对代码稍作改动,其中,对 Narcissus() 函数的修改纯粹是为了显示中间过程,对水仙花数求取的运算本身没有施加任何影响。
         这是代码
  1. def Narcissus(k):
  2.     r = False
  3.     temp = k
  4.     sum = 0
  5.     c = 0
  6.     while temp:
  7.         print('第%d次循环:temp = %3d , temp %% 10 = %d , temp // 10 = %3d' % ((c + 1) , temp , (temp % 10) , (temp // 10)) , end = '')
  8.         sum = sum + (temp % 10) ** 3
  9.         print(' , sum = %3d' % sum)
  10.         temp = temp // 10
  11.         c += 1
  12.     if sum == k:
  13.         r = True
  14.     return r

  15. i = 371
  16. if Narcissus(i):
  17.     print(i)
复制代码

        请仔细观察代码的运行结果:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 第1次循环:temp = 371 , temp % 10 = 1 , temp // 10 =  37 , sum =   1
  3. 第2次循环:temp =  37 , temp % 10 = 7 , temp // 10 =   3 , sum = 344
  4. 第3次循环:temp =   3 , temp % 10 = 3 , temp // 10 =   0 , sum = 371
  5. 371

  6. D:\[00.Exerciese.2022]\Python>
复制代码

        怎么样,这个计算过程应该很清晰了吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 06:23:05 | 显示全部楼层    本楼为最佳答案   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-24 19:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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