在 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)
获取该错误消息的唯一方法是将空序列传递给 max
和 min
函数,如下所示
>>> 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
>>>
我正在尝试解决一个问题,我需要编写代码来接受任意数量的参数(所有整数)和 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)
获取该错误消息的唯一方法是将空序列传递给 max
和 min
函数,如下所示
>>> 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
>>>