【问题标题】:ValueError: invalid literal for int() with base 10: '-' m[i][i] = int(d[i])ValueError: int() 以 10 为底的无效文字:'-' m[i][i] = int(d[i])
【发布时间】:2018-03-13 02:41:10
【问题描述】:

我正在研究寻找最大评估(忽略优先级)的代码,例如

2

5+ 3*2

-1 + -4 * -3

输出

16

40000000000

我有以下代码返回以下错误:

ValueError: invalid literal for int() with base 10: '-' m[i][i] = int(d[i]) File

注意:我查看了其他有类似错误的问题,但这与每个问题都不同。 我正在使用 Python 3,它的讲解工作。

def get_maximum_value(expression):
    expression="".join(expression.split())
    op = expression[1:len(expression):2]
    d = expression[0:len(expression)+1:2]
    n = len(d)
    m = [[0 for i in range(n)] for j in range(n)]
    M = [[0 for i in range(n)] for j in range(n)]
    for i in range(n):
        m[i][i] = int(d[i])
        M[i][i] = int(d[i])   
    for s in range(1,n):
        for i in range(n-s):
            j = i + s
            m[i][j], M[i][j] = MaxValue(i,j,op,m,M)
        return M[0][n-1]


num=int(input())
for i in range(num):
   expression=input()
   print (get_maximum_value(expression))

但是,它显示ValueError: invalid literal for int() with base 10: '-' m[i][i] = int(d[i])

我尝试将 int 更改为浮动,但它仍然不起作用。

【问题讨论】:

  • 例如,如果你使用这个表达式:1 - 2,那么通过使用split(),你将以['1', '-' , '2']形式的列表结束,然后遍历最后一个列表并使用int()float() 您将在应用程序结束时:int('-') 这对于 int 和 float 来说是无效的文字。
  • 我应该改变什么才能让它工作?
  • 输入仅包含整数的有效表达式。

标签: python python-3.x computer-science


【解决方案1】:

有一个类似的问题问here,我发现SethMMorton 的答案很有用,它使用一个函数将字符串类型的浮点数直接转换为 int。试试看吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-09
    • 2020-01-04
    • 2010-12-22
    • 2011-07-07
    • 2019-10-14
    相关资源
    最近更新 更多