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.0ではなく3.2.2を使用していますか?

Windows上のPython3.2.0には、stdinから読み取る\rと文字列の末尾にが残ることがあり、それが表示内容を説明するバグがあります。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 に答える