Список всевозможных строк, как начальная, но с разным регистром

есть входная строка допустим 'abc', а может кто имеет идейку, как сделать генерацию случайного регистра букв и вывод этих вариантов - 'Abc', 'ABc', AbC и т.д.


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

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

tio.run

s = "aBc".lower()

for m in range(1<<len(s)):
  print("".join((c.upper() if m&(1<<i) else c) for i,c in enumerate(s)))

Или, возможно, чуть оптимальнее: tio.run:

x = [(1<<i, c.lower(), c.upper()) for i,c in enumerate("aBc")]

for mask in range(1<<len(x)):
  print("".join((u if mask&m else l) for m,l,u in x))
abc
Abc
aBc
ABc
abC
AbC
aBC
ABC
→ Ссылка
Автор решения: Qwertiy

tio.run

from itertools import product

s = "aBc"

for x in product(*((c.lower(), c.upper()) for c in s)):
  print("".join(x))
abc
abC
aBc
aBC
Abc
AbC
ABc
ABC
→ Ссылка