1

入力した単語に含まれる母音の数を検出するプログラムを作成しようとしています。これが私のソースコードです(複数のコードがあります):

a = input("word - ").lower()
for i in range(1, len(a)+1):
  if a[str(i)] == "a" or "e" or "i" or "o" or "u":
    print("ok")
else:
  print("no")`

そして、私はエラーが発生します:

TypeError: string indices must be integers

2番目のもの:

a = input("word - ").lower()
for letter in a:
  if letter == "a" or "e" or "i" or "o" or "u":
    value = 0
    value = value + 1
print(value)

エラーも表示されます:

TypeError: string indices must be integers

3 つ目はもう少し複雑です。

a = input("rec - ").lower()
for i in range(1, len(a)+1):
  if a[str(i)] == "a":
    print("yes a")
  elif a[str(i)] == "e":
    print("yes e")
  elif a[str(i)] == "i":
    print("yes i")
  elif a[str(i)] == "o":
    print("yes o")
  elif a[str(i)] == "u":
    print("yes u")

Repl.itでPython 3.6.1に取り組んでいます

私のプロフィールで完全なソース コードを確認できます。

私はあなたの助けに感謝します。ありがとうございました!

4

6 に答える 6

1

a[str(i)]str(i) が文字列であり、すべての配列インデックスが整数でなければならない文字列内の文字にアクセスしていたため、エラーが発生しました。

i はすでに整数なので、文字にアクセスするには a[i] を使用する必要があります。

また、@ usr2564301が言ったように、あなたのor発言は間違っています

if letter == "a" or "e" or "i" or "o" or "u":

あるべきです、

if letter in ["a", "e", "i", "o", "u"]:
于 2018-12-29T08:26:54.773 に答える
0
vowels=['a','e','i','o','u']
count=0
a = input("word - ").lower()
for i in range(0, len(a)): #or simply range(len(a))
  if a[i] in vowels:
    count+=1
print("Number of vowels:"+str(count))
  1. 文字列インデックスは整数でなければなりa[i] ません a[str(i)]
  2. orステートメントはそのように使用することはできません (おそらくin? を使用します)
  3. 範囲が間違っています。index は 1 ではなく 0 から始まるため、単純forにする必要がありますrange(0, len(a))range(len(a))
于 2018-12-29T08:24:53.350 に答える