Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于if/return的Python函数_Python_Function - Fatal编程技术网

关于if/return的Python函数

关于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)

我在代码学院学习,遇到了这个问题:

创建一个名为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)]
   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