Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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,读起来可能有点混乱,但我想做的是根据程序用户的输入,提取任何字符串并重新排列字母。例如,line=“Romeo and Juliet”,key=3。编码行将以第[0]R行开始,然后向下移动3个字符到E,然后是A,然后是空格。然后,当我到达列表的末尾时,它将返回并从第[1]行开始,添加3,依此类推,直到所有字符都被使用。因此,最终结果将是“realtoondue”。我假设这将使用一个循环,而这就是我被卡住的部分。这是我当前的代码: key = int(input("Enter the key: "

读起来可能有点混乱,但我想做的是根据程序用户的输入,提取任何字符串并重新排列字母。例如,line=“Romeo and Juliet”,key=3。编码行将以第[0]R行开始,然后向下移动3个字符到E,然后是A,然后是空格。然后,当我到达列表的末尾时,它将返回并从第[1]行开始,添加3,依此类推,直到所有字符都被使用。因此,最终结果将是“realtoondue”。我假设这将使用一个循环,而这就是我被卡住的部分。这是我当前的代码:

key = int(input("Enter the key: "))
sent = input("Enter a sentence: ")
print()# for turnin
print()

print("With a key of:",key)
print("Original sentence:",sent)
print()

split = list(sent)

for i in range(len(split)):
    print(split[0+i*key])
所以我设置了列表,这给了我需要的前几个字母,但我得到了一个错误:
索引器:列表索引超出范围。

因此,一旦它到达最后一个字符,我如何让它返回到
split[1]
并继续执行?

字符串切片可以采用“跳过”因子,因此:

>>> s = 'Romeo and Juliet'
>>> s[0::3] # every 3rd letter starting from 0
'Rea lt'
>>> s[1::3] # every 3rd letter starting from 1
'oonJi'
将其放在一个循环中,并将它们连接在一起:

>>> ''.join(s[i::3] for i in range(3))
'Rea ltoonJim due'
作为一般功能:

>>> def rearrange(s,skip):
...     return ''.join(s[i::skip] for i in range(skip))
... 
>>> rearrange(s,3)
'Rea ltoonJim due'
>>> rearrange(s,5)
'R Jtoaumnledio e'
您可以执行
split[(i*键)%len(split)]
来围绕列表旋转。多看看