在 max() 操作期间收到 ValueError

Receiving a ValueError during max() operation

我正在尝试解决一个问题,我需要编写代码来接受任意数量的参数(所有整数)和 return 所有参数的最小值和最大值之间的差值的结果.那是我写的代码:

def checkio(*args):
    Max = max(args)
    Min = min(args)
    difference = Max - Min
    return difference

但是我收到了这个错误:

ValueError: max() arg is an empty sequence

但是如果我像这样输入打印语句

def checkio(*args):
    Max = max(args)
    Min = min(args)
    difference = Max - Min
    print(difference)
    return difference

它确实打印出差异。

2

所以,如果差异变量有正确的值,为什么它不能再跳下一行 return 呢?
另外,如果 max() 导致了问题,为什么它首先会导致差异?

标记软件正在运行这个作为它的第一个测试:

checkio(1, 2, 3)

min或max函数取一个可迭代对象,如list或string,多个参数也可以。 所以你可以像这样更改代码:

def checkio(*args):

  Max = max(args)
  Min = min(args)

  difference = Max - Min

  return difference
print checkio(1,2,3,-1,9)

如果你把一个列表作为参数,试试这样:

def checkio(args):

  Max = max(args)
  Min = min(args)

  difference = Max - Min

  return difference
print checkio([1,2,3,-1,9])
参数列表中的

star(*) 表示您可以将任何参数传递给 function.But 您必须将 * 参数放在最后一个,例如:

def sum_all(one, *args):

  return one +  sum(args)

print sum_all(1,1,2,3,34)

获取该错误消息的唯一方法是将空序列传递给 maxmin 函数,如下所示

>>> max(())
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    max(())
ValueError: max() arg is an empty sequence
>>> min(())
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    min(())
ValueError: min() arg is an empty sequence

在您的情况下,如果您不带任何参数调用 checkio,则 args 将是一个空元组。这就是您收到此错误消息的原因。

你的函数似乎是正确的:

$ python3
Python 3.4.1 (default, Nov 28 2014, 00:41:19) 
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> def checkio(*args):
...     Max = max(args)
...     Min = min(args)
...     difference = Max - Min
...     return difference
... 
>>> checkio(2,3,4)
2

我只得到错误,当 运行 函数没有任何参数时:

>>> checkio()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in checkio
ValueError: max() arg is an empty sequence
>>>