如果一个字符具有特定字母,则一个字符一个字符检测,然后计算它们的数量
Detecting a character one by one if it has a specific letter, then calculates the number of them
我正在尝试制作一个程序来检测您键入的单词中有多少个元音字母。
这是我的源代码(我有多个代码):
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
第二个:
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
第三个有点复杂:
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
您可以在 my profile 查看完整的源代码。
感谢您的帮助。
谢谢!
在第一个和最后一个示例中,您使用字符串作为索引 (a[str(i)])。然而,指数总是整数。请记住,第一个索引始终为 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 循环之前,它应该可以工作。
注意,索引数组或字符串时需要使用整数:
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)")
您可能想为此使用 in 关键字。
value = 0
for letter in a:
if letter in ['a','e','i','o','u']:
value = value + 1
print("Number of values: %d" % value)
就类型错误而言。就像其他人指出的那样,您需要使用整数:
a = input("word - ").lower()
for i in range(1, len(a)+1):
if a[i] == "a" or a[i] == "e" or a[i] == "i" or a[i] == "u":
print("ok")
else:
print("no")`
你可以简单地做:
a = input("word - ").lower()
vowels = "aeiou"
len([letter for letter in a if letter in vowels])
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))
- 字符串索引必须是整数
a[i]
不是 a[str(i)]
or
语句不能那样使用(也许使用 in
?)
for
范围错误。索引从0开始而不是1,所以应该是range(0, len(a))
简单range(len(a))
您使用 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"]:
我正在尝试制作一个程序来检测您键入的单词中有多少个元音字母。 这是我的源代码(我有多个代码):
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
第二个:
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
第三个有点复杂:
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您可以在 my profile 查看完整的源代码。
感谢您的帮助。 谢谢!
在第一个和最后一个示例中,您使用字符串作为索引 (a[str(i)])。然而,指数总是整数。请记住,第一个索引始终为 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 循环之前,它应该可以工作。
注意,索引数组或字符串时需要使用整数:
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)")
您可能想为此使用 in 关键字。
value = 0
for letter in a:
if letter in ['a','e','i','o','u']:
value = value + 1
print("Number of values: %d" % value)
就类型错误而言。就像其他人指出的那样,您需要使用整数:
a = input("word - ").lower()
for i in range(1, len(a)+1):
if a[i] == "a" or a[i] == "e" or a[i] == "i" or a[i] == "u":
print("ok")
else:
print("no")`
你可以简单地做:
a = input("word - ").lower()
vowels = "aeiou"
len([letter for letter in a if letter in vowels])
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))
- 字符串索引必须是整数
a[i]
不是a[str(i)]
or
语句不能那样使用(也许使用in
?)for
范围错误。索引从0开始而不是1,所以应该是range(0, len(a))
简单range(len(a))
您使用 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"]: