Python五种方法实现字符串反向输出
本帖最后由 py看考场 于 2019-3-17 22:45 编辑这是假期练习python时的一个简单小例子,关键就是看实现的不同思路吧。。
方法1: for 循环
letter_num = list(input('please input some characters:'))
list_num = []
def convert_order():
for i in range(len(letter_num)):#根据列表的长度决定遍历的次数
list_num.append(letter_num)#把letter_num中的值倒序添加到新列表中
print(''.join(list_num))#把''无间隔符添加到list_num中每个元素的中间,总体效果就是把列表转换为字符串
convert_order()
https://static.52pojie.cn/static/image/hrline/1.gif
方法2: 递归 + 切片
# 方法二,递归,切片实现,巧妙
def des_output(s):#实现的功能是依次取最后一个元素
if (len(s) > 0):
print(s[-1],end ='')#负数下标,先打印最后一个元素
des_output(s)#从第一个元素到倒数第二个元素(从第一个元素到倒数第三个元素...)
s = input('string:')
des_output(s)
https://static.52pojie.cn/static/image/hrline/1.gif
方法3:reverse()方法
#方法三,用reverse()方法对列表操作取反,join()方法使列表转换为字符串
str = list(input('input a string:'))
str.reverse()#该方法没有返回值,若打印则出现None,但会对列表元素进行反向排序。因此用print(list)来查看排序即可
print(''.join(str))
https://static.52pojie.cn/static/image/hrline/1.gif
方法4:range()第三个参数
str = input('请输入字符串:')
for i in range(len(str) - 1, -1, -1):#起始,结束(不包含),反向步长.若len(str)==5,则循环【4,3,2,1,0】
print(str,end='')
https://static.52pojie.cn/static/image/hrline/1.gif
方法5:切片
str = list(input('String :'))
str1 = str[::-1]#注意前面两个冒号前不加数字表示整个列表
print(''.join(str1))
注意:根据大家的反馈,这里也可以不用把str转化为list,再转化str,
S = input('请输入字符串:')
print(S[::-1])
https://static.52pojie.cn/static/image/hrline/1.gif
好啦,今天就到这里啦,晚安:handshake:handshake:handshake py看考场 发表于 2019-3-15 11:56
欢迎大家提问与修正
>>> a = 'abc'
>>> a[::-1]
哦,我是想说这个来着
其实不用转list再转回来 就是字体颜色 比较看不清{:1_907:} 受教了,以前只会一个reserve {:301_997:}楼主继续加油,等着楼主分享更好的算法 最近正好在重温python。
感谢楼主分享。 本帖最后由 liangyun 于 2019-3-15 08:44 编辑
demo = 'hello, world'
''.join(list(demo)[::-1])
好吧这个和最后一个重复了 习惯用循环 代码不容易看啊 一直是用reverse,这次长见识了,谢谢分享 可以直接return s[::-1]