我正在使用Python IDE 3。我的目标是:如果我有一串文本,'ABCDEFGHIJKL',我想把它分成几组,比如三组('ADGJ'、'BEHK'、'CFIL'(。我需要为此输入,但提示没有显示,我无法输入。这是我的代码:
#data
code_text = input('Text: ').lower()
code_skip = int(input('Shift length: '))
code_list = []
#function
def countSkip(text, shift, listt):
i = 0
group = 1
if group <= shift:
for e in text:
#make sure the set starts at the right place
if e.index()+1 < group:
pass
elif shift != 0:
if i = shift:
listt.append(e)
i = 0
i += 1
else:
listt.append(e)
group += 1
调用函数
countSkip(code_text, code_shift, code_list)
人们在评论中指出了一些阻止代码工作的事情。我没有试图剖析你的代码并让它工作,我写了一个更简洁的函数,它会让你得到你想要的结果。
def text_splitter(input_text, set_length):
num_sets = int(len(input_text)/set_length)
split_text = ["".join([input_text[(n * num_sets) + m] for n in range(set_length)]) for m in range(num_sets)]
return split_text
text_to_split = input('Text: ').lower()
len_set = int(input('Set Length: '))
text_list = text_splitter(text_to_split, len_set)
抱歉,我一直在努力以有效的方式命名变量,但上面的函数使用列表表达式来获得所需的结果。请记住,如果您使用 7 个字母的字符串并要求长度为 2 的集合,则不会附加最后一个字母。但是,这应该不难检查和纠正。例如,您可以将此代码添加到函数中或围绕设置长度的初始输入:
while len(input_text) % set_length != 0:
set_length = int(input("The text is length " + str(len(input_text)) + " please enter a different set length: "))