鱼C论坛

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

[已解决]求水仙花数

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

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

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

x
本帖最后由 Juniorboy 于 2020-5-16 23:07 编辑
import math
for i in range(100 ,1000) :
    p = 1000
    while p:
        a =  i / 100
        b = i / 10 % 10
        c = 1 %10
        if (pow (i,3)==pow(a,3) + pow(b,3)  +pow(c,3)) :
            print (i)
        p -= 1
        

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
        print(i)

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

使用道具 举报

发表于 2020-5-16 23:38:12 | 显示全部楼层    本楼为最佳答案   
问题有点多:
import math     #没必要,内置pow就可以用了
for i in range(100 ,1000) :
    p = 1000
    while p:       <---这个真看不懂
        a =  i / 100       <---应该是i // 100
        b = i / 10 % 10     #<---应该是i//10%10
        c = 1 %10        #<---应该是i%10,打错成1了
        if (pow (i,3)==pow(a,3) + pow(b,3)  +pow(c,3)) :      <---水仙花数理解错误,应该是:if (i==pow(a,3) + pow(b,3)  +pow(c,3))
            print (i)
        p -= 1
        
改成:
for i in range(100 ,1000) :
    a =  i // 100
    b = i // 10 % 10
    c = i %10
    if i==pow(a,3) + pow(b,3)  +pow(c,3) :
        print (i)
想知道小甲鱼最近在做啥?请访问 -> 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值或者一个数字都可以;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

明白了,谢谢谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗯嗯,明白了,谢谢谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗯嗯,明白了,谢谢谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 06:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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