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

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 に答える