在python中如何将乘号转换成星号?

2024-03-29 09:24:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数学求解器python程序,但它不能读“×”号,所以它不能解方程。有没有办法把“×”转换成“*”?在

Python shell:

>>> 3 × 5
`SyntaxError: invalid character in identifier
>>> 3 * 5
15
>>> 

screenshot

更新: 我也试过了,但没用。在

^{pr2}$

Tags: in程序数学shellidentifierscreenshotcharacter办法
1条回答
网友
1楼 · 发布于 2024-03-29 09:24:22

让我们逐行检查你的代码。在

if (parser.getPayload().lower()[:6]=="solve:"):

好吧,我想,我不知道你的协议,但这样说是有道理的。在

^{pr2}$

不需要转换为小写。如果是的话,缓存可能会有用。我还想知道您是否需要检查,或者您是否可以无条件地进行替换,因为这样可以使代码更容易,并且不会造成太大的性能问题。它甚至可能有助于提高性能,因为您可以避免对第一个×进行两次扫描。在

                        str.replace("×","*")

^{}是类str的一个方法,而不是某个名为str的模块中的函数。您需要在有效负载上调用replace方法。因此,要么使用parser.setPayload(parser.getPayload().replace("×","*"))之类的方法,要么将有效负载存储在一个可以修改的局部变量中。在

                        parser.sendGroupMessage(parser.getTargetID(), str(ast.literal_eval(parser.getPayload()[7:])))

您确定只在输入中有×的情况下执行此操作吗?无论如何,read the docs for ^{}:它不会计算运算符。你不需要这个。如果需要计算运算符,可以调用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)

相关问题 更多 >