我试图用几天来解决代码的问题,但现在没有运气。我基于相同数组中某些百分比的最大值减少了数组的长度,但是在值的类型中出现了一些错误。我也跟着其他帖子但无法修复函数和浮点数的这个错误。有人可以指导我在这里做错了吗?第一个小函数给出了数组中的最大元素乘以某个百分比值,如下所示:
p = [23, 45.3, 10, 7.56, 5]
percent = 0.15
def max_p(p,percent):
max_val = max(p) * percent
return max_val
然后我调用上面函数的值到他的函数,如下所示:
n_array = [3,2,1,4,5,7]
Olen = len(p)
def rmv(p, n_array,percent):
max_val = max_p(p,percent)
for i in p:
if i < (max_val):
p.remove(i)
Nlen = len(p)
kunfu = Olen - Nlen
tr_new = n_array[: len(n_array) - kunfu]
return tr_new
当我运行一切时它会把错误抛给我
max_val = max(p) * percent
TypeError: unsupported operand type(s) for *: 'function' and 'float'
我已经尝试使用str和float将max(p)和百分比对齐到兼容的格式但仍然给出了类型的错误:function和float或str和int等。我以这种方式调用函数
p = [23, 45.3, 10, 7.56, 5]
n_array = [3,2,1,4,5,7]
percent = 0.15
ans = rmv(p, n_array,percent)
print ans
运行代码,不会出现任何错误:
def rmv(p, n_array,percent):
max_val = max_p(p,percent)
for i in p:
if i < (max_val):
p.remove(i)
Nlen = len(p)
kunfu = Olen - Nlen
tr_new = n_array[: len(n_array) - kunfu]
return tr_new
def max_p(p,percent):
max_val = max(p) * percent
return max_val
p = [23, 45.3, 10, 7.56, 5]
Olen = len(p)
n_array = [3,2,1,4,5,7]
percent = 0.15
ans = rmv(p, n_array,percent)
print(ans)