我的任务:
编写一个简短的Python函数minmax(data),它接受一个序列 一个或多个数字,并返回最小和最大的数字, 以长度为2的元组的形式。不要使用内置的 在实施解决方案时最小或最大的功能。
以下是代码:
def minmax():
data = input("Enter a list of any input > ")
max, min = data[0]
for x in data:
if x > max:
max = x
elif x < min:
min = x
print (max, min)
minmax()
这给了我ValueError: not enough values to unpack (expected 2, got 1)
。
我该如何解决这个问题?
答案 0 :(得分:3)
您使用了错误的语法。我相信您要做的是将min
和max
初始化为列表的第一个元素。您使用的分配是多次分配 - 左侧有两个变量,右侧必须有两个值。
但是你希望用户输入输入正常;只需split
您选择的分隔符上的输入,然后将其用于split
。
另外,请记住将值从字符串转换为int(左侧作为学生的练习)。
您提供的错误的重要语法是
min = max = data[0]
现在你可以继续你的循环。
答案 1 :(得分:1)
您的代码中存在错误:
data[0]
分配给min
和max
时,您必须将=
放在min
和max
之间。请在代码中进行更改,如下所示:
data =[int(x) for x in input().split(",")]
max = min = data[0]
请提供input
列表number1
,number2
,number3
等。
这将正常工作。
答案 2 :(得分:0)
data
是一个元组,用于保存表单(1,2)中的输入项。你正在做data[0]
这意味着你从data
元组得到第一个项目,这只是一个项目,而不是两个项目。然后使用命令max, min = data[0]
告诉python从一个项data[0]
中提取两个项目。
改为使用:
max, min = data
答案 3 :(得分:0)
您尚未将输入转换为列表,并且您以错误的方式定义了最小值和最大值。
执行此操作将输入转换为列表:
data.split(" ") #if every number is separated by space
对于min和max,你通过说
分配两个值min, max= data[0]
这样做:
min=max=data[0]
如果只有条件不使用min和max函数,你可以通过某种方式欺骗这个程序。您正在以某种方式对列表进行排序。但是你也可以这样做:
def minmax():
data = input("Enter a list of any input > ")
myList= data.split(" ")
myList.sort()
print(myList[0], "is minimum and", myList[-1],"is max")
minmax()