Я пытаюсь написать код Python для печати powerset строки, но сталкиваюсь с некоторыми ошибками. Вот что у меня есть:
def getperm (string):
perm = []
if len(string) == 0:
perm.append("")
return perm
#if len(string) == 1:
# perm.append(string)
# perm.append("")
first = string[0]
print "first = " + str(first)
rem = string[1:len(string)]
print "rem = " + str(rem)
words = getperm(rem)
for word in words:
for i in range(len(word)):
temp = string[0:i] + first + string[i:len(string)]
print "temp = " + str(temp)
perm.append(temp)
return perm
if __name__=="__main__":
a = "ab"
mag = getperm(a)
print mag
Мой ожидаемый результат будет:
['', 'a', 'b', 'ab']
Мой фактический результат:
[]
Может ли кто-нибудь помочь мне понять, что происходит? Это какой-то нюанс python или в моем коде есть ошибка? Я думаю, что мой код должен быть в порядке — я заканчиваю пятый выпуск интервью Cracking the coding.
Благодарю вас!
'ab'
являются'ab'
и'ba'
. - person Matt Ball   schedule 28.09.2012string
(это имя встроенного модуля), и я не уверен, чего вы пытаетесь достичь, вызываяstr
для объектов, которые уже являются строками (first
,rem
, и т.д.). - person abarnert   schedule 28.09.2012