在这里,我想删除所有连续重复的元音。但它显示错误为“列表超出索引”。
因此,我尝试中断是否到达列表中的最后一个元素,但仍然无法正常工作。
这是我尝试的代码:-
a=[]
b=str(input("enter the string"))
a=b.split(',')
c=['a','e','i','o','u']
for i in c:
for j in range(0,len(a)):
if (a[j+1] == a[len(a)]) is True:
break;
elif ((a[j] == a[j+1]) & (a[j+1] == i)) is True:
del[j]
e.join(a)
print(e)
请告诉我如何解决此问题,或者在那里解决其他任何问题。
答案 0 :(得分:0)
您从索引错误中获得了一个列表,因为您正在索引不在a
中的值
if (a[j+1] == a[len(a)]) is True:
a[len(a)]
不存在,数组的索引为零,因此它们从0开始。具有5个项目的数组的索引为0、1、2、3、4
该行应为:
if (a[j+1] == a[len(a) - 1]) is True:
“真”也是多余的,因此请进一步完善:
if a[j+1] == a[len(a) - 1]:
del[j]
也是错误吗?应该是del a[j]
吗?
如果是这种情况,则当您遍历数组的整个原始大小但在此迭代期间删除值时,该程序将遇到进一步的错误,因此它将查找不再存在的项。
答案 1 :(得分:0)
如何为连续的元音保留一个堆栈?每当您看到非元音字符串时,都会重新初始化堆栈列表;当您看到元音但不连续时,只需将其添加到最终列表中即可
stack=[]
new_list=[]
vowel=['a','i','o','u','e']
for i in your_string: # replace your string with actual string
if i not in vowel:
if len(stack) == 1:
new_list.append(stack[0])
new_list.append(i)
stack = []
else:
stack.append(i)
if len(stack) == 1:
new_list.append(stack[0])
答案 2 :(得分:0)
第一个细节是:TextField(
minLines: 1,
maxLines: 5,
)
据我所知是在必要时破坏代码。但这完全没有必要。相反,您应该在开始时固定迭代次数,应该为if (a[j+1] == a[len(a)]) is True:
另一个问题是您并没有真正遍历字母,只是每个逗号分隔的短语。如果您输入“ Hello,World”,则不检查字母,而是选中“ Hello”和“ World”。您不妨删除b并让a只是原始输入。
由于a将是一个字符串,因此要擦除字符串的第i个字母,可以使用下面的函数。
for j in range(0,len(a)-1):
最后,由于您正在使用范围,因此在启动for时,它将建立一个大小为len(a)的“列表”,但是当您删除元音时,a的长度会变短,并且您在开始将是很多。如果您将所有这些问题都解决了,那么应该正确
答案 3 :(得分:0)
您可以这样做:
a=[]
b=str("a,a,a,b,e,e,e,c,x,d")
a=b.split(',')
c=['a','e','i','o','u']
j = 0
for i in c:
while j < len(a)-1:
if a[j] == a[j+1] and a[j] == i:
del a[j]
else:
j = j+1
j=0
使用while loop
查看列表并删除连续的重复项。然后将while循环重置为零,然后再次遍历该列表。
如果要删除列表中用于迭代的项目,则无法使用for loop
。
b=str("a,a,a,b,e,e,e,c,x,d")
仅用于测试代码。
要打印结果,您只需执行print(a)
,它就会打印出列表。
答案 4 :(得分:0)
我对其进行了修改以适合您:
result=original.replace('a','').replace('e',''),replace('i','').replace('o','').replace('u','')
original
是您的输入字符串,result
是您的输出字符串。
答案 5 :(得分:0)
t=input()
st=""
vow=['a','e','i','o','u']
st+=t[0]
for i in range(1,len(t)):
if(t[i].lower() in vow):
if(t[i-1].lower() not in vow and i-1>=0):
st+=t[i]
else:
st+=t[i]
print(st)