题解 | #翻转单词序列#
翻转单词序列
https://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3
题目:
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
题目理解:
给出一个包含多个单词的句子, 希望将 单词顺序序列进行翻转;【注意,不翻转单词,只是将单词的顺序翻转一下】
比如,输入: nowcoder. a am I
输出:I am a nowcoder.
实现逻辑:
上一题,我们学习了Python的切片操作,它支持将列表的序列反向输出; 所以,目前的思路是,将输入的string 依次读入一个列表中保存; 然后将列表从最后一个输出;
实现代码:
class Soultion: def ReverseSentence(self, s): if (s == ""): return "" else: # 将串依次保存到列表中; s_list = s.split(' ') # 将列表内容的次序翻转后,返回; return ' '.join(s_list[::-1]) test = Soultion() s = input("请输入一句话:") print ("反转后的结果是:" + test.ReverseSentence(s))扩展学习:
1、split函数
split 是Python的一个内置函数,用来对字符串进行分隔,分隔后的字符串以列表的形式返回;
split 的语法: string.split("分隔符", 分隔次数) 1)string 为一个字符串变量; 2)参数1: 分隔符,表示split 会以参数1作为分隔条件, 参数1 可以为空,当参数1为空时,默认以空格、\t、\n 为分隔符; 3)参数2: 表示执行分隔的次数,如果参数2为空,则默认全部分隔;
一、不带参数的用法,举个例子: string_1 = "www.com aaa bbb 1234566.jpg" string_2 = "www.com\taaa\tbbb\t1234566.jpg" string_3 = "www.com\naaa\nbbb\n1234566.jpg" 则有如下执行结果: print string_1.split() ['www.com', 'aaa', 'bbb', '1234566.jpg'] print string_2.split() ['www.com', 'aaa', 'bbb', '1234566.jpg'] print string_3.split() ['www.com', 'aaa', 'bbb', '1234566.jpg'] 二、带参数1的用法,举个例子: string_1 = "www.com:aaa:bbb:1234566.jpg" 有如下执行结果: print string_1.split(':') ['www.com', 'aaa', 'bbb', '1234566.jpg'] 三、带参数2的用法,举个例子: string_1 = "www.com:aaa:bbb:1234566.jpg" 有如下执行结果: print string_1.split(':', 1) ['www.com', 'aaa:bbb:1234566.jpg'] print string_1.split(':', 2) ['www.com', 'aaa', 'bbb:1234566.jpg'] print string_1.split(':',3) ['www.com', 'aaa', 'bbb', '1234566.jpg']
2、join函数
上面的split函数,是用于将字符串拆分成列表, 那么这个函数就是反向操作,用于将序列中的元素使用指定的拼接符拼接成字符串;
join语法: str.join(sequence) 1) str:表示字符串; 2)sequence: 表示待拼接的序列,可以是列表,元组和字典; 举个例子: 用法一: str='-' a = ["hello", "world"] print str.join(a) 输出结果为:hello-world 用法二: a = ["hello", "world"] print '-'.join(a) [备注]:被拼接的序列,需要是字符串序列,否则会报错; 如,如果将 序列修改为: a = [1,2,3,4] 执行 print '-'.join(a) 会直接报错;