Python 3.x 搜索数字列表的策略
假设我想到一个介于1-100之间的秘密号码 你被要求猜一个数字,我会回答“猜高”或“猜低”或“正确”。游戏将继续,直到你猜对为止 我感兴趣的是创建算法,以系统的方式搜索这个秘密号码 比如说,, 暴力---猜1,2,3,4。。。直到我答对为止 我写这篇文章的原因是为了说明另一种技巧。我对使用树结构进行猜测感兴趣。例如,我的第一个猜测是50。我的第二个猜测是25或75。如果我在上一轮猜到25,我的第三次猜测是13或37;如果我在上一轮猜到75,我的第三次猜测是63或87。它基本上是将数字线切割成更小的部分 此函数选择要进行的下一次猜测 此函数检查猜测并提供线索。Python 3.x 搜索数字列表的策略,python-3.x,list,iteration,Python 3.x,List,Iteration,假设我想到一个介于1-100之间的秘密号码 你被要求猜一个数字,我会回答“猜高”或“猜低”或“正确”。游戏将继续,直到你猜对为止 我感兴趣的是创建算法,以系统的方式搜索这个秘密号码 比如说,, 暴力---猜1,2,3,4。。。直到我答对为止 我写这篇文章的原因是为了说明另一种技巧。我对使用树结构进行猜测感兴趣。例如,我的第一个猜测是50。我的第二个猜测是25或75。如果我在上一轮猜到25,我的第三次猜测是13或37;如果我在上一轮猜到75,我的第三次猜测是63或87。它基本上是将数字线切割成更小
def playdivideconverge():
猜测列表=[]
gameOver=False
反馈=“猜测更低”
猜测=100
楼层=1
ceil=100
虽然没有结束:
猜测,地板,天花板=猜测除以(猜测,反馈,地板,天花板)
追加(猜测)
#提供线索
如果guess>secretNumber:
打印(“低于”+str(猜测)+”--猜测次数=“+str(len(猜测列表)))
反馈=“猜测更低”
elif guess
它不能正常工作,我不知道如何修复这个错误。有人能帮忙吗?我还对快速找到秘密号码的其他策略感兴趣
谢谢我还不知道你的代码出了什么问题。但从这个问题来看,我想这就是你想要的
# This is a guess the number game.
import random
guessesTaken = 0
number = random.randint(1, 101)
print('I am thinking of a number between 1 and 100.')
while guessesTaken < 6:
print('Take a guess.')
guess = input()
guess = int(guess)
guessesTaken = guessesTaken + 1
if guess < number:
print('Your guess is too low.')
if guess > number:
print('Your guess is too high.')
if guess == number:
break
if guess == number:
guessesTaken = str(guessesTaken)
print('Good job! You guessed my number in ' + guessesTaken + ' guesses!')
if guess != number:
number = str(number)
print('Nope. The number I was thinking of was ' + number)
这是一个猜数字游戏。
随机输入
猜测值=0
number=random.randint(1101)
打印('我想到的是一个介于1和100之间的数字')
而GuessTestaken<6:
打印('猜一猜')
猜测=输入()
猜测=int(猜测)
guessesTaken=guessesTaken+1
如果猜测<数字:
打印('您的猜测太低')
如果猜测>数字:
打印('您的猜测太高了')
如果guess==数字:
打破
如果guess==数字:
guessesTaken=str(guessesTaken)
print('干得好!你在'+guestastaken+'guestes!'中猜到了我的号码!')
猜猜看!=编号:
编号=str(编号)
打印('不,我想的数字是'+number)
如果您的代码不起作用,请解释它是如何不起作用的。这将为每个人节省一些时间。我发现的主要问题是,此代码将多次复制猜测。我希望修正算法,使其更有效,避免重复猜测。是的,我在玩这个游戏,但我试图让计算机使用特定的策略来对抗自己。我试图模拟的策略是使用一个将射程减半的方法。那么你想让电脑自己玩吗?我是说选一个数字,然后再猜一猜?
def playDivideConquer():
guessList = []
gameOver = False
feedback = "guess lower"
guess = 100
floor = 1
ceil = 100
while not gameOver:
guess, floor, ceil = guessByDividing(guess, feedback, floor, ceil)
guessList.append(guess)
# Provide Clues
if guess > secretNumber:
print("Lower than " + str(guess) + "--- Number of guesses = " + str(len(guessList)))
feedback = "guess lower"
elif guess < secretNumber:
print("Higher than " + str(guess) + "--- Number of guesses = " + str(len(guessList)))
feedback = "guess higher"
else:
print("CORRECT --- The secret number is " + str(secretNumber))
gameOver = True
print(guessList)
# This is a guess the number game.
import random
guessesTaken = 0
number = random.randint(1, 101)
print('I am thinking of a number between 1 and 100.')
while guessesTaken < 6:
print('Take a guess.')
guess = input()
guess = int(guess)
guessesTaken = guessesTaken + 1
if guess < number:
print('Your guess is too low.')
if guess > number:
print('Your guess is too high.')
if guess == number:
break
if guess == number:
guessesTaken = str(guessesTaken)
print('Good job! You guessed my number in ' + guessesTaken + ' guesses!')
if guess != number:
number = str(number)
print('Nope. The number I was thinking of was ' + number)