我正在尝试编写一个 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' 对象不可订阅
这个错误是什么意思,我该如何解决?在此先感谢您的帮助!
您正在尝试索引一个空列表。因此,你会得到
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。
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
你试图访问一个不存在的对象。您需要在函数中检查空列表。
您正在尝试访问空列表的元素,您将需要提供至少一个元素。
编辑: 你可以抛出异常
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
没有给出数字列表,将列表分配给 num 例如: 数字 = [3, 9, 4, 2, 8, 5, 6]
我们可以为此使用try catch
我们可以使用 if else。这可能是答案