它可以通过多种方式实现,但这是我的解决方案:
写了一个只改变字母位置的函数:
def scramble(s):
s = list(s) #i think more easier, but it is absolutely performance loss
p = s.pop(random.randint(0, len(s)-1))
s.insert(random.randint(0, len(s)-1), p)
return "".join(s)
并编写了一个多次应用于字符串的函数:
def scramble_factor(s, n):
for i in range(n):
s = scramble(s)
return s
现在我们可以使用它了:
>>> s = "paragraph"
>>> scramble_factor(s, 0)
'paragraph'
>>> scramble_factor(s, 1)
'pgararaph'
>>> scramble_factor(s, 2)
'prahagrap'
>>> scramble_factor(s, 5)
'pgpaarrah'
>>> scramble_factor(s, 10)
'arpahprag'
当然功能可以组合或嵌套,但我认为很清楚。
编辑:
它不考虑距离,但仅用于交换相邻字母即可轻松替换打乱功能。这是一个:
def scramble(s):
if len(s)<=1:
return s
index = random.randint(0, len(s)-2)
return s[:index] + s[index + 1] + s[index] + s[index+2:]