-1

私は、簿記のように、3つの連続した2文字の単語であるかどうかを確認するプログラムを書いています。

プログラムを実行しようとすると、TypeError:'int'オブジェクトがubsubscriptableというエラーが発生します。理由は何ですか?

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()
4

3 に答える 3

3

あなたのループ:

for eachLetter in range(len(string)):

文字列の長さよりも 0 から 1 少ない数値を variable に割り当てますeachLetter。この後、eachLetter[count]意味がありません。

などのことstring[eachLetter]ですか?

インデックス エラーも発生することに注意してください。たとえば、「簿記」の 8 番目の文字に到達すると、調べる文字 8+5 = 13 がなく、プログラムが爆発します。

これは宿題のように思えるので、5 文字のループをすぐに停止する方法を理解するための演習として残します。

于 2013-02-19T12:22:50.873 に答える
1

エラーは次のとおりです。

if eachLetter[count]

eachLetterこれは、int のリストを返すintためです。range

于 2013-02-19T12:24:09.110 に答える