Python 3.2.2在IDLE中运行时与在桌面上运行时的行为不同

The*_*ain 3 python if-statement behavior

美好的一天!

今天我用Python 3.2.2编写了一个小脚本,这个简单的代码决定给我带来麻烦.

def main():
    yn = ""
    #...
    while True:
        #...
        yn = input( "---> " )
        if yn.lower() != "y":
            break
Run Code Online (Sandbox Code Playgroud)

现在,这个代码应该是非常明显的,但是当我在Windows 7上运行它时,它工作得非常好,或者当我双击桌面上的脚本图标并打开它时,天气与否无关紧要我输入"y"它关闭,当然这是一个简单的解决方案:

if yn.lower() == "n":
   #...
Run Code Online (Sandbox Code Playgroud)

这就是我所做的,但我想知道这可能是什么原因?

Dun*_*can 5

你确定你使用的是3.2.2而不是3.2.0吗?

在Windows上的Python 3.2.0中存在一个错误,从stdin读取有时会\r在字符串的末尾留下一个错误,这将解释您所看到的内容.使用yn.strip().lower()到bug或解决方法更新到最新版本(3.2.3).

具体问题描述为http://bugs.python.org/issue11272,但如果您使用的是3.2.2,则应该已修复.