关于if/return的Python函数
我在代码学院学习,遇到了这个问题: 创建一个名为middle_element的函数,该函数有一个名为 lst 如果lst中有奇数个元素,则函数应 返回中间元素。如果有偶数个元素, 函数应该返回中间两个元素的平均值 这是我的密码:关于if/return的Python函数,python,function,Python,Function,我在代码学院学习,遇到了这个问题: 创建一个名为middle_element的函数,该函数有一个名为 lst 如果lst中有奇数个元素,则函数应 返回中间元素。如果有偶数个元素, 函数应该返回中间两个元素的平均值 这是我的密码: def middle_element(lst): if (len(lst)%2) = 0: return lst[len(lst)/2] else: firstel= lst[len(lst/2-1)] secel= lst[len(lst/2+1)
def middle_element(lst):
if (len(lst)%2) = 0:
return lst[len(lst)/2]
else:
firstel= lst[len(lst/2-1)]
secel= lst[len(lst/2+1)]
avg = firstel+secel/2
return avg
由于语法错误,无法编译
:(有人能给我建议吗?谢谢!叹气,可能是个完全的初学者。让我们先修复缩进,因此您的代码看起来是这样的
def middle_element(lst):
if (len(lst)%2) = 0:
return lst[len(lst)/2]
else:
firstel= lst[len(lst/2-1)]
secel= lst[len(lst/2+1)]
avg = firstel+secel/2
return avg
在比较中,fix旁边是=符号。您不想在这里分配变量,但需要比较,因此需要
def middle_element(lst):
if (len(lst)%2) == 0:
return lst[len(lst)/2]
else:
firstel= lst[len(lst/2-1)]
secel= lst[len(lst/2+1)]
avg = firstel+secel/2
return avg
但是,现在当列表中的元素数为偶数时,您正在执行语句return lst[len(lst)/2]
。您希望反过来执行该语句。当列表中的元素数为奇数时,应执行该语句,因此:
def middle_element(lst):
if (len(lst)%2) == 1:
return lst[len(lst)/2]
else:
firstel= lst[len(lst/2-1)]
secel= lst[len(lst/2+1)]
avg = firstel+secel/2
return avg
作为一个小小的改变,我会改变
return lst[len(lst)/2]
进入
为了防止python3出现问题。现在,对于另一部分中完全错误的编码器来说,它应该是
firstel= lst[len(lst)//2]
secel= lst[len(lst)//2+1]
avg = (firstel+secel)/2
return avg
由于len()-函数需要的是一个列表,而不是一个被某物分割的列表。此外,您需要在(firstel+secel)/2
之间使用大括号,否则您将计算firstel+(secel/2),这不是平均值。因此,总的来说:
from __future__ import division
def middle_element(lst):
if len(lst) % 2 == 1:
return lst[len(lst) // 2]
else:
firstel = lst[len(lst) // 2 - 1]
secel = lst[len(lst) // 2]
avg = (firstel + secel) / 2
return avg
是的,缩进不正确。
else
在函数体currently之外,如果需要比较,那么两个==符号,然后在列表包含奇数个元素时要执行的代码“return lst[len(lst)/2]”,因此需要检查“==1”而不是“==0”。以及表达式“len(lst/2+1)”也是错误的。+1肯定在len函数calloh my之外。非常感谢您的帮助!感谢您的详细解释!是的,我是新来的编码员,所以一定要容忍像我这样的新手。非常感谢!@HongWei On stackoverflow当您喜欢一个问题/答案时,您正在向上移动/接受它。不要评论,请参阅
from __future__ import division
def middle_element(lst):
if len(lst) % 2 == 1:
return lst[len(lst) // 2]
else:
firstel = lst[len(lst) // 2 - 1]
secel = lst[len(lst) // 2]
avg = (firstel + secel) / 2
return avg