【发布时间】:2017-02-15 22:56:04
【问题描述】:
我有一个即时通讯程序的聊天机器人,我正在尝试为它制作一个数学求解器,但它无法将方程的解发送到即时通讯程序,而是发送方程。
如果即时通讯程序中的某人发送“解决:2+2”,则此程序应发送“4”而不是“2+2”。
主要问题:
if (parser.getPayload().lower()[:6]=="solve:"):
parser.sendGroupMessage(parser.getTargetID(), str(parser.getPayload()[7:]))
输出:
it's sending same input again not the answer of equation
测试: 我测试了一些东西,它工作正常。如果我添加此代码,程序将发送方程的解:
if (parser.getPayload().lower()=="test"):
parser.sendGroupMessage(parser.getTargetID(), str(2 + 2 -3 + 8 * 7))
【问题讨论】:
-
尝试在 python 中使用
eval语句。eval("2+2")会给你4。 -
@PrestonHager
eval强烈反对。ast.literal_eval更好 -
是的,ast 模块看起来不错。请改用
ast.literal_eval("2+2")。不要忘记导入 ast,import ast。 -
嗯,先生们,您正在教他如何评估他从聊天中获得的随机代码? @Bharat,请注意人们会向您发送任何内容,即他们将保存解决方案而不是 2+2
-
解决了。感谢@PrestonHager、Andrew L. 和 MK。
标签: python bots irc instant-messaging payload