gpt4 book ai didi

python - 在 Python 中处理 if 语句中的异常

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:11 24 4
gpt4 key购买 nike

有什么方法可以处理 if 语句中的异常,除了在整个语句中放置一个 tryexcept 括号,或者在每个语句中测试异常提前排队?

例如,假设我有简化的代码:

 if a[0] == "a":
return("foo")
elif a[1] == "b":
return("bar")
elif a[5] == "d":
return("bar2")
elif a[2] == "c":
return("bar3")
else:
return("baz")

如果 aword_of_six_characters_or_more 这将正常工作。如果它是一个较短的单词,它会在 elif a[5] == "d" 行引发异常。显然,可以提前测试异常(例如,将 elif a[5] == "d" 更改为 elif len(a) >5 and a[5] =="d ",然后依赖于第一部分为 False,因此第二部分永远不会执行)。我的问题是,是否有任何其他方法可以使 exceptions 被视为 False 并继续执行下一个 elif 语句而不是抛出异常 - 或者类似地,在 elif 行中包含 try except 子句?

(显然,有可能没有办法,因此确认添加异常预测试是如何进行的将是一件好事)。

(我可能应该注意到,我的代码比上面的要复杂得多,虽然我可以进行预检查,但会有很多,所以只是想看看是否有更简单的解决方案。)

最佳答案

好吧,有两种方法可以轻松解决这个问题。您可以对单个字符进行切片,如果它不存在则为空。例如,

if a[0:1] == "a":
return("foo")
elif a[1:2] == "b":
return("bar")
elif a[5:6] == "d":
return("bar2")
elif a[2:3] == "c":
return("bar3")
else:
return("baz")

或者,您可以编写一个包装函数来忽略 IndexError。例如,

def get(obj, index):
try:
return obj[index]
except IndexError:
return

if get(a, 0) == "a":
return("foo")
elif get(a, 1) == "b":
return("bar")
elif get(a, 5) == "d":
return("bar2")
elif get(a, 2) == "c":
return("bar3")
else:
return("baz")

关于python - 在 Python 中处理 if 语句中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com