Python 长度为2的字符串的索引1超出范围?
我正在使用Python,试图解决Euler项目的第17道问题,将每个数字中的字母数相加到1000 我已经编写了将每个数字转换成字符串的代码,并系统地计算出每个数字包含多少个字母,这段代码并不吸引人,但它是我的。以下是我遇到问题的具体部分:Python 长度为2的字符串的索引1超出范围?,python,string,indexing,index-error,Python,String,Indexing,Index Error,我正在使用Python,试图解决Euler项目的第17道问题,将每个数字中的字母数相加到1000 我已经编写了将每个数字转换成字符串的代码,并系统地计算出每个数字包含多少个字母,这段代码并不吸引人,但它是我的。以下是我遇到问题的具体部分: if len(n)==2: print(n,n[1]) if n[0]=="0": n=n[1] if n[1]=="0&qu
if len(n)==2:
print(n,n[1])
if n[0]=="0":
n=n[1]
if n[1]=="0":
if n[0]=="1":
cnt+=3
n=""
那个print语句是用来告诉我代码要读什么的。它在1到100之间工作得很好,然后当它尝试101时,如果n[1]==0,则第23行出现错误:表示字符串索引超出范围,但print函数返回01 1,这意味着它能够找到该字符串的索引1
有什么想法吗
这是完整的代码,它不是很吸引人,但它是我的
def numletcount(t):
n=str(t)
cnt=0
while len(n)>0:
if n == "0":
n=""
if len(n)==1:
if n == "1" or n == "2" or n == "6":
cnt+=3
n=""
if n == "4" or n == "5" or n == "9":
cnt+=4
n=""
if n == "3" or n == "7" or n == "8":
cnt+=5
n=""
if len(n)==2:
print(n,n[1])
if n[0]=="0":
n=n[1]
if n[1]=="0":
if n[0]=="1":
cnt+=3
n=""
elif n[0] == "2" or n[0] == "3" or n[0] == "8" or n[0] == "9":
cnt+=6
n=""
elif n[0] == "4" or n[0] == "5" or n[0] == "6":
cnt+=5
n=""
elif n[-2] == "7":
cnt+=7
n=""
else:
if n[0]=="1":
if n[-1] == "1" or n[-1] == "2":
cnt+=6
n=""
elif n[-1] == "5" or n[-1] == "6":
cnt+=7
n=""
elif n[-1] == "3" or n[-1] == "4" or n[-1] == "8" or n[-1] == "9":
cnt+=8
n=""
elif n[-1] == "7":
cnt+=9
n=""
elif n[0] == "2" or n[0] == "3" or n[0] == "8" or n[0] == "9":
cnt+=6
n=n[-1]
elif n[0] == "4" or n[0] == "5" or n[0] == "6":
cnt+=5
n=n[-1]
elif n[0] == "7":
cnt+=7
n=n[-1]
if len(n)==3:
if n[1:3] == "00":
cnt+=7
n=n[0]
else:
if n[0] == "1" or n[0] == "2" or n[0] == "6":
cnt+=13
n=n[1:3]
elif n[0] == "4" or n[0] == "5" or n[0] == "9":
cnt+=14
n=n[1:3]
elif n[0] == "3" or n[0] == "7" or n[0] == "8":
cnt+=15
n=n[1:3]
if len(n)==4:
cnt+=11
n=n[1:4]
print(t,cnt)
return cnt
你说它是打印01和1,所以n是01,n[0]==0。 现在你有了
if n[0]=="0":
n=n[1]
现在n是1,他的长度是1,你的代码和Euler项目的问题17有什么关系?你将如何从13->13得到长度为8的13?啊,当然!我的问题是if语句直接跟在后面,我必须将它改为elif。非常感谢。