Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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 在不洗牌第一个和最后一个字符的情况下洗牌字符串_Python - Fatal编程技术网

Python 在不洗牌第一个和最后一个字符的情况下洗牌字符串

Python 在不洗牌第一个和最后一个字符的情况下洗牌字符串,python,Python,我试过: text="Sample sentence." random.shuffle(text) print(''.join(text)) 但这会改变一切,可能的输出: nmactnpleSSe ee 我想要这样的东西: Smplea ntesence. 只需提取和洗牌位,然后重新组装 import random text = "Sample sentence." text1 = list(text[1:-1]) random.shuffle(

我试过:

text="Sample sentence."
random.shuffle(text)
print(''.join(text))
但这会改变一切,可能的输出:

nmactnpleSSe ee
我想要这样的东西:

Smplea ntesence.

只需提取和洗牌位,然后重新组装

import random

text = "Sample sentence."

text1 = list(text[1:-1])
random.shuffle(text1)

text2 = text[0] + ''.join(text1) + text[-1]

print(text2)
注意:这回答了关于洗牌除第一个和最后一个字符以外的所有字符的问题。问题中显示的示例似乎是一个特例,每个单词都被单独洗牌。这是一个可能的结果,但不是保证的结果。

见下文

import random

text = 'Sample sentence.'
lst = [char for char in text[1:-1]]  
random.shuffle(lst)
lst.append(text[-1])
lst.insert(0,text[0])
print(''.join(lst))

你不能洗牌一个字符串-它们是不可变的。因此显示的输出与您发布的代码不对应。
text[0]+'.join(random.shuffle(list(text[1:-1]))+text[-1]
,只要
len(text)
大于1。这样做的目的是保持第一位和最后一位,并在这两位之间来回移动。回答你的问题@YossiLevi您的
shuffle
返回的不是
None
?正确。这一个绝对更好-
c=list(文本[1:-1]);随机、随机(c);打印(文本[1]+''.join(c)+text[-1])
。谢谢