carloskij 发表于 2020-4-7 21:53:34

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)

老八秘制 发表于 2020-4-7 21:58:05

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
      sum = sum + (temp%10) ** 3
      temp //= 10
    if sum == i:
      print(i)

BngThea 发表于 2020-4-7 22:00:57

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):

旧梦重拾 发表于 2020-4-7 22:28:56

for i in range(100,1000):
        if (i//100)**3+((i%100)//10)**3+(i%10)**3 == i:
                print (i)

旧梦重拾 发表于 2020-4-7 22:31:27

旧梦重拾 发表于 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

txxcat 发表于 2020-4-7 22:46:06

这个思路也不错,直接,主要注意循环要进行三次,才能读取所有三位数,其次是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)

carloskij 发表于 2020-4-8 18:47:01

多谢指教
页: [1]
查看完整版本: python作业第九讲动动手1