2014-09-28 180 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:])