1.输入一行字符,统计字符串中包含数字的个数
str = input("请输入一串字符:")
a = {}
for i in str:
a[i] = str.count(i)
print(a)
2.已知字符串:"this is a test of python". 按要求执行以下操作:
(1)统计该字符串中字母s出现的次数
(2)取出子字符串"test"
(3)将字符串中每个单词的第一个字母变成大写, 输出到显示器。
(4)用两种方式实现该字符串的倒叙输出
str = "this is a test of python"
print(str.count("s")) # (1)
print(str.split()[3]) # (2)
print(str.title()) # (3)
s1 = str.split(" ") # (4) 第一种方法
for i in s1[::-1]:
print(i, "", end="")
print(" ".join(str.split(" ")[::-1])) #第二种方法
3.给定一个字符串来代表一个学生的出勤记录 ,这个记录仅包含以下三个字符:
‘A’ : Absent ,缺勤 ‘L’:Late,迟到 ‘P’ : Present .到场
如果一个学生的出勤记录中不超过一个A(缺勤)并且不超过两个连续的L(迟到)那么这个学生会被奖赏。 你需要根据这个学生的出勤记录判断他是否会被奖赏。
示例1: 输入: "PPALLP"输出: True
示例2: 输入: "PPALLL"输出:False
A = "缺勤"
L = "迟到"
P = "到场"
a = input("请输入学生的出勤记录:")
if a.count("A") <= 1 and a.count("LLL") == 0:
print("True")
else:
print("False")
4.有一身份证号,判断此为男还是女,(身份证为18位)
a = input("请输入身份证号:")
b = int(a[16:17])
if b % 2 == 0:
print("男")
else:
print("女")
5.如下字符串,01#张三#20-02#李四#30-03#王五#40……,解析每个人分数多少。样式如下:
01 张三 20
02 李四 30
03 王五 40 ,并且计算总分。
a = "01#张三#20-02#李四#30-03#王五#40"
list1 = a.split("-")
list2 = [item.split("#") for item in list1]
print(list2)
sum = 0
for item in list2:
sum += int(item[2])
print(sum)
6.检测某一个标识符是否是python的合法标识符(请分别用字符串函数和正则表达式两种方法完成)
# 方法一
s = input("请输入字符串:")
if s[0].isalpha() or s[0] == "_":
for j in range(1, len(s)):
if s[j].isalnum() == False and s[j] != "_":
print("标识符非法")
break
else:
print("标识符合法")
else:
print("标识符非法")
# 方法二
while True:
l = input('请输入字符串:')
if l == 'exit':
break
if l[0].isalpha() or l[0] == '_':
for i in l[1:]:
if not (i.isalnum() or i == "_"):
print('标识符不合法')
break
else:
print('标识符合法')
else:
print('标识符不合法')
7.随机生成验证码:
很多网站的注册登录业务都加入了验证码技术,以区分用户是人还是计算机,有效地防止刷票、论坛灌水、恶意注册等行为。目前验证码的种类层出不穷,其生成方式也越来越复杂,常见的验证码是由大写字母、小写字母、数字组成的六位验证码。
import random
a = ""
for i in range(6):
b = random.randint(1, 3) # b=1,大写字母,b=2,小写字母,b=3,数字
if b == 1: # A(65)-Z(90)
c = random.randint(65, 90)
a = a + chr(c)
elif b == 2: # a(97)-z(122)
c = random.randint(97, 122)
a = a + chr(c)
elif b == 3:
c = random.randint(0, 9)
a = a + str(c)
print(a)
8.编程匹配简单的以www.开头以.com结尾的web域名,例如www.baidu.com
import re
patt = 'www.+\.com'
m = re.match(patt, 'www.baidu.com')
if m is not None: m.group()
print(m)
9.判断某一个字符串是否符合如下规则:用一个空格分隔的任意一对单词,比如名和姓,若符合,输出字符串,否则输出“匹配失败”。
import re
a = input("请输入字符串:")
for i in a:
if re.match(r'\s', i):
print("匹配成功")
break
else:
print("匹配失败")
10.匹配一个点(.)和一个空格分开的一字母和一个单词,如英国人名中的姓和名。
import re
s = "xian ming.xiao wang"
re.findall('\w+', s)
print(s)
11.利用正则表达式匹配163邮箱地址,以检测输入的邮箱是否合法.
import re
a = input("请输入邮箱地址:")
while True:
b = re.match("^163\w", a)
if b:
print("邮箱地址合法")
break
else:
print("邮箱地址不合法")
break
else:
print("邮箱地址不合法")
12.假设有一段英文,其中有单独的字母“I”误写为“i”,请编写程序进行纠正。例如,这一段英文是: "i am a teacher,i am man, and i am 38 years old.I am not a businessman.",请编写程序,将文中的i改为I,要求用户两种方法完成。
# 方法一
import re
a = "i am a teacher,i am man, and i am 38 years old.I am not a businessman."
b = re.compile(r"(?:[^\w]|\b)i(?:[^\w])")
while True:
c = b.search(a)
if c:
if c.start(0) != 0:
a = a[:c.start(0) + 1] + "I" + a[c.end(0) - 1:]
else:
a = a[:c.start(0)] + "I" + a[c.end(0) - 1:]
else:
break
print(a)
# 方法二
a = "i am a teacher,i am man, and i am 38 years old.I am not a businessman."
b = a.replace("i", "I")
print(b)
13.有一段英文文本,其中有单词连续重复了2次,编写程序检查重复的单词并只保留一个。例如文本内容为“This is is a desk.”,程序输出为“This is a desk.”
a = "This is is a desk"
b = re.compile(r"\b(\w+)(\s+\1){1,}\b")
c = b.search(a)
a = b.sub(c.group(1), a)
print(a)
14.判断手机号所属运营商
说到手机号大家并不陌生,一个手机号码由11位数字组成,前3位表示网络识别号,第4~7位表示地区编号,第8~11位表示用户编号。因此,我们可以通过手机号前3位的网络识别号辨别手机号所属运营商。在我国手机号运营商有移动、联通、电信,各大运营商的网络识别号如表1所示。
表1 运营商和网络识别号
运营商 | 号码段 |
移动 | 134、135、136、137、138、139、147、148、150、151、152、157、158、 159、165、178、182、183、184、187、188、198 |
联通 | 130、131、132、140、145、146、155、156、166、185、186、175、176 |
电信 | 133、149、153、180、181、189、177、173、174、191、199 |
本实例要求编写程序,实现判断输入的手机号码是否合法以及判断其所属的运营商的功能。
import re
tel = input("请输入电话号码:")
if re.match(r"^1\d{10}", tel):
if re.match(r"^13[4-9]\d{8}", tel) or \
re.match(r"^14[78]\d{8}", tel) or \
re.match(r"^15[012789]\d{8}", tel) or \
re.match(r"^165\d{8}", tel) or \
re.match(r"^178\d{8}", tel) or \
re.match(r"^18[23478]\d{8}", tel) or \
re.match(r"^198\d{8}", tel):
print("中国移动")
elif re.match(r"^13[0-2]\d{8}", tel) or \
re.match(r"^14[056]\d{8}", tel) or \
re.match(r"^15[56]\d{8}", tel) or \
re.match(r"^166\d{8}", tel) or \
re.match(r"^17[56]\d{8}", tel) or \
re.match(r"^18[56]\d{8}", tel):
print(" 中国联通")
else:
print("中国电信 ")