在python的IDLE中测试时,这个函数不会给我一个输出:
import random
def scramble(string):
rlist = []
while len(rlist) < len(string):
n = random.randint(0, len(string) - 1)
if rlist.count(string[n]) < string.count(string[n]):
rlist += string[n]
rstring = str(rlist)
return rstring
scramble('sdfa')
我花了很长时间试图弄清楚问题,但代码对我来说似乎很好。
答案 0 :(得分:0)
正确格式化这似乎可以解决问题。
import random
def scramble(string):
rlist = []
while len(rlist) < len(string):
n = random.randint(0, len(string) - 1)
if rlist.count(string[n]) < string.count(string[n]):
rlist += string[n]
rstring = str(rlist)
return rstring
print(scramble('sdfa'))
在Python中,缩进与良好的语法一样重要:) 顺便说一句,正如@Vincent Savard所说,你没有打印结果。在你的scramble()中你返回了一个字符串,但你没有对所述字符串做任何事情。
答案 1 :(得分:0)
几点说明:
不要使用string
作为参数名称,它可能与standard module string
发生冲突。
您可能不希望返回列表的str()
,这会产生类似
>>> rlist = ['s', 'a', 'f', 'd']
>>> str(rlist)
>>> "['s', 'a', 'f', 'd']"
相反,要获得加扰的字符串结果,请使用str.join()
:
>>> rlist = ['s', 'a', 'f', 'd']
>>> ''.join(rlist)
'safd'
>>>
scramble
的最后两行可以加入一个return
:
return str(rlist)
或
return ''.join(rlist)