Проблема в вашем коде: k
будет увеличиваться, только если условие истинно. Вы просто переместите k = k+1
из оператора if, и он будет работать. Измените это
for x in range(0,len(a)):
if a[k][l] in 'aeou':
t.append(a[k])
k=k+1
Это
for x in range(0,len(a)):
if a[k][l] in 'aeou':
t.append(a[k])
k=k+1
Простое решение с использованием понимания списка
string ='shivraj'
a = [string[i: j + 1] for i in range(len(string)) for j in range(i, len(string))]
vowels = 'aeiou'
s = [x for x in a if x.startswith(tuple(vowels))]
Вывод:
['i', 'iv', 'ivr', 'ivra', 'ivraj', 'a', 'aj']