|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求解释一下第10讲课后题:
1. 编写一个程序,求 100~999 之间的所有水仙花数。(如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。)
答案:
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
程序运行:
第一轮 sum == 0, temp == 100,
sum = 0 + 0**3 = 0
temp = 100 // 10 = 10
不满足if条件,不进行
第二轮:sum == 0, temp == 10
sum = 0 + 0**3 = 0
temp = 10 // 10 = 1
不满足if条件,不进行
第三轮: sum == 0, temp == 1
sum = 0 + 1**3 = 1
temp = 1 // 10 = 0
第四轮:temp = 0, 所以while temp 不为真(因为0就是false), 所以不运行
想知道我的哪里错了……因为这个程序在python是能跑的,也能得出答案。感觉我好像完全没懂这个程序……
谢谢大家!
|
|