Python 修复TypeError:排序后的参数应为1,得到3

Python 修复TypeError:排序后的参数应为1,得到3,python,list,sorting,error-handling,typeerror,Python,List,Sorting,Error Handling,Typeerror,如何修复此代码,使其检查(a、b、c)中的数字是否已排序,如果未排序,则返回如上所示的值错误 def are_sorted(a, b, c): if sorted(a, b, c) != (a, b, c): raise ValueError("Must be ascending.") else: return [a, b, c] print(are_sorted(1.6, 3.1, 2.7)) print(are_sorted(-2

如何修复此代码,使其检查(a、b、c)中的数字是否已排序,如果未排序,则返回如上所示的值错误

def are_sorted(a, b, c):

    if sorted(a, b, c) != (a, b, c):
     raise ValueError("Must be ascending.")
    else:
      return [a, b, c]

print(are_sorted(1.6, 3.1, 2.7))
print(are_sorted(-2.3, 12.7, 28))
现在,它返回一个错误,读取:

TypeError:排序后应为1个参数,得到3个 第三行


第3行中解决此问题的最简单方法是什么?

似乎您需要
*args

sorted
接受1个参数
分隔参数,因此python认为您正在传递三个参数。相反,您可以传入一个iterable,例如元组或列表
*args
将是您在这里的朋友

def are_sorted(*args):
    print(args)
    if sorted(args) != args:
     raise ValueError("Must be ascending.")
    else:
      return args


print(are_sorted(10,5,2))
输出

(10, 5, 2)
Traceback (most recent call last):
  File "<string>", line 9, in <module>
File "<string>", line 4, in are_sorted
ValueError: Must be ascending.
(10,5,2)
回溯(最近一次呼叫最后一次):
文件“”,第9行,在
中第4行的文件“”已排序
ValueError:必须为升序。

sorted([1,2,3])最简单的方法是(1)阅读文档(2)照它说的做。您可以对一个序列(一个具有定义良好的小于关系的iterable)进行排序,而不是对单个值的任意序列进行排序。用括号把它们括起来,并称之为“完成”。注意,如果