Python循环不更新变量?

2024-10-03 19:26:56 发布

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

我正在尝试创建一个循环,将函数(比如f(x)=(2x+3)(2x-3))转换成更好的编辑格式,只需在数字之前添加一个“+”(它将变成f(x)=(+2x+3)(+2x-3))。问题是在循环中,在字符串的中间插入一个新的char后,字符串不会更新,所以当循环继续并且我试图访问函数字符串的某个索引时,字符是不正确的。在

def rewriteFunction(function):
    for i, c in enumerate(function):
        newFunction += c
        if(str(c).isdigit()):
            if not(i == 0):
                if not(Sign.isSign(function[i - 1])):
                    function = function[:i] + "+" + function[i:]

如果可能的话,你能给我发一个准确的(正确的)代码,不要修改太多,当然如果这是正确的方法。提前谢谢!!在


Tags: 函数字符串in编辑forifdef格式
2条回答
  • 在一行中,您将更新的数据存储在变量newFunction中,而在另一行中,您将更新存储回function。为了保持一致性,我们永远不要更改function,并将所有更新应用到newFunction

  • 不能初始化newFunction

  • 从不显式返回rewriteFunction()中的任何内容。

试试这个:

def rewriteFunction(function):
    newFunction = ''
    for i, c in enumerate(function):
        if(str(c).isdigit()):
            if not(i == 0):
                if not(function[i - 1] in '+-'):
                    newFunction += '+'
        newFunction += c
    return newFunction

assert rewriteFunction('f(x)=(2x+3)(2x-3)') == 'f(x)=(+2x+3)(+2x-3)'

如果您的解决方案不一定要使用循环,您可以尝试regular expressions来简化事情:

>>> import re
>>> s = 'f(x)=(2x+3)(2x-3))'
>>> re.sub(r'\b(?<![+-])(\d+)', r'+\1', s)
'f(x)=(+2x+3)(+2x-3))'

请随时询问有关解决方案的任何问题。在

相关问题 更多 >