网易极客战记官网codecombat|如何用高端的方式来说“我爱中国”

如何用高端的方式来说“我爱中国”,来看看怎么使用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))]

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值