八一干货:如何用高端的方式来说“我爱中国”

发布于 2019年12月17日

今日建军节干货——如何用高端的方式来说“我爱中国”,来看看怎么使用Python来输出“国 中国 爱中国 我爱中国”

简单分析问题:从字符串的末尾开始循环输出字段。

字符串索引

字符串是字符的有序集合,得益于此,在Python中,我们可以直接使用索引来提取字符串中的任意字符,其用法同数组。

创建一个变量,把字符串“我爱中国”给赋进去。同数组一样,其索引的排序也是从0开始:

我们如果需要提取“中”字,我们可以这样写:

直接使用str[2]来调用:

因此我们如果要输出第一个文字,“国”,直接使用str[3]即可。

除了正着调用,我们还可以用负数,倒着进行调用:

如果是倒着调用的话,其索引略有不同,排序是从-1开始,倒着排,第一个字符的索引为-4,而最后一个字符的索引是-1,也是从小到大的顺序。

结合负数的索引,我们就能很方便地调用任何一个字符串的最后一个字符了:

str[-1]

这样的结果也是"国"字。

字符串截取

单个字符的输出搞定了,那多个字符呢,如果要输出字符串内的“爱中”二字,我们还能这样写:

我们可以使用冒号进行截取,str[1:3],可以发现截取是从第1个字符,到第3个字符前,因此[1:3]的结果会是“爱中”二字,如果是[1:2],就会只是一个"爱"字了。

因此如果我们想要得到"爱中国"三个字,我们可以这么写:

str[1:4]

而因为这三个字又是字符串的倒数三个字符,因此我们还可以这样写:这表示截取从-3开始后的所有字符,效果如图:

str[-3:]

这表示截取从-3开始后的所有字符,效果如图:

输出

了解了这两个小知识,要输出“国 中国 爱中国 我爱中国” 这四个字段就非常简单了。

正着来:

str="我爱中国"

print(str[3:],str[2:],str[1:],str[0:])

(右滑查看完整代码)

倒着来:

str="我爱中国"

print(str[-1:],str[-2:],str[-3:],str[-4:])

(右滑查看完整代码)

(效果相同)

这样一来本题就算答完了。

但是,这种手动指向的代码一点也不高端,而且也不具备通用性,如果改成5个字符6个字符,下方代码还要跟着改变,为了Geek,我们来把这个答案变得高端且具有一定的通用性。

更好的输出

要有通用性,我们得用上input()函数,让用户自由输入想要输出的字符串。

str = input()

input()函数的作用十分简单,写上去,用户输入的内容就能被赋入你设置的变量内。

根据上面写的两段代码,我们可以看到,无论是正着输出还是倒着输出,都是递减的,倒着输出时,单看数字是递增的,因此我们可以使用一个for循环来进行输出:

str=input()

forxinrange(len(str)):

   print(str[-(x+1):])

由于for循环是从0开始递增的,而我们的“国”字其索引是从-1开始的,因此我们在print的时候需要帮索引x+1,并加上一个负号,结合上x在数组长度len()循环的条件,就能够使其能够从-1开始,循环到-4为止。

效果如图,这样,无论你想要输入什么,系统都能按本题要求进行输出。

那么今天就拿这段代码作为中国解放军们的节日祝福啦。

Tips

根据上面写的两段代码,我们可以看如果觉得三行的代码还不够精简的话,可以利用for循环的特性,用一个中括号来包含输出和循环的语句:

str=input()

[print(str[-(x+1):])forxinrange(len(str))]

大家也许还可以再琢磨琢磨,看看有没有一行代码就能达到本题要求的办法~