Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x 如何使用递归函数打印回文的可视表示?_Python 3.x_Recursion - Fatal编程技术网

Python 3.x 如何使用递归函数打印回文的可视表示?

Python 3.x 如何使用递归函数打印回文的可视表示?,python-3.x,recursion,Python 3.x,Recursion,我想编写一个递归函数,将回文作为字符串,然后打印它的特定视觉表示(见图)。谁能告诉我如何在每一行的开头加上空格,这样整个打印输出都是“镜像”的?我的完全扭曲了。 非常感谢你帮了我的忙 这就是我的指纹的样子 这就是我想要的样子 这是我在打印输出中的代码: def print_palindrome(p): if len(p) <= 1: print(p) else: print(len(p)*" " + p[0] + len(p)*" " +

我想编写一个递归函数,将回文作为字符串,然后打印它的特定视觉表示(见图)。谁能告诉我如何在每一行的开头加上空格,这样整个打印输出都是“镜像”的?我的完全扭曲了。 非常感谢你帮了我的忙

这就是我的指纹的样子

这就是我想要的样子

这是我在打印输出中的代码:

def print_palindrome(p):
    if len(p) <= 1:
        print(p)
    else:
        print(len(p)*" " + p[0] + len(p)*" " + p[-1])
        return print_palindrome(p[1:-1])

print_palindrome("murder for a jar of red rum")
def print_回文(p):

如果len(p)我会在递归函数中添加一个计数器,以指示您在哪一行。否则,函数如何知道开始时要打印多少空格

以下是我对您的代码的修改:

def print_palindrome(p):
    print_palindrome_rec(p, 0)

def print_palindrome_rec(p, i):
    if len(p) <= 1:
        print(i*" " + p)
    else:
        print(i*" " + p[0] + (len(p)-2)*" " + p[-1])
        print_palindrome_rec(p[1:-1], i+1)

print_palindrome("murder for a jar of red rum")
def print_回文(p):
打印回文记录(p,0)
def print_palindrome_rec(p,i):

如果len(p),问题是p在递归调用中变短,因此在行首打印错误的空格数。可能会将第一个
len(p)*''
更改为
(40 len(p)/2)*''
40只是一个虚构的常量,使用一半的页面宽度或原始字符串的一半长度。谢谢您的建议!我刚刚试过,if给了我以下错误消息:TypeError:不能用'float'类型的非int乘以序列。。。还有别的想法吗?