Python 代码不';t回程浮球
对于输入Python 代码不';t回程浮球,python,Python,对于输入([4,5,5,4]),代码返回4.0,它应该返回4.5,并将4/5分开。 我怎样才能解决这个问题? 编辑:我试图找到列表的中间值 def median(lis): srt_list = lis srt_list.sort() new_lis = srt_list[0:len(lis)//2] new_lis_last = srt_list[len(lis)//2:] if len(srt_list) % 2 == 0: l
([4,5,5,4])
,代码返回4.0
,它应该返回4.5
,并将4/5
分开。
我怎样才能解决这个问题?
编辑:我试图找到列表的中间值
def median(lis):
srt_list = lis
srt_list.sort()
new_lis = srt_list[0:len(lis)//2]
new_lis_last = srt_list[len(lis)//2:]
if len(srt_list) % 2 == 0:
lst_index = new_lis[len(new_lis)-1]
frs_index = new_lis_last[0]
med = (frs_index + lst_index) / 2.0
print med
else:
frs_index = new_lis_last[0]
print median([7,3,1,4])
您正在中使用楼层分割运算符(
/
)
将其更改为使用/
,如下所示
med = (frs_index) + lst_index) / float(2.0)
示例:
print 5/2.0 # 2.5
print 5//2.0 # 2.0
您正在使用
/
楼层分区。如果要使用浮点除法,请使用/
:
med = (frs_index) + lst_index) / 2.0
无需将2.0
转换为浮点,它已经是浮点文本
请注意,以下内容将对lis进行适当排序:
srt_list = lis
srt_list.sort()
srt\u list
是对同一列表对象的另一个引用,而不是副本
守则:
for i in range(len(new_lis)):
lst_index = new_lis[len(new_lis)-1]
return float(lst_index)
break
忽略列表索引,因为它只返回float(new_lis[-1])
;你不妨把这些环放在这里。当函数在该点退出时,返回之后的所有内容都不会执行
这适用于所有3个回路;现在还不清楚您试图通过这些循环实现什么。即使您应该使用/
而不是/
,您也永远无法达到您的分区:
med = (frs_index) + lst_index) // float(2.0)
因为您的2个for循环中有一个return语句:
for i in range(len(new_lis)):
lst_index = new_lis[len(new_lis)-1]
return float(lst_index) # If arriving here, you function return new_lis[len(new_lis)-1] and finish
break
for i in range(len(new_lis_last)):
frs_index = new_lis_last[0]
return float(frs_index) # If arriving here, you function return new_lis_last[0] and finish
break
虽然这是正确的
med = (frs_index) + lst_index) // float(2.0)
您应该将/
替换为/
,这不是您获得4.0
而不是4.5
的原因
按照编写代码的方式,大部分逻辑都不会执行
if len(srt_list) % 2 == 0:
#print "even"
for i in range(len(new_lis)):
lst_index = new_lis[len(new_lis)-1]
return float(lst_index) #This is hit and returns
break
大体上,代码所做的是拆分列表,如果第一个列表的长度相等,则返回第一个元素的浮点表示形式。我相信这不是你想做的
if len(srt_list) % 2 == 0:
#print "even"
for i in range(len(new_lis)):
lst_index = new_lis[len(new_lis)-1]
return float(lst_index) #This is hit and returns
break