您可以使用shuffle
从随机包装:
import random
letters = list(still_to_scramble)
random.shuffle(letters)
scrambled = ''.join(letters)
下面是它的工作:
>>> s
'$123abc$'
>>> first_letter = s[0]
>>> last_letter = s[-1]
>>> middle_parts = list(s[1:-1])
>>> random.shuffle(middle_parts)
>>> ''.join(middle_parts)
'b3a2c1'
要小心,不这样做:
>>> middle_parts_random = random.shuffle(middle_parts)
shuffle
在原地工作 - 这就是一种奇特的方式说它不会返回混洗的位,但是会改变它。它实际上返回None
,你可能会被它绊倒了,因为你不会看到一个错误:
>>> middle_parts_random = random.shuffle(middle_parts)
>>> middle_parts_random # Huh? nothing is printed!
>>> middle_parts_random == None # Ah, that's why. Darn you in-place methods!
True
random.shuffle在适当的位置工作 - 在其他工作ds,它不会在字符串上工作。你需要像'scramble = list(word [1:-1]);洗牌(加扰);打印'{0} {1} {2}'。格式(第一,''。加入(争夺),最后)' – mgilson
谢谢@mgilson –
单行:''{0} {1} {2}'。格式(s [0],''.join(random.sample(s [1:-1],len(s)-2)),s [-1])' –