Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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中的空列表中接收索引错误pop_Python_Postfix Notation - Fatal编程技术网

从Python中的空列表中接收索引错误pop

从Python中的空列表中接收索引错误pop,python,postfix-notation,Python,Postfix Notation,我在使用运行多行算术表达式的测试文件时收到一个索引错误:从空列表弹出。应用后缀符号。我目前使用的Python版本是2.7.6。我收到的错误是索引错误:从空列表弹出。它指向这一行return self.items.pop()。在文本文件中仅使用一行文本时,输出是正确的。然而,每当我在测试文件中放置多行算术表达式时,我就会收到这个错误,这个错误似乎没有任何意义。 下面是我的文本文件中包含的一些示例输入。4.3 5 7.5 * + 4 5 + * 3 4/2.3*-3-我使用的命令是cat test

我在使用运行多行算术表达式的测试文件时收到一个索引错误:从空列表弹出。应用后缀符号。我目前使用的Python版本是2.7.6。我收到的错误是索引错误:从空列表弹出。它指向这一行return self.items.pop()。在文本文件中仅使用一行文本时,输出是正确的。然而,每当我在测试文件中放置多行算术表达式时,我就会收到这个错误,这个错误似乎没有任何意义。 下面是我的文本文件中包含的一些示例输入。4.3 5 7.5 * + 4 5 + * 3 4/2.3*-3-我使用的命令是cat test.txt | python something.py

我正在运行的命令是cat test.txt | python something.py

#!/usr/bin/python

import sys
import fileinput

class Stack:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items)-1]

    def size(self):
        return len(self.items)

请提供一段可执行代码来重现错误。使用StringIO或发布输入文件的简短版本。@barrios以下是我的文本文件中包含的一些示例输入。4.3 5 7.5*+4 5+*3 4/2.3*-3-我使用的命令是cat test.txt | python something.py您发布的代码将只打印单个表达式的结果,并且它在我的机器上使用您提供的数据运行良好,即使该表达式被拆分为多行。如果有多个表达式,或者没有足够的运算符将堆栈缩减为单个项,则会打印
-E
。如果堆栈上当前的数字数量有太多的运算符,则将从空列表中获得
索引器:pop。顺便说一句,您有一个小的输入错误:最后一个
elif
语句应该是
elif line==“**”:
。FWIW,有一种更简洁的方法可以做到这一点,它不需要一个巨大的
if…elif
套件:你可以使用一个由操作符字符串索引的函数字典。你为什么要编辑掉大部分代码?