鱼C论坛

 找回密码
 立即注册
查看: 885|回复: 6

[已解决]求水仙花数

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

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

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

x
本帖最后由 Juniorboy 于 2020-5-16 23:07 编辑
  1. import math
  2. for i in range(100 ,1000) :
  3.     p = 1000
  4.     while p:
  5.         a =  i / 100
  6.         b = i / 10 % 10
  7.         c = 1 %10
  8.         if (pow (i,3)==pow(a,3) + pow(b,3)  +pow(c,3)) :
  9.             print (i)
  10.         p -= 1
  11.         
复制代码


  1. for i in range(100, 1000):
  2.     sum = 0
  3.     temp = i
  4.     while temp:
  5.         sum = sum + (temp%10) ** 3
  6.         temp //= 10         # 注意这里要使用地板除哦~
  7.     if sum == i:
  8.         print(i)
复制代码


第一个代码是我的,但是我的运行之后什么也不打印。
第二个是小甲鱼老师的,没看懂他的思路。
另外再问一下if elif while 这一类的判断条件里面可以有算术运算符吗,我好像记得听过不能有,但是我用了也没报错。
最佳答案
2020-5-16 23:38:12
问题有点多:
  1. import math     #没必要,内置pow就可以用了
  2. for i in range(100 ,1000) :
  3.     p = 1000
  4.     while p:       <---这个真看不懂
  5.         a =  i / 100       <---应该是i // 100
  6.         b = i / 10 % 10     #<---应该是i//10%10
  7.         c = 1 %10        #<---应该是i%10,打错成1了
  8.         if (pow (i,3)==pow(a,3) + pow(b,3)  +pow(c,3)) :      <---水仙花数理解错误,应该是:if (i==pow(a,3) + pow(b,3)  +pow(c,3))
  9.             print (i)
  10.         p -= 1
  11.         
复制代码

改成:
  1. for i in range(100 ,1000) :
  2.     a =  i // 100
  3.     b = i // 10 % 10
  4.     c = i %10
  5.     if i==pow(a,3) + pow(b,3)  +pow(c,3) :
  6.         print (i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-16 23:38:12 | 显示全部楼层    本楼为最佳答案   
问题有点多:
  1. import math     #没必要,内置pow就可以用了
  2. for i in range(100 ,1000) :
  3.     p = 1000
  4.     while p:       <---这个真看不懂
  5.         a =  i / 100       <---应该是i // 100
  6.         b = i / 10 % 10     #<---应该是i//10%10
  7.         c = 1 %10        #<---应该是i%10,打错成1了
  8.         if (pow (i,3)==pow(a,3) + pow(b,3)  +pow(c,3)) :      <---水仙花数理解错误,应该是:if (i==pow(a,3) + pow(b,3)  +pow(c,3))
  9.             print (i)
  10.         p -= 1
  11.         
复制代码

改成:
  1. for i in range(100 ,1000) :
  2.     a =  i // 100
  3.     b = i // 10 % 10
  4.     c = i %10
  5.     if i==pow(a,3) + pow(b,3)  +pow(c,3) :
  6.         print (i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 23:47:08 | 显示全部楼层
第一个代码:没有打印说明没有满足你的if语句,另外你这个while语句中相当于执行了1000次,第1001次才结束循环,但是循环的内容是一样的,因为和p无关;
第二个代码:其实就是100-999每个数字都要求一次各位数数字3次方之和(如:i = 121就是1**3+2**3+1**3 打印的就是10(1+8+1);
判断条件后面的语句要求你的语句返回bool值(True   or  False)当然0代表False,其他代表True,所以条件语句返回bool值或者一个数字都可以;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-17 08:15:15 | 显示全部楼层
你要注意 python 和C 不一样
C 语言 260 / 100 =2
但是 python
260 // 100 = 2
260 / 100 = 2.6
python 的变量是没有固定的数据类型的!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-17 13:35:24 | 显示全部楼层
RandallSteven 发表于 2020-5-16 23:47
第一个代码:没有打印说明没有满足你的if语句,另外你这个while语句中相当于执行了1000次,第1001次才结束 ...

明白了,谢谢谢谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-17 13:35:55 | 显示全部楼层
liuzhengyuan 发表于 2020-5-17 08:15
你要注意 python 和C 不一样
C 语言 260 / 100 =2
但是 python

嗯嗯,明白了,谢谢谢谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-17 13:37:21 | 显示全部楼层
liuzhengyuan 发表于 2020-5-17 08:15
你要注意 python 和C 不一样
C 语言 260 / 100 =2
但是 python

嗯嗯,明白了,谢谢谢谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 13:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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