2013-07-02 6 views
2

나는 다음과 같은 while 루프를 가지고 :파이썬 : 조건부 또는

가 작동하지 않습니다 말할 필요도없이
accuracy = 0.0001 # Or whatever 
loop_limit = True 
limit = 100 
# Main loop: 
while abs(P - P_old).max() > accuracy or (if loop_limit: count > limit): 

. 내가 원하는 것은 loop_limit = True 일 때만 검사되는 or 문입니다.

나는 루프 경우에만 loop_limit = True의 모든 패스에 카운트 변수를 재설정 while 루프 내로 if 문을 넣을 수 있지만, 그것은 while 루프의 모든 패스를 loop_limit 확인해야 할 것입니다 그리고 난 그것을 피하려고. (이 루프는 보호기가 도움이 될 때마다 수백만 번 실행됩니다.) 나는이 일을하는 깔끔한 방법이 있다는 느낌이 들었다.

편집 : 것을

주 (P - P_old가) 나는 그것을 언급하는 것을 잊었다하고 이미 답변에서 언급 되었기 때문에 내가 지금 제거하지 않는 NumPy와 배열, 따라서 .max()입니다. max()가 어떻게해야하는 것이 무엇, 그런데

while abs(P - P_old) > accuracy or (loop_limit and count > limit): 

:

답변

4

이 시도? 그것은 컴파일도하지 않습니다 ...

+2

. 그건 그렇습니다. 건배. – MarcinKonowalczyk

+0

나는 누군가에 대해 elses 코드를 디버깅하고 있으므로 아직 생각하지 않았습니다. 나는 나를 위해 모든 권리를 컴파일합니다. Enthought Canopy와 IPython을 사용하고 있습니다. 그래서 약간의 오류가 매끄럽게 나올 수 있습니다. 나는 그걸 한번 보려고한다. – MarcinKonowalczyk

+0

나는 P가 numpy 배열이라는 것을 잊어 버렸다. – MarcinKonowalczyk