张静aa 发表于 2021-5-29 14:46:38

第18讲求水仙花数

动动手:求所有三位数的水仙花数
代码如下:
def num(x):
    100<= x<1000
    a= x%10
    b=int((x/10)%10)
    c=int((x/100)%10)
    if x==a**3+b**3+c**3:
      print('所有的水仙花数是',result.end=' ')
num()

报错显示:keyword can't be expression
不知道咋改,求大神指教一下!谢谢啦{:10_278:}

张静aa 发表于 2021-5-29 14:59:30

我大概知道哪里错了,那个result是没有定义的,所以要删掉。而且定义的函数num(),只适合判断特定的数值是不是水仙花数,不能求出一个范围内的水仙花数,所以还是按答案的做法比较好{:10_262:}

张静aa 发表于 2021-5-29 15:08:06

本帖最后由 张静aa 于 2021-5-29 15:09 编辑

张静aa 发表于 2021-5-29 14:59
我大概知道哪里错了,那个result是没有定义的,所以要删掉。而且定义的函数num(),只适合判断特定的数值是不 ...

LJYUYU 发表于 2021-5-29 15:16:03

def num(x):             #定义一个函数名为num,参数为x。这定义的参数在调用时没有用到
    100<= x<1000    #python的循环并不是这样写
    a= x%10            
    b=int((x/10)%10) #python中可使用‘//’用于整除
    c=int((x/100)%10)
    if x==a**3+b**3+c**3:
      print('所有的水仙花数是',result.end=' ') // 在python3.0中,直接使用end=""作为结束符的修改
num()

-----------------------------
建议代码改成:
def num():
      for x in range(100, 999):
      a= x % 10
      b = x // 10 % 10
      c = x // 100

      if (a** 3) + (b ** 3) + (b ** 3) == num:
            print(x, end=' ')
num()

张静aa 发表于 2021-5-29 15:21:49

张静aa 发表于 2021-5-29 15:08


def num():
    for each in range(100,1000):
      a=each%10
      b=int((each/10)%10)
      c=int((each/100)%100)
      if each == a**3+b**3+c**3:
            print(each,end=' ')
print ('所有的水仙花数是:',end=' ')
num()
            运行成功啦!啦啦啦啦~

张静aa 发表于 2021-5-29 15:23:12

LJYUYU 发表于 2021-5-29 15:16
def num(x):             #定义一个函数名为num,参数为x。这定义的参数在调用时没有用到
    100

谢谢谢谢~{:10_297:}{:10_281:}
页: [1]
查看完整版本: 第18讲求水仙花数