当前位置: 首页 > 面试题库 >

字符串中的数学运算

爱炯
2023-03-14
问题内容

假设为了简单起见raw_input(),我有一个标准的Python字符串(例如从那里获得的字符串)"2 + 2"

我想将此字符串转换为Python中的标准数学运算,以便"2 + 2"返回4

有没有简单的方法可以做到这一点,还是我必须在空格上拆分并手动解析每个数字/符号,然后根据找到的内容进行数学运算?

我需要正则表达式吗?


问题答案:

警告:这种方法不是安全的方法,但是非常易于使用。 明智地使用它。

使用eval函数。

print eval('2 + 4')

输出:

6

您甚至可以使用变量或常规python代码。

a = 5
print eval('a + 4')

输出:

9

您还可以获取返回值:

d = eval('4 + 5')
print d

输出:

9

或调用函数:

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

a = 20
b = 10    
print eval('add(a, b)')
print eval('subtract(a, b)')

输出:

30
10

万一您想编写一个解析器,也许您可​​以构建一个python代码生成器,如果更简单的话,可以使用eval来运行代码。使用eval可以执行任何Python评估。

为什么评估不安全?

因为您可以在评估中直接输入任何内容,例如,如果输入参数为:

os.system(‘rm -rf /’)

它将删除系统上的所有文件(至少在Linux / Unix上)。因此,仅当您信任输入时才使用eval。



 类似资料:
  • 问题内容: 这将返回以下错误: 我知道可以解决此问题,但是难道没有更好,更重要的是更安全的方法来评估存储在字符串中的数学表达式吗? 问题答案: 可用于解析数学表达式。特别是, 显示了如何解析基本算术表达式。下面,我将fourFn重新包装为一个数字解析器类,以便于重用。

  • 本文向大家介绍Python3.2中的字符串函数学习总结,包括了Python3.2中的字符串函数学习总结的使用技巧和注意事项,需要的朋友参考一下 Sequence Types sequence类型有六种:strings, byte sequences (bytes objects), byte arrays(bytearray objects), list, tuple, range objects

  • 问题内容: 我对String串联感到困惑。 输出为: 50abc20 50abc1010 我想知道为什么在两种情况下都将 20 + 30 加在一起,但是 10 + 10 需要加上括号(s1)而不是串联到String(s2)。请在此处说明String运算符的工作方式。 问题答案: 加法保持关联。以第一种情况 在第二种情况下:

  • 本文向大家介绍Python入门学习之字符串与比较运算符,包括了Python入门学习之字符串与比较运算符的使用技巧和注意事项,需要的朋友参考一下 Python字符串 字符串或串(String)是由数字、字母、下划线组成的一串字符。 一般记为 : 它是编程语言中表示文本的数据类型。 python的字串列表有2种取值顺序: 从左到右索引默认0开始的,最大范围是字符串长度少1 从右到左索引默认-1开始的,

  • 主要内容:RxJava 数学运算符 介绍,RxJava 数学运算符 示例RxJava 数学运算符 介绍 以下是 Observable 的数学运算符。 运算符 描述 Average 评估所有项目的平均值并发出结果。 Concat 不交错地从多个 Observable 发出所有项目。 Count 计算所有项目并发出结果。 Max 评估所有项目的最大值项目并发出结果。 Min 评估所有项目的最小值项目并发出结果。 Reduce 对每个项目应用一个函数并返回结果。 Sum 评

  • 目标 了解实例化 String 对象和设置其值的多种方法 了解字符串串联和方法链 熟悉 Java 语言的算术运算符 字符串 目前为止,您已经遇到过多种类型的 String。在 Java 语言中,字符串是 String 类型的一级对象,包含可帮助您处理它们的方法。 在 C 语言中,处理字符串需要大量精力,因为它们是您必须操作的 8 位字符组成的以 null 结尾的数组。(在字符串方面,与 C 语言最