基于同一数组中最大值的百分比减少数组长度

2024-06-26 14:51:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着找出代码的问题,因为几天了,但没有运气。我减少了数组长度的基础上,一些百分比的最大值在同一数组,但得到一些错误的类型值。我也跟随其他职位,但无法修复这个错误的函数和浮动。有人能告诉我哪里做错了吗?第一个小函数给出数组中的最大元素乘以某个百分比值,如下所示:

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)和percent与兼容的格式对齐,但它仍然给出类型错误: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

Tags: 函数类型lenreturndef错误val数组
1条回答
网友
1楼 · 发布于 2024-06-26 14:51:30

以身份运行代码,不给出任何错误:

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)

相关问题 更多 >