【发布时间】:2016-05-24 13:04:39
【问题描述】:
编辑:当我在标题中说函数时,我的意思是数学函数而不是编程函数。很抱歉造成任何混乱。
我正在尝试从随机生成的整数和运算符创建一个函数。我目前采取的方法如下:
第 1 步:将运算符和整数的随机列表生成为列表。
第 2 步:将一组规则应用于列表,因此我总是以整数、运算符、整数、运算符...等列表结束。
第 3 步:将运算应用于整数后,使用修改后的列表创建单个答案。
例如:
第 1 步结果:[1,2,+,-,2,/,3,8,*]
第 2 步结果:[1,+,2,-,2,/,3,*,8] - 请注意,我使用 operator 命令生成列表中的运算符。
第 3 步结果:输出旨在成为从左到右的读取函数,而不是应用 BODMAS,因此在这种情况下,我希望输出为 8/3(输出不必是整数)。
所以我的问题是:什么功能(以及在什么模块中)可以帮助我组合上面定义的列表。或者我应该以不同的方式组合列表以允许我使用特定功能吗?
我正在考虑首先更改生成列表的方式,以便即时进行排序,但我认为我最终会遇到同样的情况,我不知道如何组合整数和经过排序过程后的运算符。
我觉得这里有一个简单的解决方案,我正在不必要地把自己绑起来!
非常感谢任何帮助,
Dom
【问题讨论】:
-
你能试着澄清一下你想让这个函数做什么吗?你想要一个执行随机数学运算的函数吗?
-
我希望函数将预定义列表解释为从左到右读取的数学函数。整数和运算符将由程序的另一部分预定义。
-
因此,您将获得一份清单。 (1, +, 2, 3, /, 4) 是否等于 1+2 和 3/4?这就是你想要做的吗?
-
不完全,列表将根据 Int, operator, int, operator... 等进行评估 如果它不自然地属于这种格式,根据您的示例,列表值将是下降,直到它出现,即我希望看到 1+2/4,其中 3 从列表中删除。
-
所以,如果你有一个 list(1, 2, 3, /, 4) 你会希望它评估为 1/4??