Python练习题 022:用递归函数反转字符串

【Python练习题 022】 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

---------------------------------------

又来一个递归题!不过,有了【Python练习题 021:递归方法求阶乘】这道题的经验,还是依着葫芦画个瓢,倒也不难。代码如下:

str = input('请输入若干字符:')

def f(x):
    if x == -1:
        return ''
    else:
        return str[x] + f(x-1)

print(f(len(str)-1))

输出结果如下:

请输入若干字符:abcdefg
gfedcba

如果不用递归函数呢?那就简单多了:先把输入的字符串转为列表,逆序重排,然后给 join() 在一起就可以上桌了。代码如下:

str = list(input('请输入若干字符:'))

str.reverse()
print(''.join(str))

可能是我现在的水平太低了,还体会不到递归函数的强大之处。路漫漫啊……

 

【2016-10-18 更新】---------------------------------------------------

感谢 codegay 的指教,这题如果不是强制要求用递归函数,其实还有一个非常简便的方法,就是切片!先来感受一下这极简之风味,史上最简方法:

str = input('请输入若干字符:')
print(str[::-1])

就是这个“切片”功能!一般 str[:] 就可以复制 str 所有字符,等同于 str[::1],数字“1”表示步长,若为“2”,则 'abcdef'[::2] = 'ace' 。而 str[::-1] 用负数则表示反着切,正好符合本题的逆序复制,太巧妙了!

 

++++++++++++++++++++++++++++++++++++++

题目出处:编程语言入门经典100例【Python版】

posted @ 2016-10-17 16:24  木木卡卡西  阅读(8068)  评论(4编辑  收藏  举报