对属于列表的2到3位数字的算术运算

时间:2017-02-11 08:24:37

标签: python linux sockets networking

这是一项大学练习,客户端 - 服务器设置,学生设置客户端和服务器会抛出随机数学问题,供客户解决和呈现。

例如,服务器说:

MATH 843 + 542 #which is a 13 element list

我的目标是创建一个代码来有效地计算所有操作的结果(+ - * /),并使其适用于2位和3位数字。 我发现这个服务器消息是一个列表,它的元素,5,6,7和11,12,13需要处理。

1 个答案:

答案 0 :(得分:1)

<强>声明

这是使用exec的懒惰解决方案,没有预防措施。以下内容允许服务器在您的计算机上运行任意代码,因此基本上不执行

如果您确定收到的行以"MATH "开头,那么最直接的解决方案是使用exec

基本上,exec将参数作为Python代码运行。例如:

>>> exec("print(1 + 2)")
3

此外,代码在当前环境中执行,因此您也可以设置和使用变量:

>>> exec("a = 1+2")
>>> print(a)
3

以下代码将允许您直接执行所需的计算,并将其结果存储在result变量中:

received = "MATH 843 + 542"
instruction = received[5:]
exec("result = {}".format(instruction))

现在只是为了好玩:正如Stefan Pochmann所指出的那样,如果有人知道你正在听什么地址和端口,他们会发给你"MATH shutil.rmtree('C:\\')",这会擦掉你的电脑。再一次,不要这样做