鱼C论坛

 找回密码
 立即注册
查看: 1820|回复: 7

[已解决]新人求助

[复制链接]
发表于 2020-11-7 09:46:43 | 显示全部楼层 |阅读模式

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

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

x
求水仙花数时代码如下
for a in range(1,10):
    for b in range(0,10):
        for c in range(0,10):
            if a**3+b**3+c**3 == 100*a+10*b+c:
                print(a+b+c)
   输出的水仙花数中间带空格例如1 5 3
有什么好的解决办法吗
for i in range(100,1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10)**3
        temp //= 10
    if sum == i:
        print(i)
上述求水仙花数的方法中,while temp和while temp >= 1:的效果相同是怎么做到的,或者说应该怎么理解while temp
最佳答案
2020-11-7 09:59:34
本帖最后由 昨非 于 2020-11-7 10:01 编辑
for a in range(1,10):
    for b in range(0,10):
        for c in range(0,10):
            if a**3+b**3+c**3 == 100*a+10*b+c:
                print(str(a)+str(b)+str(c))  #转为字符串再拼接到一起就好了

地板除得到的temp依次是i的前两位,前一位,和0(此时跳出循环)
for i in range(100, 1000):#遍历100到1000所有整数
   sum = 0  #定义求和变量,初值为0
   temp = i 
   while temp:#当i得值不等于0时,一直循环
       sum = sum + (temp%10) ** 3 #temp取余10得到最后一位的数值,sum等于temp各位数之和
       temp //= 10         # 注意这里要使用地板除哦~   这里得到temp的前两位
   if sum == i: #判断i是否等于其各位数的三次方之和
       print(i)#打印满足情况的i得值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-7 09:52:22 | 显示全部楼层
在Python中,0是False,其他的数字都是True
while temp: 就相当于把temp的值取出来,如果不为0,就继续循环,否则退出循环
你可以把它理解为 while temp != 0:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-7 09:59:34 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2020-11-7 10:01 编辑
for a in range(1,10):
    for b in range(0,10):
        for c in range(0,10):
            if a**3+b**3+c**3 == 100*a+10*b+c:
                print(str(a)+str(b)+str(c))  #转为字符串再拼接到一起就好了

地板除得到的temp依次是i的前两位,前一位,和0(此时跳出循环)
for i in range(100, 1000):#遍历100到1000所有整数
   sum = 0  #定义求和变量,初值为0
   temp = i 
   while temp:#当i得值不等于0时,一直循环
       sum = sum + (temp%10) ** 3 #temp取余10得到最后一位的数值,sum等于temp各位数之和
       temp //= 10         # 注意这里要使用地板除哦~   这里得到temp的前两位
   if sum == i: #判断i是否等于其各位数的三次方之和
       print(i)#打印满足情况的i得值

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
青松100 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-11-7 10:03:15 | 显示全部楼层
qiuyouzhi 发表于 2020-11-7 09:52
在Python中,0是False,其他的数字都是True
while temp: 就相当于把temp的值取出来,如果不为0,就继续循 ...

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-7 10:04:27 | 显示全部楼层
昨非 发表于 2020-11-7 09:59
地板除得到的temp依次是i的前两位,前一位,和0(此时跳出循环)

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-7 10:05:28 | 显示全部楼层

满意的话记得设为【最佳答案】哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-7 10:11:17 | 显示全部楼层
昨非 发表于 2020-11-7 10:05
满意的话记得设为【最佳答案】哈

大佬,我还有一个问题 temp //= 10,是因为temp是整形所以除以10之后自动取整吗,还是我理解错//=的意思了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-7 10:14:20 | 显示全部楼层
午安打工人 发表于 2020-11-7 10:11
大佬,我还有一个问题 temp //= 10,是因为temp是整形所以除以10之后自动取整吗,还是我理解错//=的意思 ...

//=等价于temp=temp//10
意思就是对temp取地板除
地板除规定除以10下取整

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
青松100 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 23:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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