Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对属于列表的2到3位数字进行算术运算_Python_Linux_Sockets_Networking - Fatal编程技术网

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

Python 对属于列表的2到3位数字进行算术运算,python,linux,sockets,networking,Python,Linux,Sockets,Networking,这是一个大学练习,客户机-服务器设置,学生在其中设置一个客户机,服务器抛出随机数学问题供客户机解决和演示 例如,服务器说: MATH 843 + 542 #which is a 13 element list 我的目标是创建一个代码,以有效地计算所有运算(+-*/)的结果,并使其适用于2位和3位数字。 我发现此服务器消息是一个列表,它的元素5、6、7和11、12、13需要处理。免责声明 这是一个使用exec的惰性解决方案,没有任何预防措施。以下内容允许服务器在您的计算机上运行任意代码,因此基本

这是一个大学练习,客户机-服务器设置,学生在其中设置一个客户机,服务器抛出随机数学问题供客户机解决和演示

例如,服务器说:

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:\')”)
,这将擦除你的计算机。因此,不要这样做

工作得很顺利。非常感谢你。它使整个过程更加简单。@MayankKashyap是的,Python在很多情况下都非常简单。通常情况下,您会编写一个长而复杂的程序,有人会说“但是,您可以用五行代码完成”,或者“该库已经做得更好了”。Python的优势之一;)现在我只需要知道我的
MATH shutil.rmtree('C:\\')
请求可以发送到的地址。@StefanPochmann我通常制作的程序甚至不使用套接字,所以我倾向于不考虑这些问题。我在文章的开头添加了一个免责声明(最后是你的例子)。我非常感谢你指出这一点。希望这篇文章能阻止人们使用
exec
@Rightleg轻微的免责声明:实际上,它可能必须是类似
\uuuu import\uuuuu('shutil').rmtree('C:\')
,除非
shutil
恰好已经被导入。而且我不能100%确定
'C:\\'
是正确的格式,并且这一切都能正常工作。但我确信这个问题是真实的,这个简短的例子让人明白了这一点。通常我会在发布之前测试最简单和最小的代码,以确保其工作,但在这种情况下,我有点不喜欢:-)请阅读我的编辑。请注意,您接受的我的解决方案是一个危险的解决方案,不应使用。明白。我会记住这一点。