我的代码似乎工作到WHILE循环之前的行。这个想法是让计算机通过从最低和最高数量的先前猜测中挑选一个中间数字来猜测玩家1输入的数字('P1')。我不知道为什么它保持循环!Python - 虽然循环不会停止
import random
P1 = raw_input("The number should be between 0 to 100: \n")
P1 = int(P1)
previousguess = []
count2 = 0
for c in range(2):
cg2 = random.randint(0,100)
print "Computer has guessed: %d" %cg2
if P1 != cg2:
previousguess.append(cg2) #adding the guess into "Previous Guess" list
print previousguess
mn = min(previousguess)
mx = max(previousguess)
while True:
if P1 != cg2:
cg2 = (mn+mx)/2 #guess based on middle of highest and lowest
print "Computer has guessed: %d" %cg2
previousguess.append(cg2)
count2+=1
else:
print "The Computer has guessed it in %d times" %count2
你永远不会终止循环。当计算机获得正确的猜测时,if条件失败,程序永远不会做任何事情。 – Prune
嗨..感谢您的意见..我已经尝试过给出的每个建议,但我仍然无法停止while循环..它只计算中间一次,并继续循环无限的结果。 – chwps
正如我在我的回答中所说的,您必须正确更新mn&mx。您的原始代码根本不会更新它们,并且它使用的更新对二进制搜索算法无效。如果你需要更多的帮助,你必须遵循指导方针 - 最值得注意的是,发布你的新代码。 – Prune