引入

如何将字符串进行反序使用呢?

  • 比如将“abc”变成“cba”

1.字符串

在以前学习的列表当中,我们可以使用名称[索引]的方式获取列表当中的数值,实际上,这在字符串中也是通用的,

#创建一个s字符串
s="abc"
print(s[0])
print(s[1])
print(s[2])

运行结果如下:

image-20200920172730968

因此,我们可以获得第一个使的字符串反序的方法,内容如下:

s="abc"

#利用+号进行字符串连接
print(s[2]+s[1]+s[0])

运行结果如下:

image-20200920173215993

总结 :字符串可以类似于列表一样,利用索引来将单个字符取出,使用的规则与列表是一致的

2.反序算法的优化

在刚才进行反序的过程当中,我们发现,我们使用的代码不具有通用性,如果我们将字符串变为4个字符,则我们需要使用如下代码来完成

s="abcd"
print(s[3]+s[2]+s[1]+s[0])

显然,如果我们有更多字符串去进行反序,那么我们的代码是不是越写越长,因此我们需要设计一个更加具有通用性的代码

s="abcde"

#获取字符串长度
n=len(s)

for i in range(n):
    print(n-1-i)

运行结果如下:

image-20200920174654000

  • len()函数是什么?
    len()函数用于获取字符串的长度,比如在本案例中,s的长度为5,因为有5个字符,因此,len(s)运算出来的最终结果就等于5
  • 为什么要使用n-1-i

image-20200920175914383

由此,我们就可以得到反序获得字符串的完整代码

s="abcde"
result=""
#获取字符串长度
n=len(s)

for i in range(n):
    result=result+s[n-1-i]

print(result)

3.第二种反序方法

在刚才的逆序当中,我们是使用长度减1在减去循环变量的方式来进行,但是,其实我们还是有更简便的方式,比如如果我们取到第一个字符s[0]和第二个字符s[1],那么正序排列就是s[0]+s[1],结果就是“ab”,如果逆序,那排列就是s[1]+s[0]的方式,我们只需要修改字符串连接的顺序就好了,根据这个思路,我们可以写出以下代码:

s="abcde"
result=""
#获取字符串长度
n=len(s)

for i in range(n):
    result=s[i]+result
print(result)

运行结果如下:

image-20200922163747186

4.数字的逆序

1.利用字符串进行逆序

在上节的最后练习当中,我们使用了整除和取余数的方式来获得了个位、十位、百位三个数字,并且实现逆序,在上面的内容当中,我们已经学会了如何对字符串进行逆序,因此,我们可以想到,那我们是不是能通过字符串的方式来对数字进行逆序?答案是可以的,因为我们有str()和int()函数,因此,我们可以很容易的写出以下代码:

number=123456
s=str(number)
result=""
#获取字符串长度
n=len(s)

for i in range(n):
    result=s[i]+result

print(int(result))

运行结果如下:

image-20200922164402873

这是一个功能,为了方便使用,我们还可以将其转换为函数来实现,代码如下:

def re(number):
    s=str(number)
    result=""
    #获取字符串长度
    n=len(s)

    for i in range(n):
        result=s[i]+result

    print(int(result))

#调用函数
re(123456)

运行效果与上图一致

2.利用纯数学的方法来进行逆序

想想看,以下代码会输出一些什么样的内容

print(56%10)
print(56//10)

print(78%10)
print(78//10)

你会发现,对于一个两位数来说,利用取整运算,可以去掉个位数,只留下十位数,利用取余运算,可以获得个位数的内容。
因此,我们可以利用取余运算,获得最右边的数字,并利用取整运去掉这个已经取走的数字,不断循环,则可以把所有的数字都取出,我们可以利用列表来对这些数字进行存储,代码如下:

target=178
result=[]

#获取长度
n=len(str(target))

#获取结果放在列表当中
for i in range(n):
    number=target%10
    target=target//10
    result.append(number)

#打印结果
for i in range(n):
    print(result[i])

运行结果如下:

image-20200922170511901

当然,同样,我们也可以使用函数的方式,来简化代码,与上例相似

5.综合练习

1.函数试炼

写一个函数,这个函数有一个参数x,这里X可能是整数也可能是字符串,你的函数要能处理两种可能的情况。输出x反转后的结果。(提示可以使用type(x)的方式判断x的类型)

2.函数试炼2

写一个函数,这个函数有一个参数x,这里x可能是整数也可能是字符串,你的函数要能处理两种可能的情况。将x反转后的结果接在x后面。注意最终处理完成后x的类型不能改变。(提示:可以使用type(x)的方式判断x的类型)

附件

反序算法PPT

最后修改:2021 年 01 月 09 日
如果觉得我的文章对你有用,请随意赞赏