3

再会!

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

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

现在,这段代码的作用应该很明显了,但是当我在 Windows 7 上的 IDLE 中运行它时,它工作得非常好,或者当我双击桌面上的脚本图标并打开它时,不管天气与否我输入“y”它会关闭,当然这是一个简单的解决方法:

if yn.lower() == "n":
   #...

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

4

2 回答 2

5

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

Windows 上的 Python 3.2.0 中有一个错误,从 stdin 读取有时会\r在字符串末尾留下 a ,这可以解释您所看到的内容。用于yn.strip().lower()解决错误或更新到当前版本 (3.2.3)。

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

于 2012-05-27T18:42:37.000 回答
0

它适用于 OSX(Python 3.2.2):

yn = ""
while True:
    yn = input( "---> " )
    if yn.lower() != "y":
      break


pu@pumbair:~$ python3.2 test.py 
---> y
---> y
---> Y
---> Y
---> 
pu@pumbair:~$ python3.2 test.py 
---> n
pu@pumbair:~$ 

什么可执行文件与 .py 扩展名相关联?

于 2012-05-27T18:43:45.190 回答