【发布时间】: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