2016-11-07 3 views
-1

Мой код довольно прост. Моя задача - получить каждую перестановку заданной строки. Вычислить количество перестановок - это понятно - факториал.Перестановки Python данной строки

Код

s = "aba" 
perm = list("".join(string) for string in permutations(s))# all permutations 
numberOfPerm = len(perm) #number of permutations 
unique = len(list(set(perm))) #number of unique permutations 
list.sort(perm) # ascii sorting 
format_list = [numberOfPerm, unique] 
print("total: {} (unique: {}) ".format(*format_list)) 
print(perm) 

Выход этого

total: 6 (unique: 3) 
['aab', 'aab', 'aba', 'aba', 'baa', 'baa'] 

Дело в том, мне нужно, чтобы это было как этот

total: 6 (unique: 3) aab, aab, aba, aba, baa, baa 

я наткнулся на различных решений, например ''.join(finalArray), но ни один из них не работает ни в моем pycharm, ни в VPL (лаборатория виртуального программирования) - появляются ошибки трассировки. Спасибо за возможную помощь.

+0

Не кажется ли вам было бы полезно * выкладываю ошибки вы получаете? * –

+0

Возможные дубликат [конкатенации элемента в списке строк] (http://stackoverflow.com/questions/12453580/ concatenate-item-in-list-to-strings) –

ответ

0
print("total: {} (unique: {}) {}".format(*format_list, ', '.join(perm)) 
+0

Это решение не передает VPL, но определенно работает в pycharm. Файл «Anagram.py», строка 10 print («total: {} (unique: {}) {}". Format (* format_list, ',' .join (perm))) SyntaxError: только именованные аргументы может следовать * выражению – Rickertbrandsen

+0

Попробуйте изменить '* format_list' с' format_list [0], format_list [1] ' – Uriel

+0

хорошо, похоже, проблема с моими знаниями об основах python, появился другой вид сбоя. Я использую 's = str (input())' вместо 's =" aba "' и есть два отказа в тестах 'Traceback (последний последний звонок): Файл« Ana.py », строка 4, в S = Str (вход()) Файл "", строка 1, в NameError: название 'Кладно' не defined' – Rickertbrandsen

Смежные вопросы