2017-07-22 8 views
-3

私は現在ord()とchr()を使用することを学んでいますが、次のコードでは問題があります。終了文字列の末尾に来るとwhileループ

b = '1101' 
i = 0 
while b != ' ' : 
    i = i*2 + (ord(b[0]) + ord('0')) 
    b = b[1:] 



Traceback (most recent call last): 
    File "<pyshell#86>", line 2, in <module> 
    i = i*2 + (ord(b[0]) + ord('0')) 
IndexError: string index out of range 

なぜ文字列が範囲の外に出ると、私は期待どおりの代わりにループを終了するのエラーをスローしますか?

+3

bはスペースにならない。スペースはどこから来るのだろうか?ちなみにいいタイトル。 – harold

+1

あなたのエラーはwhileループと縮んでいる文字列に基づいていますので、 'chr'と' ord'部分を答えから取り除いて、より記述的なタイトルを付けると、同じエラーを持つ将来の人々がこれを見つけることができます回答。 –

+0

あなたの投稿を編集し、a)あなたが質問している、または質問している問題を説明するタイトルを作ってください。それで、将来の読者が検索結果のリストにそれを見るのに役立ちます。 *あなたは難しさを持っている以上の問題についてより具体的に*。 **あなたが投稿したコードで何が**特定の困難**を抱えていますか? See [ask]。 –

答えて

1

条件が真にならない' 'はNothingを意味するものではなく、空のスペースを意味します。元の文字列に最後にスペースが含まれていない限り、それは決して真実ではありません。

' 'の代わりに''にするとうまくいくはずです。

また、値がの場合は値が保持され、Noneの場合はFalseとなり、while b:と同じものを書くことができます。これは、bが値を保持している限り真ですが、空になるとすぐにループが停止します。

+0

しかし、それを書いている慣用的な方法は 'while b:' –

+0

かもしれません。もしうまくいくと思っていたのですが、コンパイラに入力してhahahaかどうかを確認していました –

+0

私にそれを確認していただきありがとうございます答えへ –

関連する問題