任务正在编写一个函数,该函数返回一周中的平均睡眠时间。不包括星期五和星期六。输入的是小时列表,从星期一开始。
def averageSleep(hours):
fridays = hours[4::-5]
saturdays = hours[5::-6]
length = len(hours)
final = (sum(hours)-sum(fridays)-sum(saturdays)) / (length - 2)
return final
print(averageSleep([6, 7.5, 3.5, 6, 9, 10, 7, 6, 7, 4]))
我编写的函数返回:
5.875
这是正确的。从列表中排除项目9和10(星期五和星期六)。但是问题是,传递更多的列表项(产生更多的星期五和星期六)会使函数返回错误的结果。 hours[4::-5]
和hours[5::-6]
仅在更多的星期五和星期六不起作用。
有什么主意如何从列表中选择所有星期五和星期六?
答案 0 :(得分:3)
查找方式list slicing works。 hours[x:y:z]
为您提供hours
的元素,从第x
个索引开始,直至(但不包括)第y
个索引,并以z
为步长元素。要获得星期五,您要跳过第4
个索引的7个元素,因此您需要这样做
fridays = hours[4::7]
saturdays = hours[5::7]
还请注意,您必须将总和除以(len(hours) - len(fridays) - len(saturdays))
才能得到正确的均值。