【问题标题】:Timer function won't take in additional arguments定时器函数不会接受额外的参数
【发布时间】:2021-04-03 11:36:29
【问题描述】:

我想用我在互联网上找到的东西来计时这个搜索算法

L=[8,2,1,111,8,3,4,6,5,7,10,9,12,11]
v=10

def searchlinear(L, v):
          
    i= 0
    for value in L:
        if value == v:
            return i
        i+= 1
    return len(L)


from random import randint
from timeit import repeat

def run_algorithm(algorithm, array):
  
    setup_code = f"from __main__ import {algorithm}" \
        if algorithm != "sorted" else ""

    stmt = f"{algorithm}({array})"

    times = repeat(setup=setup_code, stmt=stmt, repeat=3, number=10)

    print(f"Algorithm: {algorithm}. Minimum execution time: {min(times)}")

ARRAY_LENGTH = len(L)
array = [randint(0, 1000) for i in range(ARRAY_LENGTH)]

run_algorithm(algorithm="searchlinear", array=array)            

不知何故,它显示了这个错误:

TypeError: searchlinear() 缺少 1 个必需的位置参数:'v'

我觉得我必须在我的函数中删除 v 参数,但我需要它才能工作。有什么建议吗?

【问题讨论】:

  • 除了传递错误的参数外,您还在为列表构建计时。你应该把它放在设置中。

标签: python


【解决方案1】:

searchlinear 函数需要 2 个参数。但是,在以下行中,您只传递了数组。您也必须传递第二个参数:

stmt = f"{algorithm}({array})"

因此,将其更改为:

someValue = 7  # any number you want to search
stmt = f"{algorithm}({array}, {someValue})"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 2018-07-06
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多