def removal(DataList, n):
if len(DataList) < 2*n:
print "Not enough elements!"
for i in range(n):
DataList.remove(min(DataList))
DataList.remove(max(DataList))
return sorted(DataList)
def main():
inputs = []
while True:
inp = raw_input("Please enter a new integer, press ENTER if you want to stop: ")
if inp == "":
break
else:
inputs.append(inp)
removal(inputs,2)
if __name__=='__main__':
main()
main()
我有一个ValueError: min() arg is an empty sequence
同时,如果我没有在main()中编写代码,并且如果 name ==' main ',我可以使用以下代码。 / p>
def removal(DataList, n):
#return to a sorted list with n smallest and n largest numbers removed.
for i in range(n):
DataList.remove(min(DataList))
DataList.remove(max(DataList))
return sorted(DataList)
inputs = []
while True:
inp = raw_input("Please enter a new integer, press ENTER if you want to stop: ")
if inp == "":
break
else:
inputs.append(inp)
removal(inputs,2)
有人可以解释为什么它在以前不起作用,我应该如何使它起作用?
答案 0 :(得分:1)
使用:
if __name__=='__main__':
main()
main()
您要两次调用main
函数(当您的程序作为主程序运行时),因此在输入一系列数字并按另一个Enter键结束输入后,main
会调用removal
执行预期的操作,该操作不会产生任何输出,并返回主程序以开始对main
的另一次调用,该调用将提示另一组数字输入。如果此时仅按另一个Enter键,您将在inputs
列表中得到一个空列表,您的removal
函数无法正确处理该列表,并以空的形式调用min
列表,导致ValueError: min() arg is an empty sequence
发生上述异常。