这是一个大学练习,客户端-服务器设置,学生设置客户端,服务器抛出随机数学问题,让客户端解决和呈现。
例如,服务器说:
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/