給定一個基數 - integer,n,將其轉換爲二進制(基數2)。然後在n的二進制表示中找到並打印表示連續1的最大數目的基數爲10的整數。 這裏是我寫的這獲取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的字符串作爲有效索引。一個非空字符串是truthy,所以'而x [i]'將繼續爲所有有效的'i'。最後,當你通過列表邊界增加'i'時,你會得到異常。迭代迭代的常用方法是:'for x in x:'。由於你比較了一個字符串和一個int,所以'x [i] == 1'將始終爲假。 –