如何使用 python 在循环中进行二元选择

how do I do a binary selection in a loop with python

请注意,我是初学者,所以答案可能很简单。

所以我正在尝试制作一个数字猜谜游戏,您可以在其中想到 1 到 100 之间的数字,然后计算机会询问您它的 x 数,您说它太高或太低

我遇到的问题是在你告诉它太高或太低之后它只是一遍又一遍地猜测 50 我已经用谷歌搜索了大约 2 个小时,但我不明白为什么要这样做

   hi = 100
    low = 1
    mid = (hi+low)// 2
    print ("Ok think of a number between 1 and 100.")
    print ("I guess")
    print (mid)
    print ("1.) Too High")
    print ("2.) Too Low")
    g2 = input ("3.) Correct")
    g2 = int(g2)
    hi = int(100)
    low = int(1)
    mid = (hi+low)// 2
while g2 != 3:
    
    if g2 == 1:
        (hi) = (mid) - 1
        print ("I guess")
        print (mid)
        print ("1.) Too High")
        print ("2.) Too Low")
        g2 = input ("3.) Correct")
        g2 = int(g2)
    elif g2 == 2:
        (low) = (mid) + 1
        print ("I guess")
        print (mid)
        print ("1.) Too High")
        print ("2.) Too Low")
        g2 = input ("3.) Correct")
        g2 = int(g2) 

您没有在 if 语句中更改 mid 的值。 您正在更改 highlow 的值,但您没有从中计算新的 mid,因此它始终保持 50。 您只需在 if 语句中计算新的 highlow 后添加 mid = (low + hi) // 2