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

标签 python linux sockets networking

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

例如,服务器说:

MATH 843 + 542 #which is a 13 element list

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

最佳答案

免责声明

这是一个懒惰的解决方案,使用 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:\\')",这将删除您的计算机。所以再说一次,不要这样做

关于python - 对属于列表的 2 到 3 位数字的算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42173838/

相关文章:

mysql - 进入流程 20/20

c# - c#中的UDP抓包

Java Socket 占用 100% CPU

python - 如何在 Python (plotly.express, px) 中使用 Plotly Express 仅显示图例的一个子集?

python - 如何使 'import x' 返回 types.ModuleType 的子类?

c - POSIX 信号量父信号量值不受影响

linux - 处理通过 ftp 传输到托管服务器中的一组目录中的文本文件

python - 如何在 Flask-SocketIO 中向测试客户端推送通知?

python - 将输入分解为列出的频率

python - scikit拟合数据错误