我试图找到一个偶数和奇数列表的中间值。说来话长,但我必须以这种方式找到中间值(不导入任何内容)
当我传入myodList作为参数时,中间值是3(正确)。然而,当我传入MyEventList作为参数时,我又得到了3。如何使MyEventList正常工作并具有3.5的输出
myOddList = [1, 2, 3, 4, 5]
myEvenList = [1, 2, 3, 4, 5, 6]
def medianCalculator(myEvenList):
myOddList.sort()
myEvenList.sort()
n = len(myOddList)
s = len(myEvenList)
if n % 2 != 0:
answerOdd = myOddList[int(n/2)]
return answerOdd
else:
one = myEvenList [(s-1) // 2]
two = myEvenList [(s+1) // 2]
answerEven = (one + two) / 2
return answerEven
medianForEvenList = medianCalculator(myEvenList)
print(medianForEvenList)
也许问题是我的回答不正确
问题:
myEvenList
和myOddList
内的medianCalculator
,这是您不应该访问的medianCalculator
应与任何外部变量分离李>myEvenList
参数对myEvenList
全局变量进行阴影处理n
,它是从myOddList
计算出来的,因此它将始终只运行两条边中的一条李>sort()
,因为它会修改基础列表。先复印一份李>解决方案:
medianCalculator
功能没有副作用。这意味着,它不应该访问其自身函数之外的任何变量,而只对其输入参数进行操作李>medianCalculator
。使用不同的参数使其在不同的输入上运行李>代码:
你得到3分是因为你忽略了
myEvenList
不要在函数中同时使用两个列表,只使用给定的参数
相关问题 更多 >
编程相关推荐