min()函数无法正常工作,输出错误

时间:2019-01-31 01:11:03

标签: python-3.x

我正在处理一个基于旅行商问题的问题,由于某种原因,min()函数在与另一个浮点数进行比较时不能为我提供正确的数字

我尝试将float()放在要比较的float周围,但这只是给了我相同的输出

prn = [0]
for _ in range(1, N):
    for i in range(1, len(lst)):
        mn = 100
        mni = 0
        chk = sqrt((lst[i][1][0] - last[0])**2 + (lst[i][1][1] - last[1])**2)
        if int(chk) < int(mn):
            mn = chk
            mni = lst[i][0]
            delete = i
            last = lst[delete][1]
    lst.pop(delete)
    prn.append(mni)
    print(mn)

运行输入时,您可以在这里找到:https://iceland.kattis.com/problems/iceland.landsreisa/file/statement/attachments/iceland.txt
prn列表是[0, 453, 452, ..., 2, 1]而不是[0, 4, 13, ..., xn-1, xn],因此min()函数使mn等于它被馈送的最后一个内容。

1 个答案:

答案 0 :(得分:0)

for i in range(1, len(lst)):
    mn = 100
    mni = 0
    chk = sqrt((lst[i][1][0] - last[0])**2 + (lst[i][1][1] - last[1])**2)
    if int(chk) < int(mn):
        mn = chk
        mni = lst[i][0]

请注意,每次迭代时如何始终将mn和mni分别设置为100和0,因此,您总是将chk与100进行比较。因此,在附加mni时,它将是lst [i] [0]的值最后一次迭代,即0。

我假设这是您对min()的实现,而mni表示min,并且您在其他地方定义了mn和mni,因为它们不在范围内。