Все возможные комбинации слова в плане регистра python

Помогите пожалуйста! Мой код делает все комбинации слова в плане регистра. Но если в слове будут числа, то получается 2 одинаковых ответа из-за того что код делает число заглавным и строчным хотя разницы нету.

Код:

x = sum(map(str.isalpha,text))


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

Вывод:

A1b2
a1b2
A1b2
a1B2
A1B2
a1B2
A1B2
a1b2
A1b2
a1b2
A1b2
a1B2
A1B2
a1B2
A1B2

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

Автор решения: Stanislav Volodarskiy

Код, думаю, говорит сам за себя:

import itertools


# 'A1b2'
s = input()

# [['A', 'a'], ['1'], ['B', 'b'], ['2']]
axis = [sorted(set((c.upper(), c.lower()))) for c in s]

# 'A1B2', 'A1b2', 'a1B2', 'a1b2'
for p in itertools.product(*axis):
    print(''.join(p))
$ echo A1b2 | python cases.py
A1B2
A1b2
a1B2
a1b2
→ Ссылка