2020-魄力 发表于 2020-6-9 15:26:47

水仙花

https://xxx.ilovefishc.com/album/202006/09/151900e4z3pkx4xsnxbdbx.png

如图片中所示,在没有学习函数时,左边求出了水仙花数的值,用了函数这样写为什么不行呢?
而且下面输入了sxh()应该是运行程序吧,也没有运行,还是手动调用函数,
来自一只初学鱼油的疑问,小甲鱼的答案不难我看得懂,就是这里不明白是为什么,求解答{:5_108:}

Twilight6 发表于 2020-6-9 15:28:07

可以的~只是你没有打印返回值,你只是单纯的调用了函数

print(sxh())

qiuyouzhi 发表于 2020-6-9 15:29:19

函数的返回值需要用print打印出来。

Twilight6 发表于 2020-6-9 16:43:26


要连续打印要这样写

def sxh():
    num = []
    for each in range(100,1000):
      a = each % 10
      b = (each // 10) % 10
      c = (each // 100) % 10
      if each == a**3 + b**3 + c**3:
            num.append(each)
            print(each)
    if num == []:
      print('在指定范围内未找到水仙花数!')
sxh()

sunrise085 发表于 2020-6-9 16:48:36

两个问题。
第一、函数返回值需要打印,不打印是看不到结果的
第二、你的for循环只进行一次就结束了,因为当each为100时,不管后面进入if…else…的哪个分支,都会有return,return就结束函数,直接返回了。
帮你修改了一下。
想只获得一个水仙花数就把result相关的都删掉,直接return each,想获得全部水仙花数就用result列表存放并返回
def sxh():
    result=[]
    for each in range(100,1000):
      a=each%10
      b=(each//10)%10
      c=each//100
      if each==a**3+b**3+c**3:
            #return each#只找第一个
            result.append(each)
    return result
            
print(sxh())

2020-魄力 发表于 2020-6-9 16:54:40

Twilight6 发表于 2020-6-9 16:43
要连续打印要这样写

谢谢哥耐心讲解!

Twilight6 发表于 2020-6-9 16:56:58

2020-魄力 发表于 2020-6-9 16:54
谢谢哥耐心讲解!

。。。没事
页: [1]
查看完整版本: 水仙花