2014-09-28 2 views
0

이 경우 문자열 (등식)에 등호가 올 때까지 한 번에 하나씩 문자를 삭제하려고합니다. 왜이 가능한 다른 4를 출력한다파이썬 솔루션

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

:

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

하지만 난 점점 오전 : 나는 단지이 가능한 솔루션을지고해야 solutions('1+2=2+1')로 실행하면 예를 들어

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:]) 

솔루션 3 개가 동일합니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 오후 8시 30 분 P.S. 표현의 두 번째 부분을 무시하십시오.

+2

은 어떻게 되는가'+ 2 = 2 + 1 '당신이 문자열에 등호 때까지 한 번에 최대에 문자 하나를 삭제하는 경우? –

+1

두 개의'for' 루프가 있는데, 하나는 잘못된 엔드 포인트이고 다른 하나는 무시합니다. 아마도 코드를 더 신중하게 검토해야할까요? EXPR의 = '1 + 2 = 2 + 1' 인쇄 [EXPR의 [: – jonrsharpe

+0

@PadraicCunningham은 내가하지 피연산자 – user3408174

답변

2

이 트릭을 수행합니다

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

을하지만 난 그게 더 일반적인 의미에서 좋은 무엇인지 모른다.

+1

, 문자열에, 정수만을 삭제하고 아니면 지능형리스트를 사용할 수, 언급하는 것을 잊었다 : i]에 대해 i + expr [i + 1 :], enumerate에서 expr.split ('=') [0]) c.isdigit()] – Moose

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:])