鱼C论坛

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

[已解决]零基础python

[复制链接]
发表于 2016-11-11 11:05:02 | 显示全部楼层 |阅读模式

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

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

x
鱼油们,谁能帮我讲讲,我把我懂的写进去了但是为什么这么运作和为什么有这个不懂
for i in range(100, 1000):                                #i取(100到999)
    sum = 0                                                #sum取值为0.(为什么要有这一步呢?)
    temp = i                                                #temp=i (取i的值)
    while temp:                                                #循环temp
        sum = sum +(temp%10) ** 3                #不懂了
        temp //= 10         # 注意这里要使用地板除哦~                #为什么要temp除10呢?
    if sum == i:                                                #当sum等于i的时候打印i
        print(i)
最佳答案
2016-11-11 14:56:21
sum=0.是因为变量需要先赋值,后面才能调用,且切sum是求和,初始值要为0;
while temp: 不仅仅是循环temp,而是因为temp被赋值i,肯定>0,这个循环一定成立,是一个条件;
sum = sum +(temp%10) ** 3        
temp //= 10        
这两行是在表示水仙花的题目中的条件如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,不过这里用了迭代概念,
第一次,temp%10可以求出个位数立方和,然后
temp //= 10,就是temp = temp //10,经过两次迭代可以求出十位数、百位数,分别循环带入sum = sum +(temp%10) ** 3  ,最终实现了sum是三个位数的立方和;
剩下的你理解的是对的,当sum等于i的时候打印i
   


有用的话给个评分哈,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-11 14:56:21 | 显示全部楼层    本楼为最佳答案   
sum=0.是因为变量需要先赋值,后面才能调用,且切sum是求和,初始值要为0;
while temp: 不仅仅是循环temp,而是因为temp被赋值i,肯定>0,这个循环一定成立,是一个条件;
sum = sum +(temp%10) ** 3        
temp //= 10        
这两行是在表示水仙花的题目中的条件如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,不过这里用了迭代概念,
第一次,temp%10可以求出个位数立方和,然后
temp //= 10,就是temp = temp //10,经过两次迭代可以求出十位数、百位数,分别循环带入sum = sum +(temp%10) ** 3  ,最终实现了sum是三个位数的立方和;
剩下的你理解的是对的,当sum等于i的时候打印i
   


有用的话给个评分哈,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 3 反对 0

使用道具 举报

发表于 2016-11-13 19:15:13 | 显示全部楼层
Neal01 发表于 2016-11-11 15:38
我比较二啊,这么一讲,我知道了个位数怎么出来的了。那十位数和百位数的详细出来步骤能告诉我吗?


举例子,当i=153,temp = i ,
while 153:   #条件成立,开始循环
      sum=0+(153%10)** 3= 0 +3**3   # 个位数的立方
      temp //= 10 即temp=153//10=15                     #temp被重新赋值为15
while 15:   #条件成立,继续循环
      sum = sum +(temp%10) ** 3=3**3 + (15%10)**3=3**3+5**3   #个位数立方和+十位数立方和
      temp //= 10,即temp=15//10=1                     #temp被重新赋值为1
while 1:   #条件成立,继续循环
      sum = sum +(temp%10) ** 3=(3**3 +5**3)+( 1%10)**3=3**3+5**3 +1**3  #各个位数立方和
      temp //= 10,即temp=1//10=0                    #temp被重新赋值为0
while 0 : 条件不成立,不在循环。
if 3**3+5**3 +1**3=153:
    print(153)

真心解答问题,希望获得评分,谢谢楼主!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2016-11-14 21:52:32 From FishC Mobile | 显示全部楼层
我回复的帖子右下角,评分,管理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-11 15:38:04 | 显示全部楼层
人zai旅途 发表于 2016-11-11 14:56
sum=0.是因为变量需要先赋值,后面才能调用,且切sum是求和,初始值要为0;
while temp: 不仅仅是循环temp ...

我比较二啊,这么一讲,我知道了个位数怎么出来的了。那十位数和百位数的详细出来步骤能告诉我吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-14 16:47:33 | 显示全部楼层
讲的太牛逼了!多谢了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-14 16:48:21 | 显示全部楼层
人zai旅途 发表于 2016-11-13 19:15
举例子,当i=153,temp = i ,
while 153:   #条件成立,开始循环
      sum=0+(153%10)** 3= 0 +3**3 ...

最后,怎么给你评分?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-15 11:57:52 | 显示全部楼层
谢谢楼主,看截图
微信截图_20161115115721.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-16 17:20:23 | 显示全部楼层
人zai旅途 发表于 2016-11-13 19:15
举例子,当i=153,temp = i ,
while 153:   #条件成立,开始循环
      sum=0+(153%10)** 3= 0 +3**3 ...

正解!太棒了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 23:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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