【发布时间】:2021-12-30 01:39:07
【问题描述】:
我需要在输入的文本中显示元音的数量,如果它们在文本中
TypeError: 列表索引必须是整数或切片,而不是 str
a = 0
e = 0
y = 0
u = 0
o = 0
i = 0
word = input("Введите текст: ")
word1 = list(word)
print(word1)
for j in word1:
if word1[j] == "a":
a += 1
elif word1[j] == "e":
e += 1
elif word1[j] == "y":
y += 1
elif word1[j] == "u":
u += 1
elif word1[j] == "o":
o += 1
elif word1[j] == "i":
i += 1
if a != 0:
print("a:", a)
if e != 0:
print("e:", e)
if y != 0:
print("y:", y)
if u != 0:
print("u:", u)
if o != 0:
print("o:", o)
if i != 0:
print("i:", i)
【问题讨论】:
-
当您执行
for j in word1时,您会遍历每个字符,而word1意味着j将是一个字母,而不是一个数字。因此,当您尝试访问word1[j]时,您实际上尝试了类似word1['a']的内容,而不是您可能认为的 word1[0] -
你从输入中得到的是一个字符串。把它放在一个列表中不会把它变成一个字符列表。而且您的代码仍然没有意义。无论如何,这里的问题是
word1是一个列表,j是一个字符串。您不能使用字符串作为列表索引。如果你想这样做,你可以考虑把它改成字典。 -
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?