我正在写一个程序,看看一个单词中是否有三个连续的双字母,比如记账。
当我尝试运行该程序时,我得到错误,TypeError:"int"对象是可订阅的。为什么?
def find_word(string):
count = 0
for eachLetter in range(len(string)):
if eachLetter[count] == eachLetter[count + 1] and eachLetter[count+ 2] == eachLetter[count + 3] and eachLetter[count+ 4] == eachLetter[count + 5]:
print string
else:
count = count + 1
def main():
try:
fin = open('words.txt') #open the file
except:
print("No file")
for eachLine in fin:
string = eachLine
find_word(string)
if __name__== '__main__':
main()
您的循环:
for eachLetter in range(len(string)):
将小于字符串长度的0到1的数字分配给变量eachLetter
;在这之后,eachLetter[count]
就没有意义了。
你是说string[eachLetter]
等吗。?
请注意,您还将得到索引错误;例如,当你进入"记账"的第8个字母时,没有字符8+5=13需要检查,你的程序就会爆炸。
由于这似乎是一个家庭作业,我将把它作为一个练习留给你,让你找出如何更快地停止循环5个字符。
这是您的错误:
if eachLetter[count]
这里eachLetter
是int
,因为range
返回int列表。
fin = open('words.txt')
string = fin.readline()
def find_word(string):
for string in fin:
count = 0
for count in range(len(string)-5):
if string[count] == string[count + 1] and string[count+ 2] == string[count + 3] and string[count+ 4] == string[count + 5]:
print(string)
def main(fin):
for string in fin:
return find_word(string)
main(fin)