【发布时间】:2015-12-30 03:50:41
【问题描述】:
我的代码似乎可以在 WHILE 循环之前运行。这个想法是让计算机通过从先前猜测的最低和最高数量中选择一个中间数字来尝试猜测玩家 1('P1')输入的数字。我不知道为什么它一直在循环!
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 条件失败,程序永远什么都不做。
-
嗨..感谢您的 cmets..我已经尝试了给出的每个建议,但仍然无法停止 while 循环..它只计算了中间一次并继续无限循环该结果。
-
正如我在回答中所说,您必须正确更新 mn & mx。您的原始代码根本不会更新它们,并且它使用的更新对于二进制搜索算法无效。如果您需要更多帮助,则必须遵循指南 - 最值得注意的是,发布您的新代码。
标签: python while-loop infinite-loop