2016-09-17 4 views
0

나는 Bisectional Number guessing 게임을 연구 중이며 자동으로 작동시키고 싶지만 코드가 반복적으로 멈추는 것처럼 보입니다.루프가 종료되지 않는 이유는 무엇입니까?

제안 사항?

x = 75 

low = 0 
high = 100 

guessing = True 

while guessing: 

    guess = int((high + low) // 2) 

    if guess == x: 
     guessing = False 
    elif guess < x: 
     high = guess 
    else: 
     low = guess 

print("Your number is ", str(guess)) 
+2

"손으로"알고리즘을 실행하고 그 기능을 확인해야합니다. 칼 페쉬 (Kalpesh)가 말했듯이, 당신은 당신의 '엘프 ... 그 밖의'논리가 바뀌 었습니다. –

+0

나는 지금 바보가된다. 도와 주셔서 감사합니다 –

답변

0

나는 그것이 작동 생각 :

x = 75 
low = 0 
high = 100 
guessing = True 
while guessing: 
    guess = (high + low) // 2 
    print("guess:",guess) 
    if guess == x: 
     guessing = False 
    elif guess < x: 
     low = guess 
    else: 
     high = guess 
print("Your number is ", guess) 

출력 : 당신은 명시 적으로 여기 guess = int((high + low) // 2) 그리고 역을 정수 나누기를 사용하고 있기 때문에 int로 변환 할 필요가 없습니다

guess: 50 
guess: 75 
Your number is 75 

elif ..else 로직 ..

희망이 도움이 될 것입니다.

0

가능한 경우 반복 횟수를 제한하는 것이 좋습니다.

max_iter = 25 
x = 42 
low , high = 0 , 100 

for _ in range(max_iter): 
    guess = (high + low) // 2 
    if guess == x: 
     break 
    low , high = (guess , high) if x > guess else (low , guess) 

print("Your number is {}".format(guess)) 
관련 문제