我的程序被卡住了,但它告訴你在選定的數字範圍內想一個數字,我不確定如何解決這個問題。程序卡在反向蟒猜謎遊戲
我不完全確定我在做什麼,但程序的開始正常工作。
from random import randrange
import time
def guessNumber(min_no, max_no):
try:
return randrange(min_no, max_no)
except ValueError:
return min_no
left = 0
right = len(L)-1
while left<=right:
m = (left+right)//2
if x == L[m]:
return m
elif x < L[m]:
right = m-1
else: # L[m] < x
left = m+1
def userNoInput(msg):
while 1:
try:
return int(input(msg))
except:
print("Numbers Only !")
sys.exit(0)
print("Enter two numbers, low then high.")
min_no = userNoInput("low = ")
max_no = userNoInput("high = ")
print ("Think of a number in the range %d and %d."%(min_no, max_no))
max_no += 1
while True:
guess = guessNumber(min_no, max_no)
count = 0
L = []
for i in range(low, high+1):
L.append(i)
while True:
print("Is your number Less than, Greater than, or Equal to %d ?") % (L[(int(len(L)/2))])
guess = guessNumber(low, high)
guess = input("Type 'L', 'G' or 'E': ")
guess = guess.upper()
if guess == 'E':
break
elif guess == 'L': guess < number
elif guess == 'G': guess > number
else:
print (guess)
print ("Your number is" + guess + "." + "I Found it in" + number + "guesses.")
期望的輸出:
Enter two numbers, low then high.
low = 2
high = 18
Think of a number in the range 2 to 18.
Is your number Less than, Greater than, or Equal to 10?
Type 'L', 'G' or 'E': g
Is your number Less than, Greater than, or Equal to 14?
Type 'L', 'G' or 'E': L
Is your number Less than, Greater than, or Equal to 12?
Type 'L', 'G' or 'E': L
Your number is 11. I found it in 3 guesses.
你的'while True:guess = guessNumber(min_no,max_no)'在任何情況下都不會中斷。難怪這是一個無限循環 – kuro
爲什麼在_guessNumber_中的return語句之後有代碼? – CIsForCookies
而真正是造成問題的那個 – Eliethesaiyan