2014-10-01 1 views
-2

먼저 주어진 함수는 "계산"함수가이를 해결하고 값을 반환하도록 지정되었습니다. 주어진 스팅이 유효한 방정식이 아니면 "None"을 반환합니다.int()가 10 진수 인 '+'에 대한 파이썬의 무효 리터럴

def compute(side): 
    val=int(side[0]) 
    lastop=0 
    for i in range(1,len(side)): 
     if side[i].isdigit(): 
      if lastop=='+': 
       val+=int(side[i]) 
      elif lastop=='-': 
       val-=int(side[i]) 
      elif lastop=='x': 
       val*=int(side[i]) 
      elif lastop=='/': 
       val/=int(side[i]) 
     else: 
      lastop=side[i] 
    return val 

이 시점에서 값이 반환됩니다. 그러나 함수가 ("22-11x4")에 대해 실행되면 44가 아니라 0이됩니다. 정수로 변환했는데 왜 여전히 저에게 잘못된 값을줍니다.

def evaluate(): 
    val=int(side[0]) 
    lastop=0 
    for i in range(1,len(side)): 
     if side[i].true(): 
      print('Congrats') 
     elif side[i].false(): 
      print('Try again') 

그리고이 평가 기능에 도달 할 때, 그것은 "기본 10 INT에 대한 잘못된 문자() : '+'"의 오류를주고 내가 어떻게이 무엇을 의미하는지 너무 확실하지 오전 풀다.

def solve(): 
    pass 

이 기능을 "해결"나는 내가 전에 기능에 문제를 해결 한 후 나중에 가져 가고 있었다.

def main(): 
    print("22-11x4 =", compute("22-11x4"),"(expect 44)") 
    print("+11x4 =", compute("+11x4"),"(expect None)") 
    print("22-11x4 ?= 7x5+9", evaluate("22-11x4=7x5+9"),"(expect True)") 
    print("solving 288/24x6=18x13x8 :", solve("288/24x6=18x13x8")) 

main() 
+0

저는 파이썬 애프터 서비스에 처음이에요 ... – Eric

답변

1

당신이 쓴 compute 기능은 숫자로 작동 않습니다, 또한 당신이 하나를 수행하는 것을 잊었다, for 후 마지막 작업이 완료되었습니다

2 - 1 - 1 x 4 = 0 

이 당신이 함수에서이 수익을 가지고 왜

올바른 기능은 다음과 같습니다.

def compute(side): 
    val = 0 
    buf = 0 
    lastop = '+' 
    for i in range(0, len(side)): 
     if side[i].isdigit(): 
      buf = buf * 10 + int(side[i]) 
     else: 
      val = op(val, buf, lastop) 
      lastop = side[i] 
      buf = 0 
    val = op(val, buf, lastop) 
    return val 


def op(val, buf, lastop): 
    if lastop == '+': 
     val += buf 
    elif lastop == '-': 
     val -= buf 
    elif lastop == 'x': 
     val *= buf 
    elif lastop == '/': 
     val /= buf 
    return val 

또한 테스트 문자열에 :

print("+11x4 =", compute("+11x4"),"(expect None)") 

왜 예상하지 않습니까? 그것은 44이어야합니까?

추신. 이 기능은 아직 개선 될 수 있지만 그럴 시간이 없었습니다. 어쨌든 그것은 작동합니다.

+0

고맙습니다. 계산 기능을 위해 잘 작동합니다. 하지만 평가를 위해이 오류가 발생합니다. "evaluate()은 위치 인수가 0이지만 1이 주어집니다." – Eric

+0

이것은이 질문과 관련이없는 다른 종류의 오류입니다. 클래스 내부에서 함수를 정의했다고 생각하십니까? 이런 식으로 모든 함수는 하나의 매개 변수를 가져야합니다. 클래스 함수 정의에 대한 python 설명서를 확인하십시오. – Kostanos

관련 문제