List 我如何编写一个代码,上面写着;如果我能做到,就做这个。否则什么也不做”;,在Python2.7中?

List 我如何编写一个代码,上面写着;如果我能做到,就做这个。否则什么也不做”;,在Python2.7中?,list,python-2.7,if-statement,List,Python 2.7,If Statement,我如何在Python2.7中编写这样一段代码:“如果我能做到这一点,就这样做,否则什么也不做” 我在下面添加了不起作用的代码 words = ["glad", "lycklig", "fin", "vacker", "sot", "blomming"] word_index = words.index("sot") focus_word = words[word_index] tre = words[word_index+1] if words[word_index+2] == True:

我如何在Python2.7中编写这样一段代码:“如果我能做到这一点,就这样做,否则什么也不做”

我在下面添加了不起作用的代码

words = ["glad", "lycklig", "fin", "vacker", "sot", "blomming"]

word_index = words.index("sot")
focus_word = words[word_index]
tre = words[word_index+1]
if words[word_index+2] == True:
    fyra = words[word_index+2]
else:
    print "the list is not long enough"
所以我想得到一个单词,如果有,在“sot”之后是两个单词。在本例中没有,然后我只想跳过该命令。

有两种避免Python代码中出现错误的一般“原则”

一种称为“三思而后行”(LBYL)的方法是,在进行任何依赖于正确性的操作之前,应检查所操作的值是否正确。这是一种很好的方法,当错误不是明显的错误(如异常)时,而是当给出无效输入时,您会得到无效的答案

对于您的代码,在代码中执行此类检查的最佳方法是使用
if word\u index+2
直接检查您要查找的索引是否太大

另一种避免错误的设计实际上并没有完全避免错误,而是让错误发生并在事后处理。这被称为“请求原谅比请求许可更容易”(EAFP),通常涉及Python中的
try
块之外的

对于您的代码,您可以使用此代码捕获
索引器
,如果
word\u index+2
不在
单词
列表的末尾,则将引发该索引器:

try:
    fyra = words[word_index+2]
except IndexError:
    print "No such value"
不过,您可能需要更多的逻辑,因为如果您点击
,则不会定义
fyra
,除了
案例。您可能希望使用
sys.exit()
退出,或者在
结束时将
fyra
设置为某个默认值,但
除外,而不只是打印错误消息


请注意,仔细考虑在
except
子句中捕获的异常非常重要。在大多数情况下,您不希望捕获所有错误(除了:
),因为这可能会隐藏真正会使程序崩溃的意外错误,并向您显示堆栈跟踪(以便您可以修复导致错误发生的错误)。通常,最好捕获您能捕获的最具体的异常类型,并将您的
try
围绕您能找到的最小代码块。

您的
if
子句不正确:
if words[word\u index+2]==True:
。这相当于检查
words[word\u index+2]
是否等同于
boolean
True,这只是。。。不可能,哈哈。试试
如果words[word\u index+2]:
tacocate是对的,但我认为要保持逻辑切换相同,你需要
如果words[word\u index+2]:
。还要注意,您必须正确缩进打印语句。Python关心空格。@tyleha我的错,哈哈!我已经编辑了我的评论。谢谢你指出3反身:S