逆袭的小李 发表于 2021-2-21 22:19:10

求大神指导一下 看不太懂

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
      sum = sum + (temp%10) ** 3                                       这行代码是什么意思这个值是怎么算出来的我用计算器怎么算都不对- -
      temp //= 10         # 注意这里要使用地板除哦~         这里为什么要地板除 是计算循环次数么?
    if sum == i:                                       
      print(i)

Daniel_Zhang 发表于 2021-2-21 22:40:02

善用论坛的搜索功能吧

搜索:水仙花

挺多帖子的

https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=189789&pid=5224748

青出于蓝 发表于 2021-2-22 10:05:18

结果是没有问题滴...
再给您详细当讲一遍:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身

for i in range(100, 1000):       #水仙花必须是三位数
    sum = 0                           #设置一个变量
    temp = i                        
    while temp:                      #如果texp不等于0
      sum = sum + (temp%10) ** 3                                    
      temp //= 10
    if sum == i:      
                                 
      print(i)

上面进行了注释,下面回答您的问题
sum = sum + (temp%10) ** 3
这行代码是求这个三位数每一位的三次幂的和

后面用地板除是因为要确定三位数每一位是多少

还不明白欢迎追问
明白的话请设置最佳~

青出于蓝 发表于 2021-2-22 10:07:20

地板除:153//10=15
是不是去掉了个位?
因为水仙花是需要每一位,所以用地板除

Daniel_Zhang 发表于 2021-2-22 12:40:52

青出于蓝 发表于 2021-2-22 10:05
结果是没有问题滴...
再给您详细当讲一遍:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于 ...

这么敬业的吗,水仙花说实话,论坛里面好多人都问,每次都回答一遍,不会累吗{:10_250:}

青出于蓝 发表于 2021-2-22 13:49:32

Daniel_Zhang 发表于 2021-2-22 12:40
这么敬业的吗,水仙花说实话,论坛里面好多人都问,每次都回答一遍,不会累吗

感觉这题挺绕的,不太好理解,也说不出来{:10_266:}
页: [1]
查看完整版本: 求大神指导一下 看不太懂