如何利用python倒置所输字符串的顺序
作者:戳苏
python菜鸟一只,本文仅供自己记录,所写代码难免有猫饼,如有错误以及可以改进的地方,还请各位多多海涵,不吝赐教。
一、 目的
如题,用python将输入的字符串倒置。
倒置情况如下
1. 输入字符串(内无空格)“abcd1234”
- 返回:“4321dcba”
2. 输入一串英文单词,进行单词内部倒置:
- 输入:“hello world”
- 返回:“olleh dlrow”
3. 输入一串英文单词,进行单词顺序倒置:
- 输入:“hello world”
- 返回:“world hello”
二、思路与方法
1. 首先明确
字符串有索引,字符串中第一个字符的索引为0,其他字符的索引按从左到右顺序依次+1
- a b c d
- 0 1 2 3
如果按倒序进行索引,则字符串中最后一个字符的索引为-1,其他字符的索引按从右到左的顺序依次-1
- a b c d
- -4 -3 -2 -1
预期实现的是将【输入】的字符串反转,需要明确,我们不知道输入的字符串中一共有几个字符。
于是用到for循环,遍历字符串中字符数:
k = "" m = 0 for i in a: m -= 1 k += a[m] print(k)
其中i是遍历的内容,但是我们不需要这些字符,于是没有用到i。m为字符串的索引。
k为空字符串,用来装倒置结果。
字符串的拼接用运算符即可。
(以上内容可以封装为一个函数,后面的内容就可以用到这个函数了)
def re(a): # 将输入的字符串倒置 m = 0 k = "" for i in a: m -= 1 k += a[m] return k
2. 单词内部倒置是以“空格”为间隔进行倒置
这次需要用到两个空的字符串k1和k2。
依然用for循环进行遍历,不过这时候因为我们加了一个条件:空格
这里就要用if条件语句
即:在遇到空格之前,我的字符串要完整保留,因为这是一个完整的单词,并把字符放到空字符串中,方便字符串倒置;在遇到空格的时候我要干什么呢?
首先,k1中已经有了一个完整的单词,我需要将其倒置
于是我将k1作为参数,放在函数re中,并得到一个结果,这个结果放到另一个空字符串k2中
k2是一个字符串,单词之间要有空格,于是在k2后面再加上一个空格字符
此时k1中还放着未倒置的单词,我需要用它在后面的循环中装新的单词,旧的单词就不需要了,于是可以将k1重新赋值为空字符串
输入到这里,发现,最后一个单词的末尾没有空格,if条件句就执行了一半,最后一个单词没有倒置,也没有输出
怎么办?
此时k1中放着的是最后一个单词,再用一次re函数,并用运算符加在k2上即可
代码如下:
k1 = "" k2 = "" for x in w: if x != " ": k1 += x else: k2 += re(k1) k2 += " " k1 = " " k1 = re(k1) k2 += k1 print(k2)
3. 输入一段英文
(可以是句子,句子后面没加标点)将这段英文中的单词顺序倒置
上面两个是遍历每一个字符,将每个字符分批倒置,这次是将数量不等的字符作为一个整体变换顺序。
即:将字符串按照空格切分,形成多个字符串,并倒置字符串的顺序
问题:如何放置数量不等的字符串?
答:一个空列表
问题:列表?列表怎么输出字符串呢?
答:列表只是一个过渡的工具,按照索引来把列表中的字符串放到空字符串中,输出的也是一条字符串。但别忘了空格哦
所以创建一个函数:
def put(a): # 将输入字符串按照空格进行分隔,打包成列表 k1 = "" k2 = [] for i in a: if i != " ": k1 += i else: k2.append(k1) k1 = "" k2.append(k1) return k2
结尾依然是最后一个单词要手动添加
这样我们就可以按照之前的思路进行倒置:
sent = str(input("输入一段英文,进行句子反转:")) sent1 = put(sent) string = "" m = 0 for i in sent1: m -= 1 string += sent1[m] string += " " print(string)
为什么没用re函数呢?
其实可以用,但是缺少了一点
re里没有在单词后面加空格。
输出的结果也就没有空格。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。