【发布时间】:2026-02-06 19:25:01
【问题描述】:
我正在尝试创建一个程序来猜测您输入的数字。我试图让计算机以尽可能少的猜测获得数字,所以我正在做类似二进制搜索的事情。当我运行代码并且它到达total = total[the_low_one:computer2_guess] 时,我不断得到一个超出范围的索引。我很困惑为什么它超出范围。 the_low_one 每次触及新低时,我是否应该在其上加或减一个以使其保持在范围内?我很感激任何帮助,因为我迷路了。提前致谢!
代码:
def second_computer():
global computer2_score
computer2_score=0
computer2_guess= -1
the_low_one=1
the_high_one=1000000
total= range(1,1000000)
while computer2_guess != pick_number:
computer2_guess=random.choice(total)
if computer2_guess>pick_number:
total=total[the_low_one:computer2_guess]
the_high_one=computer2_guess-1
else:
total=total[computer2_guess:the_high_one]
the_low_one=computer2_guess+1
computer2_score+=1
【问题讨论】:
-
您的格式需要一些工作 - 但我认为您的问题是您将
the_low_one初始化为 1 而不是 0。 -
格式化是什么意思? .
-
while语句后的缩进需要修复 -
哦,对不起,我没有意识到它没有正确缩进在线。感谢您的关注!我尝试将其更改为 0,但发生了同样的错误。
-
您有许多逻辑错误。您的切片使用来自 total[] 数组的值,而不是索引。 pick_number 是在哪里定义的?
标签: python list python-2.7 random