Python 我想做一个函数,它会找到数组中的最大值

Python 我想做一个函数,它会找到数组中的最大值,python,arrays,max,element,Python,Arrays,Max,Element,如何修复它?您的代码应该如下所示: def max(list): max_element = list[0] for i in range(1, len(list)): if list[i] > max_element: max_element = list[i] print(max_element) print(max([1, 2, 8, 4])) #NameError: name 'max_element' is not

如何修复它?

您的代码应该如下所示:

def max(list):
    max_element = list[0]

    for i in range(1, len(list)):
        if list[i] > max_element:
            max_element = list[i]


print(max_element)

print(max([1, 2, 8, 4]))

#NameError: name 'max_element' is not defined

首先,不要覆盖python的全局变量。Python默认提供了一个
max
函数

def max(list):
    max_element = list[0]

    for i in range(1, len(list)):
        if list[i] > max_element:
            max_element = list[i]
    return max_element


print(max([1, 2, 8, 4]))

不能只使用不在作用域中的变量,max_元素变量仅在函数的
max_元素
作用域中可用,以实际检索值,您需要返回它。

'max\u element'是函数范围内的一个变量,因此当您尝试在函数范围外打印它时,您的计算机不知道它是什么。 您希望在循环完成后打印内部函数,以便在运行时打印它

def max_number(list):
    max_element = list[0]

    for i in range(1, len(list)):
        if list[i] > max_element:
            max_element = list[i]
    return max_element

print(max_number([1, 2, 8, 4]))

max_元素
在函数中本地定义。您试图在其范围之外访问它。你甚至不需要这样称呼。只需确保在函数中返回
max\u元素
,并使用第二个print语句即可。Python有一个内置函数来执行您想要的操作:remove
print(max\u元素)
,因为它毫无意义。max\u元素的作用域仅限于函数,因为它是在函数内部定义的。您无法在外部访问它。Python不是bash或Lua。你的函数应该通过一个returns将max_元素传递到外部。你应该只使用buildin
max()
函数谢谢!那么,问题是因为我的函数名?不,问题是因为您试图打印
max\u元素
,而您在函数外部无权访问该元素。如果在函数中执行了
打印(max\u元素)
,则不会出错。在这两种情况下,都不要重写python全局变量。您确实不想在函数中打印值。实现此函数的原因是希望获得最大的项。所以你应该还它
def max(list):
  max_element = list[0]
  for i in range(1, len(list)):
    if list[i] > max_element:
      max_element = list[i]
  print(max_element)   

max([1, 2, 8, 4])