鱼C论坛

 找回密码
 立即注册
查看: 919|回复: 4

[已解决]一个求水仙花函数循环问题

[复制链接]
发表于 2018-11-30 19:59:03 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Stubborn 于 2018-11-30 20:03 编辑
  1. def Narcissus():
  2.     for each in range(100, 1000):
  3.         temp = each
  4.         sum = 0
  5.         while temp:  # 这里为什么用temp
  6.             sum = sum + (temp%10) ** 3  #上面不是sum=0,为什么循环下来会累加
  7.             temp = temp // 10  # 注意这里用地板除

  8.         if sum == each:
  9.             print(each, end='\t')     #"\t”这个 横向制表符 作用是什么

  10. print("所有的水仙花数分别是:", end='')
  11. Narcissus()
复制代码
  1. def nice ():
  2.         "求水仙花数"
  3.         for each in range(100,1000):
  4.                 temp = each
  5.                 temp1 = 0
  6.                 while temp1:
  7.                         sum1 = temp//100  #百位数
  8.                         sum2 = (temp-sum1*100)//10  #十位数
  9.                         sum3 = temp%10   #个位数
  10.                         temp1 = sum1**3+sum2**3+sum3**3
  11.                 if temp1 == each:
  12.                         print(each,end="\t")
  13. print("所有的水仙花数分别是:", end='')
  14. nice()
复制代码


还有我自己的思路,运行没有问题,循环有问题,具体在哪里不是很清楚,是不是因为temp没有参与到while循环里面吗
有知道的,麻烦讲下,非常感谢
最佳答案
2018-11-30 20:07:36
本帖最后由 heidern0612 于 2018-11-30 20:10 编辑

你可以看看我写的这个帖子,最后我分析好了。戳我前进

那个制表符的作用只是用于把四个数字隔开,一个制表符=四个空格。

sum一开始是零,但是每循环一次就自增一次上次留下来的sum结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-30 20:07:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 heidern0612 于 2018-11-30 20:10 编辑

你可以看看我写的这个帖子,最后我分析好了。戳我前进

那个制表符的作用只是用于把四个数字隔开,一个制表符=四个空格。

sum一开始是零,但是每循环一次就自增一次上次留下来的sum结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-30 20:14:44 | 显示全部楼层
你把while去啦就行了
  1. def nice ():
  2.         "求水仙花数"
  3.         for each in range(100,1000):
  4.                 temp = each
  5.                 temp1 = 0

  6.                 sum1 = temp//100  #百位数
  7.                 sum2 = (temp-sum1*100)//10  #十位数
  8.                 sum3 = temp%10   #个位数
  9.                 temp1 = sum1**3+sum2**3+sum3**3
  10.                 if temp1 == each:
  11.                         print(each,end="\t")
  12. print("所有的水仙花数分别是:", end='')
  13. nice()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 21:29:26 | 显示全部楼层
heidern0612 发表于 2018-11-30 20:07
你可以看看我写的这个帖子,最后我分析好了。戳我前进

那个制表符的作用只是用于把四个数字隔开,一个制 ...

不得不说,这玩意真费脑力,通过三次while输出Flase循环得到个位,十位,百位,然后赋予sum.终于看明白流程了,啊,原来是这样走流程的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 21:30:23 | 显示全部楼层
塔利班 发表于 2018-11-30 20:14
你把while去啦就行了

谢谢楼主的修改,我这样写,不用循环的=
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 12:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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