软件工程(CS5704)-堆栈溢出活动[关闭]

问题描述 投票:0回答:7

我正在尝试编写一个 Python 函数,该函数将整数列表作为输入并返回列表中的最大值和最小值。这是我的代码:

def find_min_max(nums):
   min_val = nums[0]
   max_val = nums[0]
   for num in nums:
       if num < min_val:
           min_val = num
       elif num > max_val:
           max_val = num
   return min_val, max_val

当我尝试使用空列表运行此函数时,如下所示:

find_min_max([])

我收到以下错误: TypeError: 'NoneType' 对象不可订阅

这个错误是什么意思,我该如何解决?在此先感谢您的帮助!

python
7个回答
0
投票

您正在尝试索引一个空列表。因此,你会得到

IndexError: list index out of range
错误。 您可以通过在开头检查空列表来防止此错误,如下所示,

def find_min_max(nums):
   if not nums:
     return None, None

   min_val = nums[0]
   max_val = nums[0]
   for num in nums:
       if num < min_val:
           min_val = num
       elif num > max_val:
           max_val = num
   return min_val, max_val

这将返回

min_val
max_value
作为
None
。您可以返回另一个值或抛出错误,而不是返回 None。


-1
投票
    def find_min_max(nums):

       if len(nums)==0:
            return 0, 0
       min_val = nums[0]
       max_val = nums[0]
       for num in nums:
           if num < min_val:
               min_val = num
           elif num > max_val:
               max_val = num
       return min_val, max_val

-2
投票

你试图访问一个不存在的对象。您需要在函数中检查空列表。


-2
投票

您正在尝试访问空列表的元素,您将需要提供至少一个元素。

编辑: 你可以抛出异常

def find_min_max(nums):
   if nums is None:
      raise Exception("Sorry, you will need to provide at least one element")
   min_val = nums[0]
   max_val = nums[0]
   for num in nums:
       if num < min_val:
           min_val = num
       elif num > max_val:
           max_val = num
   return min_val, max_val

-2
投票

没有给出数字列表,将列表分配给 num 例如: 数字 = [3, 9, 4, 2, 8, 5, 6]


-3
投票

我们可以为此使用try catch


-3
投票

我们可以使用 if else。这可能是答案

© www.soinside.com 2019 - 2024. All rights reserved.