2016-11-15 7 views
0

さて、先ほどお話しましょう。私はPythonが初めてです。私はIDLEを実験していただけで、私はこの奇妙な "クラッシュ"を経験しました。私はスピードマークの中に「クラッシュ」を入れました。なぜなら、クラッシュの対象となるかどうかわからないからです。プログラムがWindowsの通常のプログラムと同じようにクラッシュするだけでなく、実行しますが、それは何もしない新しいテキストを受け入れるためです。例えば。 「print( 'a')」と入力してEnterキーを押すと、次の行に移動します(「a」は表示されません)。整数を文字列に変換する単純な関数を作ろうとしましたが、その文字列の各文字は '1'か '0'のいずれかであり、その(符号なし)整数を表す2進数を形成します。Python IDLEとPython 3.5.2 "crashing"

>>> def int_to_str(int_in): 
     str_out='' 
     bit_val=1<<int_in.bit_length() 
     while(int_in>0): 
      if(int_in>bit_val): 
       str_out+='1' 
       int_in-=bit_val 
      else: 
       str_out+='0' 
      bit_val>>=1 
     return str_out 

>>> print('a') 
print('c') 

基本的に、それは私の入力に対して完全に応答しなくなり、それは実際に私の入力を「受け入れ」ていた場合、私のことができるようにはならないにもかかわらず、「印刷( 『A』)」私は/変更を編集することができます。どうしてこれなの?何を私は間違っていたか混乱させましたか?

また、以前シェルを閉じてもう一度開いて "int_to_string"関数のコードを入れていて、それ以外の設定を変更していないことを確認しました手元にあるモジュールやその前のモジュールをインポートすることができます(問題の場合)。

EDIT:私は再インストールしてみましたが、今は他のものをうまくやることができましたが、 "str_to_int()"関数を使用しようとすると、それ以上のユーザ入力を解釈する。

+0

コードウィンドウではなくシェルにいることは確かですか?そうでない場合は、インストールが何らかの形で破損している可能性があります。 –

+0

@JohnColeman Hahahaはい、確かです。あなたが私を信じていない場合、私はスクリーンショットを提供することができます。 –

+0

問題が解決しない場合は、アイデアはありません。再インストールを検討してください。 Macを使用している場合、IDLEの背後にある基盤となるTkに関連する問題が時々あります。 –

答えて

1

あなたのwhileループは決して終了しません。論理を再配置する必要があります。

>>> def int_to_str(int_in): 
     str_out='' 
     bit_val=1<<int_in.bit_length() 
     while(int_in>0): 
      print(int_in, bit_val) 
      if(int_in>bit_val): 
       str_out+='1' 
       int_in-=bit_val 
      else: 
       str_out+='0' 
      bit_val>>=1 
     return str_out 

あなたのプログラムが起こっているように見える場合が長すぎるあなたはCtrl + Cキーでそれを止めることができます。このような - 印刷変数は、効果的なデバッグツールとなります。

+0

私はそれが些細なことだと思った。それは確かにそれだった。ありがとう! –