Python 3.5 While循环不进入If语句

时间:2016-09-11 23:25:13

标签: python python-3.x bisection

我提前道歉。我知道这个问题可能已经在堆栈交换中被问过了,我确实看到了一些相关的帖子,但是我有一些问题需要解释这些回复。

我被要求创建一个猜测程序,使用“二分搜索”来猜测你选择的数字(在你的脑海中)。

当我将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仍然无法正确运行代码,但评分程序标记我正确。真令人沮丧!

1 个答案:

答案 0 :(得分:1)

好的我在我的代码正确评分后想出来了。我在scipython IDE中使用了错误的控制台来评估我的代码D'Oh

无论如何,代码是在while循环中使用input()并使用if / elsif / else来满足条件的一个很好的例子。

请记住,在python 2中,你需要使用raw_input()而不是input(),因为方法从python 2更改为3