鱼C论坛

 找回密码
 立即注册
查看: 1898|回复: 8

[已解决]关于水仙花数函数的问题

[复制链接]
发表于 2017-10-14 16:24:54 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼课后习题代码如下:
def narcissus():
    for each in range(100,1000):
        sum = 0
        temp = each
        while temp:
            sum = sum + (temp%10)**3
            temp = temp//10            
        if sum == temp:
            print(each,end = '\t')            
print('所有的水仙花数分别是:',end = '')
narcissus()
但是实际上运行不起来啊,这里面并没有返回值,这是怎么回事啊,问题到底出在哪里呢
最佳答案
2017-10-17 09:36:17
  1. def narcissus():
  2.     for each in range(100,1000):
  3.         sum = 0
  4.         temp = each
  5.         while temp:
  6.             sum = sum + (temp % 10)**3
  7.             temp = temp//10            
  8.         if sum == each:
  9.             print(each,end = '\t')            
  10. print('所有的水仙花数分别是:',end = '')
  11. narcissus()
复制代码


!解答:temp的值在while循环语句中已经改变,不能用于和sum比较,应该是“if sum == each”。

如果满意,记得选择为【最佳答案】哦~(*^▽^*)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-14 16:26:40 | 显示全部楼层
仔细对比

  1. def narcissus():
  2.     for each in range(100,1000):
  3.         sum = 0
  4.         temp = each
  5.         while temp:
  6.             sum = sum + (temp%10)**3
  7.             temp = temp//10            
  8.         if sum == each:
  9.             print(each,end = '\t')            
  10. print('所有的水仙花数分别是:',end = '')
  11. narcissus()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-15 09:48:23 | 显示全部楼层

恕我眼拙,真看不出来哪里不对的地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-15 10:30:05 | 显示全部楼层
第八行
  1. if sum == temp:
复制代码


temp都是运算过的了。。。怎么还能用sum去和temp比呢
应该是sum==each吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-15 10:38:37 | 显示全部楼层
最后一个if语句写错了
应该是
  1. if sum == each:
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-17 09:36:17 | 显示全部楼层    本楼为最佳答案   
  1. def narcissus():
  2.     for each in range(100,1000):
  3.         sum = 0
  4.         temp = each
  5.         while temp:
  6.             sum = sum + (temp % 10)**3
  7.             temp = temp//10            
  8.         if sum == each:
  9.             print(each,end = '\t')            
  10. print('所有的水仙花数分别是:',end = '')
  11. narcissus()
复制代码


!解答:temp的值在while循环语句中已经改变,不能用于和sum比较,应该是“if sum == each”。

如果满意,记得选择为【最佳答案】哦~(*^▽^*)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-19 19:43:18 | 显示全部楼层
shawn竹肃 发表于 2017-10-17 09:36
!解答:temp的值在while循环语句中已经改变,不能用于和sum比较,应该是“if sum == each”。

如果 ...

对的,不过最后一个narcissus()应该不是代码里面的才对吧,应该是运行是调用函数的意思吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-19 20:51:43 | 显示全部楼层
嗯,不是,这整段代码run后会得到结果,你可以运行一下试一下就明白了,就是把调用函数这一过程在代码中直接运行,不需要我们后续再次调用函数。
在编辑框里面编辑好以后运行run,Shell窗口是运行时候的窗口。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-22 23:09:39 | 显示全部楼层
if sum == temp:
这行应为
if sum == each:
因为在while中temp已经变为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 21:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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