整数nが与えられている場合、それを2進(2進)に変換します。次に、連続した1の最大数を表す基数10の整数を見つけて、nのバイナリ表現で表示して出力します。 は、ここで私はそれがIndexErrorを取得する:文字列インデックスが範囲外にある
#!/bin/python
import sys
k=0
m=0
i=0
n = int(raw_input().strip())
x=bin(n)[2:]
while x[i] :
if x[i]==1:
m=m+1
else :
if k<m:
k=m
m=0
i+=1
print(k)
私は次のようなエラーに
Traceback (most recent call last):
File "solution.py", line 9, in <module>
while x[i] :
IndexError: string index out of range
あなたが混在の文字列をしましたおよび整数。 'bin(n)'は文字列を返します。 'x [i]'は有効なインデックスのために長さ1の文字列を返します。空でない文字列は真実であるので、 'x [i]'はすべての有効な 'i'の間、継続します。最後にリストの境界を越えて 'i'をインクリメントすると、例外が発生します。 iterablesを反復する通常の方法は 'for y in x:'です。また、 'x [i] == 1'は常に文字列とintを比較するのでfalseです。 –