2011-10-05 5 views
0

나는 파이썬 프로그래밍에 조금 새로운 해요,하지만 난이 코드를 할 수 있습니다 :이파이썬 오류 GET 개체 값

dimValue = 0 

........

elif event[0] == "control" and body["location"] == location and body["action"] == "on": 
    auxValue = int(body["dim"]) 
    print("AuxValue = " + str(auxValue)) 
    if auxValue > dimValue: 
     print("entrou") 
     dimControl=auxValue-dimValue 
     print("DimControl = " + str(dimControl)) 
     dimValue = auxValue 
     os.system("heyu bright A1 "+ str(dimControl)) 
    elif dimValue > auxValue: 
     print("saiu") 
     dimControl=dimValue-auxValue 
     dimValue = auxValue 
     os.system("heyu dim A1 "+ str(dimControl)) 

을 코드, int (body [ "dim"])가 5 인 경우 첫 번째 인쇄 만 표시하고 if else 문에는 입력하지 마십시오. 이 줄 "dimValue = auxValue"주석 경우, 그것을 다른 경우 입력하고 모든 것을 잘 수행하십시오. 하지만이 줄을 써야합니다. 내가 뭘 잘못하고있어?

감사합니다.

는 휴고 실바는 그것은 if 블록이나 elif 블록도 같은 소리

+0

소스의 맨 위에는 'elif'가 있습니다. 나는 당신의 문제를 설명 할 수있는 반복문이나 뭔가가 있다고 생각합니다. 예를 들어 위 코드에서'dimValue'를 변경하려고합니다. 루프가 있으면 상태를 잃어 버릴 수 있습니다. – wberry

+0

아마도 당신 말이 맞을 것입니다. 하지만 어딘가에 auxValue를 사용하여 dimValue를 변경해야합니다.이 작업을 수행 할 수있는 곳은 어디입니까? –

+0

여기에 나와있는 정보를 사용하면 변경 상태에서 작업을 분리하는 것만 권장 할 수 있습니다. 한 가지 방법으로 상태를 바꿀 수 있고, 하나는 새로운 정보로 행동 할 수 있습니다. 그런 식으로 시간 순서를 잘 제어 할 수 있습니다. – wberry

답변

0

가 입력되고있다. 이것은 아마도 auxValue가 dimValue와 같을 때 발생합니다. 어느 기준도 사실로 평가되지 않습니다. >> =로 변경하거나 동등한 경우 실행하려는 블록에 따라 <을 < =으로 변경할 수 있습니다.

+2

아니요, 그냥 'elif'대신에'else'를 사용해야합니다. –

+0

이 이벤트가 처음 호출되는 경우 auxValue는 5이고 dimValue는 0입니다. –