我如何通过使用函数的结果作为下面的变量来解决问题?

问题描述 投票:0回答:1

我想出了这段代码:

lista= [5,3.2, 'Error', 44, 'Error', 35]
listb= [70, 70, 20, 410,'Error', 4.9]
for i in range(6):
    a= lista[i]
    b= listb[i]
    if a == 'Error' or b == 'Error':
        print(f" Case {i}")
        print(" One of the values is not a number")
        print("-----")
    else:
        def c(a):      
            c=0.1*a**3 -0.6*a**2 
            return c
            def d(a,b,c):       
                return a+b+c(a)
        print(f" Case {i} ")
        print(f" Initial values {a} {b}")
        print(f" Final values {c(a)} {d(a,b,c)}")
        print("-----")``

问题是第二个功能不起作用。如果我用 d 和第二个函数删除所有内容,它与所需的输出完全相同。 我得到的错误是:+ 支持的操作数类型:'int' 和 'function' 有人能帮帮我吗? 所需的输出:

案例0 初始值 5 70 最终值 -2.5 72.5

案例1 初始值 3.2 70 最终值 -2.8672 70.3328

案例2 其中一个值不是数字

案例3 初始值 44 410 最终值 7356.799999999999 7810.799999999999

案例4 其中一个值不是数字 案例5 初始值 35.0 4.9 最终值 3552.5 3592.4

活动线路数不能超过20条。

python function return-value definition operands
1个回答
0
投票

您当前的代码不是正确的Python代码。所以我不确定你是如何获得任何输出的。通过修复函数

d()
的缩进,我得到

lista= [5,3.2, 'Error', 44, 'Error', 35]
listb= [70, 70, 20, 410,'Error', 4.9]
for i in range(6):
    a= lista[i]
    b= listb[i]
    if a == 'Error' or b == 'Error':
        print(f" Case {i}")
        print(" One of the values is not a number")
        print("-----")
    else:
        def c(a):      
            c=0.1*a**3 -0.6*a**2 
            return c
        def d(a,b,c):       
            return a+b+c(a)
        print(f" Case {i} ")
        print(f" Initial values {a} {b}")
        print(f" Final values {c(a)} {d(a,b,c)}")
        print("-----")

此代码可以工作并且还会产生您想要的输出:

Case 0 
 Initial values 5 70
 Final values -2.5 72.5
-----
 Case 1 
 Initial values 3.2 70
 Final values -2.8672 70.3328
-----
 Case 2
 One of the values is not a number
-----
 Case 3 
 Initial values 44 410
 Final values 7356.799999999999 7810.799999999999
-----
 Case 4
 One of the values is not a number
-----
 Case 5 
 Initial values 35 4.9
 Final values 3552.5 3592.4
-----

我通常会避免使用循环定义函数,并将

c()
d()
移到循环之外。还要尽量避免使用 c 和 d 这样的函数名称,尤其是当您也使用 c 作为变量时。您可以节省一点打字量,但会失去很多可读性,并且在混合函数和变量时也容易出错。

© www.soinside.com 2019 - 2024. All rights reserved.