如何使用此递归方法从单独的行中的字符串中打印出每3个字母?

问题描述 投票:0回答:2

我正在制作一个带字符串的方法,它根据窗口在单独的行上输出部分字符串。

例如:

我想在单独的行中输出我的字符串的每3个字母。

Input : "Advantage"
Output:
    Adv
    ant
    age

Input2: "23141515"
Output: 
     231
     141
     515

我的代码:

def print_method(input):
    mywindow = 3
    start_index = input[0]
    if(start_index == input[len(input)-1]):
        exit()
    print(input[1:mywindow])
    printmethod(input[mywindow:])

但是我遇到运行时错误....有人可以帮忙吗?

python
2个回答
4
投票

我想这就是你想要的。这是我改变的:

  1. input改名为input_strinput是Python中的关键字,因此用于变量名称并不好。
  2. _的递归调用中添加了缺少的print_method
  3. 0:mywindow而不是1:mywindow打印(这将跳过第一个字符)。当你从0开始,你也可以说:mywindow得到相同的结果。
  4. 将退出语句(是sys.exit?)更改为return(可能是想要的)并将if条件更改为在输入空字符串后返回。打印的最后一个字符串长度可能不是3;如果你想要这个,你可以使用if len(input_str) < 3: return
def print_method(input_str):
    mywindow = 3
    if not input_str: # or you could do if len(input_str) == 0
        return
    print(input_str[:mywindow])
    print_method(input_str[mywindow:])

0
投票

编辑sry错过了标题:如果这不是递归的学习示例,则不应使用递归,因为它效率较低并且更频繁地对列表进行切片。

def chunked_print (string,window=3):
    for i in range(0,len(string) // window + 1): print(string[i*window:(i+1)*window])

如果窗口大小不分割字符串长度,则会起作用,但如果窗口大小没有,则打印空行。您可以根据需要进行修改

© www.soinside.com 2019 - 2024. All rights reserved.