在Python 3.x中使用random.shuffle对字符串进行置乱
你好,我是编程新手,在过去的一年里,我一直在通过各种方式自学Python。我在这里潜伏了一段时间,得到了很多帮助,但现在我遇到了一个具体的问题: 我正在做一个单词拼凑游戏,结果遇到了一个障碍 Python3.x代码在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
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.(