Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python 3.x中使用random.shuffle对字符串进行置乱_Python_Algorithm_Function_Python 3.x_Recursion - Fatal编程技术网

在Python 3.x中使用random.shuffle对字符串进行置乱

在Python 3.x中使用random.shuffle对字符串进行置乱,python,algorithm,function,python-3.x,recursion,Python,Algorithm,Function,Python 3.x,Recursion,你好,我是编程新手,在过去的一年里,我一直在通过各种方式自学Python。我在这里潜伏了一段时间,得到了很多帮助,但现在我遇到了一个具体的问题: 我正在做一个单词拼凑游戏,结果遇到了一个障碍 Python3.x代码 def scrambler(word): word_to_scramble = list(word) random.shuffle(word_to_scramble) new_word = ''.join(word_to_scramble) retur

你好,我是编程新手,在过去的一年里,我一直在通过各种方式自学Python。我在这里潜伏了一段时间,得到了很多帮助,但现在我遇到了一个具体的问题:

我正在做一个单词拼凑游戏,结果遇到了一个障碍

Python3.x代码

def scrambler(word):
    word_to_scramble = list(word)
    random.shuffle(word_to_scramble)
    new_word = ''.join(word_to_scramble)
    return new_word
现在,上面的代码可以正常工作,但偶尔它会返回我输入到扰码器函数中的原始单词

我的问题是:是否有办法确保返回的字符串始终与给定的字符串不同。 我试图在其内部使用带while循环的扰码器函数,这会使脚本崩溃,并给我一个错误,说明已达到递归限制


任何帮助都将不胜感激。

如果您达到了递归限制,那么很可能您正在尝试对一个1字符的单词进行置乱。但是,在这个问题中删除递归非常容易…:

def _scrambler(word):
    word_to_scramble = list(word)
    random.shuffle(word_to_scramble)
    new_word = ''.join(word_to_scramble)
    return new_word

def scrambler(word):
   new_word = _scrambler(word)
   while new_word == word and len(word) > 1:
       new_word = _scrambler(word)
   return new_word

我添加了一个
len(word)>1
检查,因此如果可能的话,这最终会给你一个不同于你输入的单词。

希望你喜欢Chris的编程。 如果你这样测试

 from random import shuffle
 word='test'
 def scrambler(word):
      word_to_scramble = list(word)
      shuffle(word_to_scramble)
      new_word = ''.join(word_to_scramble)
      return new_word
 print(scrambler(word))
enter code here

from random import shuffle
word = 'test'
def scrambler(word):
    word_to_scramble = list(word)
    shuffle(word_to_scramble)
    new_word = ''.join(word_to_scramble)
    #print (new_word) if u want to check what is going on ...
    if new_word == word:
         scrambler(word) 
    elif new_word != word:
         return new_word  
         print(new_word)
scrambler(word)

您将在~中获得单词test,可能要修复您从OP.
'.join()复制/粘贴的打字错误,而不是
''join.(