Как сделать следующее: password Password pAssword paSsword pasSword passWpord и тд?

Вообщем, как я уже написал в теме вопроса, я хочу чтоб каждая буква по очереди стала заглавной.

У меня были идеи, как сделать это всё, при помощи слайсов и капиталайза, каждый раз при слайсе сохранять в переменную удаленную часть, а после капиталайза просто соединять их обратно. Но что-то пошло не так.

У меня так и не получилось, надеюсь кто-то сможет мне помочь.


Ответы (2 шт):

Автор решения: MaxU

Попробуйте так:

res = [word] + [word[:i] + word[i:].capitalize()  for i in range(1, len(word))]

Результат:

In [108]: res
Out[108]:
['password',
 'pAssword',
 'paSsword',
 'pasSword',
 'passWord',
 'passwOrd',
 'passwoRd',
 'passworD']
→ Ссылка
Автор решения: Came Up

Возможный вариант:

word = "password"

result = [word.replace(let, let.upper()) for let in word]

*при таком варианте заменяются все буквы, поэтому он не подходит.
Исправленный вариант:

result = [f"{s[:i]}{s[i].upper()}{s[i+1:]}" for i in range(len(s))]
→ Ссылка