Python 3.x 搜索数字列表的策略

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。它基本上是将数字线切割成更小

假设我想到一个介于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)