python作业第九讲动动手1
我是零基础开始学的,不知道为什么会报错,以及我的方法是否可以修改?题目是求100-1000的水仙花数,水仙花数为一个三位数等于其三位上各数字立方之和
for a,b,c in range (0,9)
if 100 * a + 10 * b + c == a ** 3 + b ** 3 + c ** 3
print(100 * a + 10 * b + c) for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
if sum == i:
print(i) for a,b,c in range(0,9)
并不能分别将abc赋值为0-9的数,需要三个循环,依次
for a in range(9):
for b in range(9):
for c in range(9): for i in range(100,1000):
if (i//100)**3+((i%100)//10)**3+(i%10)**3 == i:
print (i) 旧梦重拾 发表于 2020-4-7 22:28
for i in range(100,1000):
if (i//100)**3+((i%100)//10)**3+(i%10)**3 == i:
print (i)
i//100计算出百位数字,i%100取余后再//10取整得到十位数,i%10得到个位数,然后在判断他们的三次方是否等于i 这个思路也不错,直接,主要注意循环要进行三次,才能读取所有三位数,其次是range范围,a要从1到10,世界取值就是1-9, 排除了0,也就是排除了1位数和2位数,这样才符合要求,其他的要0-10,实际取值0-9才算完整。
for a in range(1,10):
for b in range(0,10):
for c in range(0,10):
if 100 * a + 10 * b + c == a ** 3 + b ** 3 + c ** 3:
print(100 * a + 10 * b + c) 多谢指教
页:
[1]