头歌实践平台(Educoder):python 教学案例三 字符类型及其操作
第1关 提取身份证号性别
sfzh=input("输入身份证号")
#代码开始
sex = sfzh[:17]
sex = int(sex)
if sex % 2 == 0:
print("性别女")
else:
print("性别男")
#代码结束
第2关 提取身份证号生肖
sfzh=input("输入身份证号")
#代码开始
# 生肖对应字符串
sxzf = "猴鸡狗猪鼠牛虎兔龙蛇马羊"
# 年份是身份证号的第6位到第9位
nf = sfzh[6:10] # 注意这里是6:10,因为切片操作是左闭右开的
# 计算生肖
# 出生年份对12的余数是int(nf) % 12,sxzf[int(nf) % 12]就是属相
shuxiang = sxzf[int(nf) % 12]
# 输出生肖
print("生肖" + shuxiang)
#代码结束
第3关 打印三角形
# 输入行数
hs = eval(input("请输入行数"))
# i从0循环到hs-1
for i in range(hs):
# 每行打印hs-1-i个空格和2*i+1个+号
print(" " * (hs - 1 - i) + "+" * (2 * i + 1))
第4关 打印钻石图形
# 输入行数
hs = eval(input("请输入行数"))
# 上半部分钻石
for i in range(hs):
print(" " * (hs - i - 1) + "+" * (2 * i + 1))
# 下半部分钻石
for i in range(hs - 2, -1, -1):
print(" " * (hs - i - 1) + "+" * (2 * i + 1))
第5关 身份证合法性检查
sfzh = input("输入身份证号")
# 去除空格
sfzh = sfzh.strip()
# 判断长度是否为18位
if len(sfzh) != 18:
print("长度错误")
else:
# 判断前17位是否都为数字
if not sfzh[:17].isnumeric():
print("不是数字")
第6关 身份证号校验码
sfzh=input("输入身份证号")
#代码开始
# 系数
xs = '79a584216379a5842'
# 校验码
jym = '10X98765432'
s = 0
# 计算累加和
for i in range(17):
if xs[i] == 'a':
s += 10 * int(sfzh[i])
else:
s += int(xs[i]) * int(sfzh[i])
# 计算校验码
remainder = s % 11
if jym[remainder] != sfzh[17]:
print("校验码错误")
#代码结束
第7关 统计字符串中的各类字符
x=input("请输入字符串")
#代码开始
sz=dxzm=xxzm=qt=hz=0
for c in x:
if c.isdigit():
sz=sz+1
elif c.isupper():
dxzm=dxzm+1
elif c.islower():
xxzm=xxzm+1
elif '\u4e00'<=c<='\u9fff':
hz=hz+1
else:
qt=qt+1
print("大写字母{}小写字母{}汉字{}数字{}其他{}".format(dxzm,xxzm,hz,sz,qt))
#代码结束
第8关 凯撒密码加密
x = input("输入明文:")
#代码开始
y=""
for c in x:
if "a"<=c<="z":
y=y+chr(ord("a") + (ord(c) - ord("a") + 3)%26)
else:
y=y+c
print("密文为:"+y)
#代码结束
第9关 选择题
1、s = “the sky is blue”,表达式 print(s[-4:], s[:-4])
的结果是: ( D )
A、
the sky is blue
B、
blue is sky the
C、
sky is blue the
D、
blue the sky is
2、设置变量x="hunan university",下列哪个表达式可以得到字符串"ytisrevinu" ( C )
A、x[6:]
B、x[-10::-1]
C、x[-1:5:-1]
D、x[6::-1]
3、表达式"5"*3+"6"的值是 ( C )
A、21
B、156
C、5556
D、536
4、设置变量x='abcdef' 下列哪个函数可以得到字符串x的长度6 ( C )
A、ord(x)
B、chr(x)
C、len(x)
D、str(x)
5、如果 p=ord(‘a’), 表达式 print(p,chr((p+3)%26+ord(‘a’))) 的结果是 ( C )
A、97 d
B、97 x
C、97 w
D、65
6、关于 Python 字符编码,以下选项中描述错误的是 ( C )
A、
chr(x) 和 ord(x) 函数用于在单字符和 Unicode 编码值之间进行转换
B、
print(chr(65)) 输出 A
C、
若变量x为大写字母,可以使用下列表达式得到其对应的小写字母 ord(chr(x)-65+97)
D、
print(ord(‘a’)) 输出 97
A、‘abc’ <’abcd’
B、‘Hello’ >'hello’
C、'abcd’ <'acbd’
D、‘A’!='a’
8、以下关于字符串类型的操作的描述,错误的是 ( B )
A、
str.replace(x,y)方法可返回字符串,把字符串str中所有的x子串都替换成y
B、
想获取字符串str的长度,用字符串处理函数 str.len()
C、
设 x ='aa',则执行x*3的结果是‘aaaaaa’
D、
想返回一个字符串,将str所有的字符都大写,用str.upper()
9、关于字符串的处理方法,以下正确的是 ( A )
A、
str.strip(chars)方法返回字符串str的副本,在str左侧和右侧去掉chars中列出的字符。缺省则去掉空格。
B、
str.upper()返回字符串str的副本,全部字符小写
C、
str.lower()返回字符串str的副本,全部字符大写
D、
str.find(str2)检测字符串中是否包含子字符串str2,若包含则返回True,不包含返回False。
作者:Yu_Meng~