|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
初学者提问
问题1:
“sum = sum + (temp%10) ** 3
temp //= 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)
问题2:
这是单纯用for语句的话,还好理解,while那段相比是不是效率低些?,
for a in range(1,10):
for b in range(0,10):
for c in range(0,10):
if (a*100 + b*10 +c) == a**3+b**3+c**3:
print(a*100 + b*10 +c)
问题1:
“sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
这一段什么意思,不明白,求帮忙解释!!,为什么这样做就是水仙花数了。
以数字123为例。
第一次循环
sum = sum + (temp%10) ** 3 #temp =123 ,temp % 10 = 3,sum = 0 + 3**3
temp //= 10 #temp = 12
第二次循环
sum = sum + (temp%10) ** 3 #temp =12 temp % 10 = 3, sum = 0 + 3**3 +2**3
temp //= 10 #temp = 1
第三次循环
sum = sum + (temp%10) ** 3 #temp =1 temp % 10 = 3, sum = 0 + 3**3 +2**3 +1**3
temp //= 10 #temp = 0
问题2:两个的for循环次数都是900,但程序1还要while循环3次,效率不如程序2高,但程序1主要是讲如何从一个整数中取出每位数字的方法。
另程序2的a,b,c的立方的范围是0~9可以在循环外算出,不必在循环中每次都重复计算,效率会更高。
|
|