Все возможные комбинации слова в плане регистра 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