python计算列表中最大和最小元素的位置。非类型错误

python计算列表中最大和最小元素的位置。非类型错误,python,list,Python,List,我对这个程序的最后一个功能,位置有问题。我必须计算列表中最大和最小数字的位置,但我不断得到TypeError:“NoneType”对象是不可编辑的。我该如何解决这个问题?谢谢 def main(): data = getnumbers() top, bottom = calculate(data) pos1, pos2 = position(data, top, bottom) print("The numbers are,", data) print

我对这个程序的最后一个功能,位置有问题。我必须计算列表中最大和最小数字的位置,但我不断得到TypeError:“NoneType”对象是不可编辑的。我该如何解决这个问题?谢谢

def main():
    data = getnumbers()
    top, bottom = calculate(data)
    pos1, pos2 = position(data, top, bottom)


    print("The numbers are,", data)
    print("The largest and lowest numbers are,", top, "and", bottom)
    print("The position of the largest number is,", pos1, "and the position of the smallest number is,", pos2, ".")


def getnumbers():
    nums = []
    xStr = input("Enter a number (<Enter> to quit) >> ")
    while xStr != "":
        x = eval(xStr)
        nums.append(x)   
        xStr = input("Enter a number (<Enter> to quit) >> ")
    return nums


def calculate(nums):
    top = max(nums)
    bottom = min(nums)
    return top, bottom

def position(nums, top, bottom):
    pos1 = nums.index(top)
    pos2 = nums.index(bottom)



main()
def main():
data=getnumbers()
顶部、底部=计算(数据)
位置1,位置2=位置(数据,顶部,底部)
打印(“数字为,”,数据)
打印(“最大和最小的数字分别为,”、顶部和底部)
打印(“最大数字的位置为,”,pos1“,最小数字的位置为,”,pos2“.”)
def getnumbers():
nums=[]
xStr=input(“输入一个数字(退出)>>”)
而xStr!="":
x=评估(xStr)
nums.append(x)
xStr=input(“输入一个数字(退出)>>”)
返回nums
def计算(nums):
顶部=最大值(nums)
底部=最小值(nums)
返回顶部、底部
def位置(nums、顶部、底部):
pos1=nums.索引(顶部)
pos2=nums.索引(底部)
main()

您从未从
position()
显式返回任何内容,因此将返回
None
。然后对其进行迭代,以便分配给
pos1
pos2
您从未从
position()
显式返回任何内容,因此
None
被返回。然后对其进行迭代,以便分配给
pos1
pos2
您从未从
position()
显式返回任何内容,因此
None
被返回。然后对其进行迭代,以便分配给
pos1
pos2
您从未从
position()
显式返回任何内容,因此
None
被返回。然后对其进行迭代,以便分配给
pos1
pos2

在这种情况下,您绝对不应该使用
eval
。用户可能会输入可能会执行的有害代码。在这种情况下,绝对不应使用
eval
。用户可能会输入可能会执行的有害代码。在这种情况下,绝对不应使用
eval
。用户可能会输入可能会执行的有害代码。在这种情况下,绝对不应使用
eval
。用户可能会输入可能会执行的有害代码。