为什么程序不运行else块?

2024-09-25 06:33:46 发布

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

def maxdiff(x):
    i = 1
    max = x[0]
    min = x[0]
    while i < len(x):
        if x[i] > max:
            max = x[i]
        elif x[i] < min:
            min = x[i]
        else:
            continue
        i = i+1
    return max-min

如果x = [2,4,6,1,3,9],结果应该是9-1=8。但是,该函数没有完成执行

调试帮助我理解了它不会执行else语句。它直接跳到i=i+1

在这种情况下,x[4]=3,它既不大于max也不小于min。因此,函数跳回while循环,而不增加i。为什么会这样


Tags: 函数lenreturnifdef情况语句min
1条回答
网友
1楼 · 发布于 2024-09-25 06:33:46

由于您正在迭代输入数组中的值,因此应重新构造以使用for循环:

def maxdiff(x):
    max = x[0]
    min = x[0]
    for val in x[1:]:
        if val > max:
            max = val
        elif val < min:
            min = val

    return max-min

这不仅可以更干净,还可以降低非端接环路的风险

或者

您始终可以使用内置程序(其中有many):

def maxdiff(x):
    return max(x)-min(x)

相关问题 更多 >