2013-09-07 2 views
1

초보자는 프로그래밍에서 이런 식으로 뭔가를 필요로하지만 '0x'로 시작하는 문자열을 입력 한 후에도 while 조건을 멈추지 않고 계속 함수를 호출합니다. 나는 'i'값을 늘리는 대신 'break' 작동하지 않았다. 왜 그걸 알아? hx그것으로"0x", 아니 그 경우 시작 동일한 경우 if hx =='0x'while 루프를 중지하는 방법은 무엇입니까?

i = 1 
while i < 2: 
    call_fun1() 
    if hx =='0x': 
     i+=1 
+0

'hx '란 무엇입니까? '0x' 문자열과 결코 같지 않으면 루프가 끝나지 않을 것입니다. –

답변

1

위의 코드는 무한 루프으로 실행됩니다. i의 값을 변경하는 코드 섹션, 즉

i+=1 

을 실행되지 않을 때 발생할 것이다. if 조건이

if hx =='0x': 

항상 false 것으로 밝혀졌습니다 때 발생합니다.

if hx =='0x': 

항상 false로 평가되는 이유

그래서 확인한다. 이렇게하면 문제가 해결됩니다.

+0

if 조건을'if hx.startswith ('0x')'로 다시 작성하십시오. –

+1

또한'hx'가 어떻게 값을 할당 받았는지 보여주지 않았습니다. 'hx == '0x':'는'hx' 인 표현식의 변수 부분 때문에'hx'가 while 루프 안의 어딘가에서 업데이트되는지 확인해야합니다. –

0

, 당신은 확인된다. '하위 문자열'을 찾아야합니다. 이 질문을 확인하십시오 : Examples for string find in Python

이 때문에 i은 절대로 증가하지 않으므로 루프가 무기한 계속됩니다. 그동안 조건

while i < 2: 

항상 true 것으로 밝혀졌습니다 경우에만

관련 문제