本节概要
- 字符串拼接
- 字符串切片
- 字符串方法startswith(),endswith()
程序实例5
本节我们继续丰富学生成绩录入这个程序。假设我们学校中有几名复姓呼延的少数民族同学,他们能够享受少数民族加分政策,因此在录入姓氏为呼延的同学时需要给他的分数加1分。
为了实现这个功能有两种思路。思路一,我们在输入的时候把姓和名分开输入,然后判断姓氏是否为呼延,最后再把姓和名拼接成完整的名字并输出。思路二,输入姓氏不变仍然为姓名一起输入,但是我们在程序中从输入的姓名中抽取出姓并判断是否为呼延,最后输出信息。
我们先来实现思路一。思路一的重点在于如何把分开输入的姓和名合并为一个整体,这就涉及到字符串的拼接。字符串拼接在python中十分简单,只需要把想拼接起来的字符串用加号+连接起来即可:
>>> a = "abc"
>>> b = "123"
>>> c = "。!"
>>> a + b
>>> "abc123"
>>> a + b + c
>>> "abc123。!"
因此我们只需要把程序开头输入部分稍加改变,就可以实现对特定姓氏同学加分的功能:
last_name = input()
first_name = input()
score = input()
score = int(score)
if last_name == "呼延":
score += 1 #这条语句等价于score = score + 1
...
这种思路输入的时候需要姓和名分别输入有些麻烦,我们再来看看思路二实现能不能方便一些。思路二要求我们从一个字符串中截取一部分出来,这个操作与字符串的合并正好相反,我们可以通过字符串切片来实现。我们通过以下几个小例子来看看字符串切片到底是怎么使用的。
>>> a = "abcdefg"
>>> a[0:3] #截取从第0个到第3个字符之前的子字符串
>>> "abc"
>>> a[1:3] #截取从第1个到第3个字符之前的子字符串
>>> "bc"
>>> a[:3] #截取从开头到第3个字符之前的子字符串
>>> "abc"
>>> a[3:] #截取从第3个到字符串结尾的子字符串
>>> "defg"
>>> a[3:-1] #截取从正数第3个到倒数第1个字符之前的子字符串
>>> "def"
需要注意的地方是python中计数是从0开始的而不是从1开始。例用字符串切片,我们可以把之前的小程序开头改造成如下的形式:
name = input()
last_name = name[:2] # 截取姓名的前两个字符
score = input()
score = int(score)
if last_name == "呼延":
score += 1
...
在上面的程序中,我们截取name的前两个字符只为了判断是否为呼延,后面再没有用处了。那么我们能否直接判断name是否以呼延开头而不用再自己去截取前两个字符了呢?答案是可以的,我们可以通过字符串的startswith()函数来判断该字符串是否以某字符串开头。给出startswith()的几个示例:
>>> a = "abcde"
>>> a.startswith("abc")
>>> True
>>> a.startswith("a")
>>> True
>>> a.startswith("c")
>>> False
使用startswith()来实现完整的程序如下:
print("请输入姓名:")
name = input()
print("请输入成绩:")
score = input()
score = int(score)
# 判断是否姓呼延
if name.startswith("呼延"):
score += 1
print("享受加分政策,+1分")
if score >= 60:
level = '合格'
else:
level = '不合格'
print("{0}同学你的分数为{1}分,等级为【{2}】".format(name, score, level))
我们运行上面的代码,最终效果如下所示:
与startswith()方法相对的是endswith()方法,其作用的判断字符串是否以某字符串结尾,使用方法与startswith()一样,请读者朋友们自行尝试。
本节总结
本节主要介绍的内容包括:
- 字符串拼接,通过+对多个字符串进行拼接。
- 字符串切片,截取字符串的一部分。通过str[start:end]的方式进行截取,切片序号可以是正整数表示,也可以是负整数。当切片序号为负整数时表示倒数。
- 判断字符串是否以某字符串开头/结尾的方法startswith(),endswith()。
字符串的相关操作今后会非常高频地使用,请大家好好练习熟练掌握。
下一节将介绍循环语句,届时我们运行一次程序就能输入多名同学的信息而不像现在每次运行只能输入一名同学的信息。我们下一节再见吧。