3 回答
TA贡献1864条经验 获得超2个赞
在第一个和最后一个示例中,您使用字符串作为索引 (a[str(i)])。但是,indeces 始终是整数。请记住,第一个索引始终为 0,而不是 1。您的 for 循环从 1 开始迭代。由于第一个元素的索引为 0,因此最后一个元素的索引为 len(array) - 1,这意味着您的 for-循环应该只迭代到 len(a)。for 循环索引的问题也适用于最后一个示例。
在第二个示例中,您没有正确使用 or 语句。你不能这样比较他们。你必须这样写:
if letter == "a" or letter == "e" or letter == "i" or letter == "o" or letter == "u":
为了缩短这个,只需写:
if letter in "aeiou":
在这里,您检查字母是否在字符串“aeiou”中。
在您的第二个示例中,每次找到元音时,您还将值重置为零。这将导致值仅为 1 或未定义。将 value = 0 放在 for 循环之前,它应该可以工作。
TA贡献1816条经验 获得超6个赞
您曾经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"]:
TA贡献1829条经验 获得超9个赞
请注意,在索引数组或字符串时需要使用整数:
a = input("word - ").lower()
for i in range(len(a)):
if a[i] == "a" or "e" or "i" or "o" or "u":
print("ok")
else:
print("no")
这应该可以解决您的问题:
vowels = set("aeiou")
user_input = input("word - ").lower()
vowels_count = len([letter for letter in user_input if letter in vowels])
print(f"you typed {vowels_count} vowel(s)")
添加回答
举报