我提前道歉。我知道这个问题可能已经在堆栈交换中被问过了,我确实看到了一些相关的帖子,但是我有一些问题需要解释这些回复。
我被要求创建一个猜测程序,使用“二分搜索”来猜测你选择的数字(在你的脑海中)。
当我将input()更改为raw_input()时,我有一个在Python 2解释器上运行的程序。我的程序也运行在python 3解释器(python导师)上。但是当我从scipython,pycharm或命令行运行程序时,我没有看到我期待的响应。而不是在while循环下移动if语句,程序似乎一遍又一遍地遍历while语句的顶部。我会粘贴我的代码,任何建议都会受到赞赏。
low = 0
high = 100
flag = True
print("Please think of a number between 0 and 100!")
while flag:
ans = (high + low) // 2
print("Is your secret number " + str(ans))
question = input(
"Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ")
if question == 'l':
low = ans
elif question == 'h':
high = ans
elif question == 'c':
flag = False
print("Game over. Your secret number was: " + str(ans))
else:
print('invalid response, please choose again.')
编辑: 这是控制台的输出。没有失败但是你可以看到程序没有进入if条件。我输入了对每个条件的响应,它只返回相同的猜测。我假设我没有输入if语句,因为我没有对答案进行更改,或者如果我找到了不正确的字符,我没有进入其他:print。
Is your secret number 50
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. l
Is your secret number 50
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. h
Is your secret number 50
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. c
Is your secret number 50
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly.
编辑#2:编辑#2:
我只是因为一些随机的未知原因而得到它。 scipython仍然无法正确运行代码,但评分程序标记我正确。真令人沮丧!
答案 0 :(得分:1)
好的我在我的代码正确评分后想出来了。我在scipython IDE中使用了错误的控制台来评估我的代码D'Oh
无论如何,代码是在while循环中使用input()并使用if / elsif / else来满足条件的一个很好的例子。
请记住,在python 2中,你需要使用raw_input()而不是input(),因为方法从python 2更改为3