-1

我是 Python 新手,还有很多东西要学。我做错了什么,你有什么建议吗?

if __name__ == '__main__':
    arr = list(map(int, input().strip().split()))
    result = filter(lambda x: x != max(arr), arr)
    print(max(result))
4

2 回答 2

1

看起来该程序的目标是找到序列中的第二大。如果只输入一个元素,过滤器会删除该元素,结果为空。这就是你收到错误的原因

我做了一些改变来处理它。请看看这是否有效

arr = list(map(int, input().strip().split()))
result = filter(lambda x: x != max(arr), arr)

if(len(arr)==1):
    print(arr[0])
else:
    print(max(result))
于 2021-09-08T05:07:21.213 回答
0

这意味着您的result变量是一个空序列。在这种情况下,这意味着所有值arr都相同。

因此,如果您不想让它引发错误,请尝试将默认值设置为None,例如:

if __name__ == '__main__':
    arr = list(map(int, input().strip().split()))
    result = filter(lambda x: x != max(arr), arr)
    print(max(result, default=None))
于 2021-09-08T04:29:29.293 回答