0
 use=input('what do you wanna do \n1.press w to create a new file\n2.press r to read a       file:\n')

 if use=='r':
    read()
 elif use=='w':
    write()
 else :
    print('OOPS! you enter a wrong input\n')
    user() 

IDLEを使用してこのコードを実行すると正しく実行されますが、cx_freezeを使用してこのPythonファイルのexeを作成すると、if条件とelif条件がそれぞれ「r」と「w」で機能しません。入力については、常にelseステートメントに移動します。

私はpython3.2とcx_freeze3.2を使用しています

4

1 に答える 1

2

簡単なテストのために、私はこれを行いました:

use = input("test input here: ")

for i in use:
    print(ord(i))

結果は、「hello」と入力すると、helloのASCII文字コードに「13」を加えたものになります。これは\r、文字列に追加されている戻り文字です。これはLinuxでは発生せず、Windowsでは改行が\r\n単なるではなくという事実の結果です\n

回避策は、次のようなことを行うことです。

use = input("test input: ").strip("\r")

strip()文字列の末尾と先頭から文字を削除する文字列オブジェクトメソッドです。

ノート:

  1. 上記の例での使用はord()、おそらくベストプラクティスではありません。Unicodeを参照してください。
  2. GUIを作成してcx_freezeを使用する場合は、使用しないでくださいprint()。Windowsinput()では、GUIアプリの標準の入出力ハンドルはまったく存在しません。それはcx_freeze+GUIコードでしばらく私をつまずかせました。そこに着いたときのメモ。
于 2012-01-20T00:05:20.373 に答える