Python:困在索引元音中
因此,我正在准备期中考试,在做pdf文档中的练习时,我面临以下练习: 为字符串编写代码,打印其所有元音(a、e、i、o和u)的索引。这可以通过for循环或while循环完成 给出了:s=“现在是完全不同的结果” 我编码说:Python:困在索引元音中,python,python-3.x,string,for-loop,indexing,Python,Python 3.x,String,For Loop,Indexing,因此,我正在准备期中考试,在做pdf文档中的练习时,我面临以下练习: 为字符串编写代码,打印其所有元音(a、e、i、o和u)的索引。这可以通过for循环或while循环完成 给出了:s=“现在是完全不同的结果” 我编码说: for j in s: for i in range(len(s)): if s[i] == "a" or s[i] =="e" or s[i] == "i" or s[i] == "o" or s[i] == "u":
for j in s:
for i in range(len(s)):
if s[i] == "a" or s[i] =="e" or s[i] == "i" or s[i] == "o" or s[i] == "u":
print (j[i])
我得到了一个错误:
“字符串索引超出范围”
我试着这样做是因为我在另一个类似的练习中使用了它,要求在两个字符串之间建立一个普通字母的索引,这是可行的,但现在,我不明白为什么不可行。如果你能解释一下我应该如何看待这个练习,我将不胜感激。谢谢 可以使用集合来存储元音,在集合中搜索的时间复杂度为O(1)
可以使用集合存储元音,在集合中搜索的时间复杂度为O(1)
在您的代码
s
中似乎有一个字符串列表。您处理的每个字符串都将位于j
变量中,因此您对len(s)
和s[…]
的使用将索引列表s
,而不是字符串j
的字符。因为直到最后一行(print(j[i])
)之前,您在该错误中是一致的,所以在该行检测到错误,但问题实际上是在对s
的每一次引用上,而不是j
顺便说一句,你真的不需要一套。您可以对常规字符串使用in
运算符。对于少数项目,使用您目前所学的基本工具,这可能会提供足够的性能:
for j in s:
for i in range(len(j)):
if j[i] in "aeiou":
print(i,j[i])
在您的代码
s
中似乎有一个字符串列表。您处理的每个字符串都将位于j
变量中,因此您对len(s)
和s[…]
的使用将索引列表s
,而不是字符串j
的字符。因为直到最后一行(print(j[i])
)之前,您在该错误中是一致的,所以在该行检测到错误,但问题实际上是在对s
的每一次引用上,而不是j
顺便说一句,你真的不需要一套。您可以对常规字符串使用in
运算符。对于少数项目,使用您目前所学的基本工具,这可能会提供足够的性能:
for j in s:
for i in range(len(j)):
if j[i] in "aeiou":
print(i,j[i])
对于s中的j,您不需要
,
。删除它并将print(j[i])
更改为print(i)
哦,天啊,我把自己弄复杂了,谢谢!我可能也想打印元音本身,idk。非常感谢。你也应该注意大写字母。类似于“aeiou”中的if letter.lower()的:
可能会有用。是的,我完成了这项工作,因为我没有使用“A”的0索引,现在也可以了,谢谢!我是这样做的:对于范围内的I(len(s)):s=s.lower()如果s[I]=“a”或s[I]=“e”或s[I]=“I”或s[I]=“o”或s[I]=“u”:打印(I)”,那么s中的j不需要。删除它并将print(j[i])
更改为print(i)
哦,天啊,我把自己弄复杂了,谢谢!我可能也想打印元音本身,idk。非常感谢。你也应该注意大写字母。类似于“aeiou”中的if letter.lower()的:
可能会有用。是的,我完成了这项工作,因为我没有使用“A”的0索引,现在也可以了,谢谢!我是这样做的:对于范围内的I(len(s)):s=s.lower()如果s[I]=“a”或s[I]=“e”或s[I]=“I”或s[I]=“o”或s[I]=“u”:print(I)”使用元音作为列表type@Ratnesh在集合中搜索的时间复杂度是O(1),我没有考虑到这一点,因为我只了解了变量、函数、条件、迭代、索引,文本文件。假设set是另一个东西。无论如何谢谢你!set对象是一个无序的可散列对象集合,您可以查看感谢信息@kedderrac!使用元音作为列表type@Ratnesh在一个集合中搜索的时间复杂度是O(1),我没有考虑到这一点,因为我只了解了变量、函数、条件、迭代、索引和文本文件。假设set是另一个东西。无论如何谢谢你!set对象是一个无序的可散列对象集合,您可以查看感谢信息@kedderrac!