0

如果我有一个字符串“2+3”,有没有办法将它转换为整数,所以它输出为 5?

我试过这个:

string = 2+3
answer = int(string)

但我收到一个错误:

ValueError: invalid literal for int() with base 10: '2+3'

我正在尝试采用一个完全带括号的方程式并使用堆栈来回答它。

前任。方程 = ((2+3) - (4*1))

我尝试将方程作为输入,但 python 只是自己解决它。所以为了避免这个问题,我把方程作为 raw_input。

4

2 回答 2

1

有一种方法,eval函数..

>>> x = raw_input()
2 + 6
>>> x
'2 + 6'
>>> eval(x)
8

但一定要验证输入只有数字和符号。

>>> def verify(x):
    for i in x:
        if i not in '1234567890.+-/*%( )':
            return False
    return True

>>> x = raw_input()
2 + 6
>>> x
'2 + 6'
>>> if verify(x):
    print eval(x)
8

ast.literal_eval不起作用:

>>> ast.literal_eval('2+3')

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    ast.literal_eval('2+3')
  File "C:\Python2.7 For Chintoo\lib\ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "C:\Python2.7 For Chintoo\lib\ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string
于 2013-05-04T18:18:01.070 回答
0

使用eval(并记住清理您的输入。如果您阅读文档,将获得更多信息):

>>> eval('2+3')
5

它甚至支持变量:

>>> x = 1
>>> eval('x+1')
2
于 2013-05-04T18:16:11.930 回答