2014-09-28 181 views
0

我试图一次删除一个字符,直到在这种情况下字符串(方程)中的等号。Python解决方案

def solutions(expression): 
     positionOfEqualSign = expression.find("=") 
     for i in range(0, len(expression)): 

      for exp in range(i, positionOfEqualSign): 
       if expression[i].isdigit(): 
        print(expression[:i] + expression[i+1:]) 

例如,如果我运行它solutions('1+2=2+1')我应该得到只有2种可能的解决方案:

+2=2+1 
1+=2+1 

,但我得到:

+1=2+1 
+1=2+1 
+1=2+1 
1+=2+1 

为什么输出4个不同的可能解决方案,其中3个是相同的?我究竟做错了什么? P.S.忽略表达式的第二部分。

+2

它是如何成为'+ 2 = 2 + 1'如果要删除一次最多一个字符,直到一个字符串中的等号? – 2014-09-28 21:53:55

+1

你有两个'for'循环,其中一个有错误的终点,另一个你忽略。也许你应该更仔细地检查代码? – jonrsharpe 2014-09-28 21:54:18

+0

@PadraicCunningham我忘了提,我删除,只整数字符串中,没有操作数 – user3408174 2014-09-28 22:04:44

回答

2

该做的伎俩:

def solutions(s): 
    for i,c in enumerate(s): 
     if c=='=': 
      break 
     elif c.isdigit() : 
      print s[:i]+s[i+1:] 

,但我不知道它是什么好在更普遍的意义。

+1

或者你可以使用列表理解: EXPR = '1 + 2 = 2 + 1' 打印[expr的[ :i] + expr [i + 1:] for i,c in enumerate(expr.split('=')[0])if c.isdigit()] – Moose 2014-09-28 21:59:29

0

好吧,我改了一下:

def solve(expression): 
    positionOfEqualSign = expression.find("=") 
    for i in range(0, len(expression)): 

     if expression[i] == '=': 
      break 
     elif expression[i].isdigit(): 
      print(expression[:i] + expression[i+1:])