争夺功能不会输出

时间:2010-10-31 19:05:21

标签: python function scramble

在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')

我花了很长时间试图弄清楚问题,但代码对我来说似乎很好。

2 个答案:

答案 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)