零基础python
鱼油们,谁能帮我讲讲,我把我懂的写进去了但是为什么这么运作和为什么有这个不懂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) 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
有用的话给个评分哈,谢谢 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)
真心解答问题,希望获得评分,谢谢楼主! 我回复的帖子右下角,评分,管理 人zai旅途 发表于 2016-11-11 14:56
sum=0.是因为变量需要先赋值,后面才能调用,且切sum是求和,初始值要为0;
while temp: 不仅仅是循环temp ...
我比较二啊,这么一讲,我知道了个位数怎么出来的了。那十位数和百位数的详细出来步骤能告诉我吗? 讲的太牛逼了!多谢了! 人zai旅途 发表于 2016-11-13 19:15
举例子,当i=153,temp = i ,
while 153: #条件成立,开始循环
sum=0+(153%10)** 3= 0 +3**3 ...
最后,怎么给你评分? 谢谢楼主,看截图 人zai旅途 发表于 2016-11-13 19:15
举例子,当i=153,temp = i ,
while 153: #条件成立,开始循环
sum=0+(153%10)** 3= 0 +3**3 ...
正解!太棒了!{:5_92:}
页:
[1]