我想出了这段代码:
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代码。所以我不确定你是如何获得任何输出的。通过修复函数
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 作为变量时。您可以节省一点打字量,但会失去很多可读性,并且在混合函数和变量时也容易出错。