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

时间:2012-05-27 18:27:01

标签: python if-statement behavior

美好的一天!

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

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分: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扩展名相关联?