首页 > 解决方案 > 如何执行此递归方法以在单独的行上从字符串中打印出每 3 个字母?

问题描述

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

例如:

我想在单独的行上输出我的字符串的每 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

解决方案


我认为这就是你想要得到的。这是我更改的内容:

  1. 重命名inputinput_str. input是 Python 中的关键字,所以不适合用作变量名。

  2. _在递归调用中添加了缺失print_method

  3. 0:mywindow从而不是打印1:mywindow(这将跳过第一个字符)。当您从 开始时0,您也可以只说:mywindow得到相同的结果。

  4. 将退出语句(是sys.exit吗?)改为 a 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:])

推荐阅读