page contents

python基础编程100例:第15期-反转字符串

本文讲述了python基础编程100例:第15期-反转字符串!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-03-BHIkVPsb622bfa3ac11e7.png

本文讲述了python基础编程100例:第15期-反转字符串!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

第15期-反转字符串

1 问题描述

请用户输入一个字符串,将其进行反转,输出反转后的字符串

如将字符串'abcde', 反转为'edcba'

2 解题思路

字符串是有序的排列,反转字符串可用for循环、反向切片、反转列表、递归、reduce函数等方法

3 解题方法

方法一:for循环

a = input("请输入字符串:")

b = ''

for i in a:

    b = i + b

print(b)

第1行: 用input函数获取用户输入的字符串,赋值给变量 a

第2行: 创建变量b,赋值为一个空字符串

第3行: 由于字符串是有序的排列,用for循环遍历a中的每一个元素

第4行: 每次循环都将循环变量 i 与变量 b 连接起来,再赋值给变量b,循环结束时,b 为 a 的反向字符串

第5行: 输出变量 b

以字符串'yth'为例

第一次循环,i = 'y', b = 'y'

第二次循环,i = 't', b = 't' + 'y' => 'ty'

第三次循环,i = 'h', b = 'h' + 'ty' =>'hty'

方法二:反向切片

a = input("请输入字符串:")

b = a[::-1]

print(b)

第1行: 用input函数获取用户输入的字符串,赋值给变量a

第2行: 对字符串 a 切片,步长为-1, 即字符串的反转,将反转结果赋值给变量 b

第3行: 输出变量 b

方法三:反转列表

a = input("请输入字符串:")

b = list(a)

b.reverse()

c = ''.join(b)

print(c)

第1行: 用input函数获取用户输入的字符串,赋值给变量a

第2行: 创建变量b,将用户输入的字符串转化为字符串列表

第3行: reverse() 方法反转元素的排序顺序,用reverse()方法对列表b进行反转

第4行: 用字符串的join()方法遍历列表,合并成一个字符串

第5行: 输出变量c

方法四:递归

a = input("请输入字符串:")

def f(x):

    if len(x) <= 1:

        return x

    return f(x[1:]) + x[0]

print(f(a))

第1行: 用input函数获取用户输入的字符串,赋值给变量a

第2行: 定义函数 f,传入参数x

第3-4行: 设定递归算法的结束条件,即当参数 x 的长度 小于或等于 1 时,返回值为 x

第5行: 否则返回值为f(x[1:]) + x[0]

第7行: 为参数 x 赋值为 a, 并输出f(a)的结果

以字符串 'abcde' 为例

对于f('abcde'), 返回值为f('bcde') + 'a'

对于f('bcde'), 返回值为f('cde') + 'b'

对于f('cde'), 返回值为f('de') + 'c'

对于f('d'), 返回值为f('e') + 'd'

对于f('e'), 返回值为 'e' (因为len(e) = 1)

所以:

f('de')为'e' + 'd' => 'ed'

f('cde')为'ed' + 'c' => 'edc'

f('bcde')为'edc' + 'b' =>'edcb'

f('abcde')为'edcb' + 'a' =>'edcba'

方法五:reduce函数

from functools import reduce

a = input("请输入字符串:")

b = reduce(lambda x, y: y + x, a)

print(b)

第1行: 从functools模块中导入reduce()函数

第2行: 用input函数获取用户输入的字符串,赋值给变量a

第3行: 调用reduce函数,使用lambda表达式输出反转字符串,并赋值给变量b

第4行: 输出变量b

以字符串 'abcde' 为例

x = 'a' y = 'b'; y + x => 'b' + 'a' => 'ba'

x = 'ba' y = 'c'; y + x => 'c' + 'ba' => 'cba'

x = 'cba' y = 'd'; y + x => 'd' + 'cba' => 'dcba'

x = 'dcba' y = 'e'; y + x => 'e' + 'dcba' => 'edcba'

第11期-计算阶乘 (opens new window)中有详细讲解reduce函数和lambda表达式,大家可以查看哦~

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-kJWsGZIg62b2e1388fb73.jpeg

  • 发表于 2022-03-12 09:41
  • 阅读 ( 752 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1734 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章