day05-刷题-倒置字符串(逐词)

[编程题]倒置字符串
时间限制:1秒空间限制:32768K

将一句话的单词进行倒置,标点不倒置。
比如 I like beijing. 经过函数后变为:beijing. like I

  • 输入描述:
    每个测试输入包含1个测试用例: I like beijing.
    输入用例长度不超过100

  • 输出描述:
    依次输出倒置之后的字符串,以空格分割\

  • 示例1

输入

I like beijing.

输出

beijing. like I

解法一:

思路:python中的字符串是无法改变的,倒置一个字符串则需要要创建一个新的拷贝;最简单的方法,当然是步长为“-1”的切片:

ans = str[::-1]

便可完成按字符倒置

如果要是按单词来反转,需要三步完成:

 ans = str.split() #字符串按缺省值空格分割/分裂,此时str为一个list,list中每个元素为一个完整的单词(和标点符号,如果有的话)!
 ans.reverse()    #reverse 倒置字符串
 ans = ' '.join(result)  #拼接list中的每个元素形成完整新串
ans = ' '.join(astring.split()[::-1])

但是[::-1]降低了可读性,不过也可以这样写:

ans = ' '.join(reversed(astring.split()))

代码如下:

#-*- coding:utf-8 -*-
ans = list(input().split())[::-1] #split()指定分隔符进行切片 默认就是空格  [::-1]切片范围缺省,步进-1
print(' '.join(tmp for tmp in ans)) #join连接字符串list

主要利用split()指定分隔符切分/分裂函数,[::-1]python list灵活的切片操作,以及join格式化字符串list拼接

其中使用函数的文档,就算你不熟悉,一看便知
Python split()方法中文文档
Python join方法中文文档
join方法详解
split()函数详解

python切片操作

python的slice notation 切片操作//此切片非彼切片:)

我们把切片分为两种格式(给定步进值与不给定步进值)

比如给一个0~9的数组

a = [0,1,2,3,4,5,6,7,8,9]

tips:切片操作统一都是左闭右开

1.给定步进值-—b = a[i:j]

表示复制a[i]到a[j-1],以生成新的list对象

b = a[1:3] 那么,b的内容是 [1,2]
当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
当i,j都缺省时,a[:]就相当于完整复制一份a了

2.不给定步进值-—b = a[i:j:s]

表示复制a[i]到a[j-1],但s表示步进,缺省为1,即每向后一个值便取一个,如果s为2即隔一个取一个值

所以a[i:j:1]相当于a[i:j]

当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。

如果还不理解,自己拿个list去测试,就会明白了


同时此题看到网上大佬们的解法

解法二:

#! python3
#-*- coding:utf-8 -*-
import sys

if __name__=='__main__':
    for line in sys.stdin:
        print(' '.join(reversed(line.strip().split(' '))))

基本大同小异

其中几个点明白了就会理解

  • 1.reversed(seq) 相当于我们的反向迭代器
    seq – 要转换的序列,可以是 tuple, string, list 或 range。
    还不懂的话看文档: python3–reversed
tips:reversed()是python3特有的!
  • 2.strip()方法
    Python3 strip() 方法用于移除字符串头尾指定的字符(默认为空格)。

str.strip([chars]);
参数
chars – 移除字符串头尾指定的字符。

这里strip方法python2与python3共有,但略有不同

Python2—strip函数的参数char缺省值为为空格或换行符
Python3—strip函数的参数char缺省值为为空格

Python3-strip()方法
Python2-strip()方法

3.join(),split()见上文!

解法三:

大同小异,语句操作顺序不同

#-*- coding:utf-8 -*-
str_x = input().split() 
print(' '.join(str_x[::-1]))

猜你喜欢

转载自blog.csdn.net/Ego_Bai/article/details/80481262