2024-03-29 09:24:22 发布
网友
我有一个数学求解器python程序,但它不能读“×”号,所以它不能解方程。有没有办法把“×”转换成“*”?在
Python shell:
>>> 3 × 5 `SyntaxError: invalid character in identifier >>> 3 * 5 15 >>>
screenshot
更新: 我也试过了,但没用。在
让我们逐行检查你的代码。在
if (parser.getPayload().lower()[:6]=="solve:"):
好吧,我想,我不知道你的协议,但这样说是有道理的。在
不需要转换为小写。如果是的话,缓存可能会有用。我还想知道您是否需要检查,或者您是否可以无条件地进行替换,因为这样可以使代码更容易,并且不会造成太大的性能问题。它甚至可能有助于提高性能,因为您可以避免对第一个×进行两次扫描。在
×
str.replace("×","*")
^{}是类str的一个方法,而不是某个名为str的模块中的函数。您需要在有效负载上调用replace方法。因此,要么使用parser.setPayload(parser.getPayload().replace("×","*"))之类的方法,要么将有效负载存储在一个可以修改的局部变量中。在
str
replace
parser.setPayload(parser.getPayload().replace("×","*"))
parser.sendGroupMessage(parser.getTargetID(), str(ast.literal_eval(parser.getPayload()[7:])))
您确定只在输入中有×的情况下执行此操作吗?无论如何,read the docs for ^{}:它不会计算运算符。你不需要这个。如果需要计算运算符,可以调用eval,但如果需要,则必须先对输入进行清理,以确保它不会做任何坏事。在
eval
我会这样做:
sanitizeRegexp = re.compile(r"\A[0-9+\-*/ ]*\Z") # only allow these payload = parser.getPayload() if payload.lower()[:6] == "solve:": payload = payload[7:] # strip command payload = payload.replace("×", "*") if sanitizeRegexp.match(payload): result = str(eval(payload)) else: result = "Invalid input: " + payload parser.sendGroupMessage(parser.getTargetID(), result)
让我们逐行检查你的代码。在
好吧,我想,我不知道你的协议,但这样说是有道理的。在
^{pr2}$不需要转换为小写。如果是的话,缓存可能会有用。我还想知道您是否需要检查,或者您是否可以无条件地进行替换,因为这样可以使代码更容易,并且不会造成太大的性能问题。它甚至可能有助于提高性能,因为您可以避免对第一个
×
进行两次扫描。在^{} 是类
str
的一个方法,而不是某个名为str
的模块中的函数。您需要在有效负载上调用replace
方法。因此,要么使用parser.setPayload(parser.getPayload().replace("×","*"))
之类的方法,要么将有效负载存储在一个可以修改的局部变量中。在您确定只在输入中有} :它不会计算运算符。你不需要这个。如果需要计算运算符,可以调用
×
的情况下执行此操作吗?无论如何,read the docs for ^{eval
,但如果需要,则必须先对输入进行清理,以确保它不会做任何坏事。在我会这样做:
相关问题 更多 >
编程相关推荐