Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我要对另一个文件中的同一行进行回溯?索引器:列表索引超出范围_Python_Python 3.x - Fatal编程技术网

Python 为什么我要对另一个文件中的同一行进行回溯?索引器:列表索引超出范围

Python 为什么我要对另一个文件中的同一行进行回溯?索引器:列表索引超出范围,python,python-3.x,Python,Python 3.x,我很难理解,如果序列被切换,为什么这行代码在工作时会有回溯 代码行为: 1) 如果单词[0]!=“From”或len(words)

我很难理解,如果序列被切换,为什么这行代码在工作时会有回溯

代码行为: 1)
如果单词[0]!=“From”或len(words)<1:
(第9行,左侧文件,提供回溯)

2)
如果len(单词)<1或单词[0]!=“From”:
(第10行,右侧文件,works)


我试着用“工作”行替换左边的那一行。所以我只是好奇,为什么需要在序列中有具体的内容。

这是因为当你调用:
如果len(words)<1或words[0]!=“从”

表达式按其出现的顺序求值,首先是
len(words)<1
然后是
words[0]!=“来自”
。当第一个表达式被计算为true时,代码正在计算
表达式,因此解释器不会计算第二个表达式,因为不管发生什么,都会输出true

当您调用
if words[0]!=“From”或len(words)<1
解释器将计算表达式
words[0]!=“From”
当单词为空列表时,您将收到索引错误,因为数组中不存在索引0


顺便说一下,如果不是单词或单词[0],您可以将表达式恢复为
!=“From”

在第一种情况下,您正在访问单词列表中的第一项(单词[0]),但如果列表为空,则索引超出范围,这在Python中会生成错误


在秒的情况下(工作的行),首先检查列表是否为空(少于1项)。在Python中,布尔“and”和“or”是短路运算符。这意味着如果“或”之前的条件为真,它将不会评估“或”之后的条件。因此,它不会尝试访问越界索引。

最好发布实际代码。如果您这样做了,我们可以运行它并亲自查看错误。您得到的错误是什么?这将有助于: