【问题标题】:scramble function won't output打乱功能不会输出
【发布时间】:2011-05-03 03:39:25
【问题描述】:

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

我花了很长时间试图找出问题所在,但代码对我来说似乎不错。

【问题讨论】:

  • 您的缩进看起来不正确。
  • 您没有在屏幕上打印结果,因此没有输出任何内容是正常的。另请注意,随机模块中已经有一个随机播放功能。

标签: python function scramble


【解决方案1】:

正确格式化这似乎可以解决问题。

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() 中,您返回了一个字符串,但您没有对所述字符串执行任何操作。

【讨论】:

  • 他的原始帖子根本没有格式,我不会将问题归咎于缩进。有人编辑了它,他可能没有正确缩进。
【解决方案2】:

几点说明:

不要使用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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多