检查列表中的索引是否越界 Python

时间:2021-06-04 17:27:32

标签: python-3.x list function error-handling indexoutofboundsexception

我正在尝试编写一个函数来检查 values 索引是否存在。该函数检查 n 是否导致越界错误。我如何才能检查这个?

values = ["a", "b", "1"]

def check(n):
    if values[n]:
        print("value exists")
    else:
        print("value doesnt exist")

check(1)
check(4)
check(2)

3 个答案:

答案 0 :(得分:0)

使用异常处理

def check(n):
  try:
    print(values[n])
  except IndexError:
    # Index Out of Bound 
    print("value doesnt exist")

答案 1 :(得分:0)

你不需要使用异常处理,最好避免它。

def check(n):
    if n >= 0 and n < len(values):
        print("value exists")
    else:
        print("value doesnt exist")

答案 2 :(得分:0)

在调用列表中的项目时,Python 将 1 作为列表的第 2 个,将 0 作为列表的第一个,将 3 作为列表的第 4 个,以此类推。翻译函数定义后的接下来的三行代码,“检查清单2,检查清单5,检查清单3”。项目不超过 3 个,因此 check(4) 会引发错误。调整 check(n) 的定义,如下所示:

values = ["a", "b", "1"]
def check(n):
    try:
        print(values[n], 'exists')
    except:
        print("value doesn\'t exist")

try 关键字只是测试它是否不会引发错误。如果是,则跳转到 except 关键字,执行该关键字。上面的代码指定了值项,逗号不会带来错误。再试一次,输出:

b exists
value doesn't exist
1 exists

但是要小心,如果您尝试为一个错误打印出一行字符串,不要只在应该输入的时候输入 (except:)(除了错误名称 :) 对于计划在程序中出现的每个唯一错误。它将只执行第一个,而不执行其余的。