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] 用负数则表示反着切,正好符合本题的逆序复制,太巧妙了!
++++++++++++++++++++++++++++++++++++++
Python练习题 022:用递归函数反转字符串的更多相关文章
- Python3练习题 022:用递归函数反转字符串
方法一 str = input('请输入若干字符:') def f(x): if x == -1: return '' else: return s ...
- Python数据结构与算法_反转字符串(08)
编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这一问题. 你可以 ...
- Python练习题 025:判断回文数
[Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. ---------------------------------------- ...
- Python 中的反转字符串:reversed()、切片等
摘要:以相反的顺序反转和处理字符串可能是编程中的一项常见任务.Python 提供了一组工具和技术,可以帮助您快速有效地执行字符串反转. 本文分享自华为云社区<Python 中的反转字符串:rev ...
- python反转字符串(简单方法)及简单的文件操作示例
Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...
- Python中的反转字符串问题
按单词反转字符串是一道很常见的面试题.在Python中实现起来非常简单. def reverse_string_by_word(s): lst = s.split() # split by blank ...
- Leetcode 344.反转字符串 By Python
请编写一个函数,其功能是将输入的字符串反转过来. 示例: 输入:s = "hello" 返回:"olleh" 思路 Python里面的切片用来解决这个问题就很快 ...
- Leetcode 344:Reverse String 反转字符串(python、java)
Leetcode 344:Reverse String 反转字符串 公众号:爱写bug Write a function that reverses a string. The input strin ...
- leetcode python反转字符串中的单词
# Leetcode 557 反转字符串中的单词III### 题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. **示例1:** 输入: "L ...
随机推荐
- CentOS7系统使用rpm方式安装MySQL5.7
参考:https://blog.csdn.net/wudinaniya/article/details/81094578 1.首先去mysql官网下载rpm包,一个是server包一个是client包 ...
- 专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)
本文为霍格沃兹测试学院学员学习笔记. FPS 和丢帧率可以在一定程度上作为 APP 流畅度的一项衡量标准,本文介绍利用 adb shell dumpsys gfxinfo 命令获取软件渲染加载过程的数 ...
- js 数组与字符串互相转换
1.数组转字符串 arr.join() 2.字符串转数组 str.split(',')
- 如何使用Grep命令查找多个字符串
如何使用Grep 命令查找多个字符串 大家好,我是良许! 今天向大家介绍一个非常有用的技巧,那就是使用 grep 命令查找多个字符串. 简单介绍一下,grep 命令可以理解为是一个功能强大的命令行工具 ...
- Java并发编程:volatile关键字解析【转载】
介绍 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字 ...
- springcloudalibaba与nacos服务注册流程图
springboot + springcloud + springcloudalibaba + nacos 服务注册流程图: springboot ①WebApplicationContext ②st ...
- Linux(CentOS7)安装Tomcat (Tomcat+JDK)
安装Tomcat首先要安装jdk,jdk和tomcat安装可以使用的方法:将jdk.tomcat上传到Linux,然后解压后使用,另一种方法是直接使用在线安装:yum 第一步:安装jdk,在Linux ...
- SpringIOC初始化过程--详解
SpringIOC初始化过程 相信大家都知道Spring这个东西,我们经常来用他一些特性,比如说他的AOP,IOC,那今天就带大家解析下SpringIOC的加载过程. 我们来看一个例子 Annotat ...
- html基础:css样式1
h't'm'l中用到css样式有三种方式: 1.在header中增加style标签,在style标签中写 2.用link标签引用css样式文件 3.在需要使用css样式的标签添加style属性 一.在 ...
- 双向绑定数据的实现(new Proxy 版本)
调用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...