答案正确,程序规范,很好。
班级:软件22-4班 姓名:张权 学号:20222501435
通过编写函数实现下述各题。
1 应用正则表达式判断该字符串是否包含0~9的数字和大小写英文字母。
2 根据正则表达式使用中文逗号、中文句号、英文逗号、英文点号、英文感叹号、英文换行符号将该字符串分割成多个子串。
3 应用正则表达式提取该字符串中的日期时间字符串。
4 应用正则表达式提取该字符串中的诗词名称。
5 应用正则表达式提取该字符串中的姓名。
(在此部分包括问题和解决办法、心得体会;列出保持缩进格式的程序代码及运行结果截图,请注意保持格式统一,截图清晰,大小合适)
输入一字符串,各个子串之间按空白字符隔开,分别显式其中最长、最短子串,以及最大、最小字符。
#程序名 test1.py
#功能:显式字符串中最长、最短子串,以及最大、最小字符
#作者:张权
#学号:20222501435
#日期:2023.3.27
# 字符串列表
x=input('请输入一段字符串,字串之间用空格分开:')
y=x.split(" ")
y.sort(key=len)
print("字符串中最短字串为:",y[0])
y.sort(key=len,reverse=True)
print("字符串中最长字符串为:",y[0])
y.sort()
print("字符串中最小字符为:",y[0])
y.sort(reverse=True)
print("字符串中最大字符为:",y[0])
copy
运行结果截图为:
输入单个字符,判断并显示该字符是否为大写英文字母、小写英文字母、非英文文字字符、空格、数字或者其它字符。
#程序名 test2.py
#功能:判断输入字符的形式
#作者:张权
#学号:20222501435
#日期:2023.3.26
x=input('请输入一个字符')
if x.isupper() is True:
print(x,'是大写英文字母')
elif x.islower() is True:
print(x,'是小写英文字母')
else:
if x>='0'and x<='9':
print(x,'是非英文文字字符还是数字')
elif x.isspace() is True:
print('该字符是非英文文字字符还是空格')
else:
print(x,'为其他字符')
copy
运行结果截图为:
输入一字符串,各个子串之间按空白字符隔开,要求将其中的纯英文子串的大写字母改为小写,含数字的子串中的阿拉伯数字改写为对应的汉字,并且将所有空白字符改写为'%'。
#程序名 test3.py
#功能:将其中的纯英文子串的大写字母改为小写,含数字的子串中的阿拉伯数字改写为对应的汉字,并且将所有空白字符改写为'%'
#作者:张权
#学号:20222501435
#日期:2023.3.29
x=input('请输入一字符串,每个字串之间用空白字符隔开:')
y=x.split(' ')
t=0
for i in y:
if i.isalpha():
i=i.lower()
y[t]=i
t=t+1
else:
t=t+1
x=' '.join(y)
table=''.maketrans('0123456789','零一二三四五六七八九')
x=x.translate(table)
x=x.replace(' ','%')
print(x)
copy
运行结果截图为:
字符串加密与解密,输入一字符串,按如下规则加密,将原文中每个字符转换为对应的ascii码后,再将该ascii码加上一100至200之间的整数得到的数值即为该字符对应的密文;解密即为上述过程的逆运算。将该字符串加密后再解密,并且显示原文、密文、解密后文本。
#程序名 test4.py
#功能:字符串的加密和解密
#作者:张权
#学号:20222501435
#日期:2023.3.29
import random
s=random.randint(100,200)
text=input("请输入一段字符串:")
text1=[]
text2=[]
x=0
y=0
for i in text:
text1.append(str(ord(i)+s))
text1="".join(text1)
while y<len(text1):
text2.append((chr(int(text1[y])*100+int(text1[y+1])*10+int(text1[y+2])-s)))
y=y+3
text2=''.join(text2)
print("原文为:",text)
print("密文为:",text1)
print("解密后文本为:",text2)
copy
运行结果截图为:
输入一字符串,要求统计出该字符串中出现频率最高的字符。
#程序名 test5.py
#功能:统计出字符串中出现频率最高的字符
#作者:张权
#学号:20222501435
#日期:2023.3.27
x=input('请输入一段字符串:')
y={}
a=0
print("出现频率最高的字符为:",end='')
for i in x:
if i is not y:
y[i]=x.count(i)
for key,value in y.items():
if value==max(y.values()):
print(key,end=' ')
copy
运行结果截图为:
1 应用正则表达式判断该字符串是否包含0~9的数字和大小写英文字母。
#程序名 test6.1.py
#功能:应用正则表达式判断该字符串是否包含0~9的数字和大小写英文字母
#作者:张权
#学号:20222501435
#日期:2023.3.29
import re
s="马丽于2022-4-29 10:10刊发了一首诗《Listen to me》," \
"诗词的大意是:\n Mama you taught me to do the right " \
"things,\n So now you have to let your baby " \
"fly.\n You've given me everything that I will need,\n " \
"To make it through this crazy thing called life,\n Thank you Mum!"
x=re.search('[a-z]',s)
if x:
x=re.search('[A-Z]',s)
if x:
x=re.search('[0-9]',s)
if x:
print("该字符串包含0-9的数字和大小写英文字母")
else:
print("该字符串不包含0-9的数字或大小写英文字母")
else:
print("该字符串不包含0-9的数字或大小写英文字母")
else:
print("该字符串不包含0-9的数字或大小写英文字母")
copy
运行结果截图如下:
2 根据正则表达式使用中文逗号、中文句号、英文逗号、英文点号、英文感叹号、英文换行符号将该字符串分割成多个子串。
#程序名 test6.2.py
#功能:根据正则表达式使用中文逗号、中文句号、英文逗号、英文点号、英文感叹号、英文换行符号将该字符串分割成多个子串。
#作者:张权
#学号:20222501435
#日期:2023.3.29
import re
s="马丽于2022-4-29 10:10刊发了一首诗《Listen to me》," \
"诗词的大意是:\n Mama you taught me to do the right " \
"things,\n So now you have to let your baby " \
"fly.\n You've given me everything that I will need,\n " \
"To make it through this crazy thing called life,\n Thank you Mum!"
print(re.split('[,。\.,\\n]',s))
copy
运行结果截图为:
3 应用正则表达式提取该字符串中的日期时间字符串。
#程序名 test6.3.py
#功能:应用正则表达式提取该字符串中的日期时间字符串。
#作者:张权
#学号:20222501435
#日期:2023.3.30
import re
s="马丽于2022-4-29 10:10刊发了一首诗《Listen to me》," \
"诗词的大意是:\n Mama you taught me to do the right " \
"things,\n So now you have to let your baby " \
"fly.\n You've given me everything that I will need,\n " \
"To make it through this crazy thing called life,\n Thank you Mum!"
print(re.findall('[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}',s))
copy
运行结果截图如下:
4 应用正则表达式提取该字符串中的诗词名称。
#程序名 test6.4.py
#功能:应用正则表达式提取该字符串中的诗词名称。
#作者:张权
#学号:20222501435
#日期:2023.3.30
import re
s="马丽于2022-4-29 10:10刊发了一首诗《Listen to me》," \
"诗词的大意是:\n Mama you taught me to do the right " \
"things,\n So now you have to let your baby " \
"fly.\n You've given me everything that I will need,\n " \
"To make it through this crazy thing called life,\n Thank you Mum!"
print(re.findall(r'[《](.*)[》]',s))
copy
运行结果截图如下:
5 应用正则表达式提取该字符串中的姓名。
#程序名 test6.5.py
#功能:应用正则表达式提取该字符串中的姓名。
#作者:张权
#学号:20222501435
#日期:2023.3.30
import re
s="马丽于2022-4-29 10:10刊发了一首诗《Listen to me》," \
"诗词的大意是:\n Mama you taught me to do the right " \
"things,\n So now you have to let your baby " \
"fly.\n You've given me everything that I will need,\n " \
"To make it through this crazy thing called life,\n Thank you Mum!"
pattern=re.compile(r'([\u4e00-\u9fa5]+)于')
match=pattern.search(s)
print(match.group(1))
copy
运行结果截图如下:
(包括问题和解决办法、心得体会、意见与建议等)
1.问题:在本次实验中需要用到列表和字典等之前的知识,而我将这些知识遗忘了,做起来很困难。
解决办法:根据同学的讲解并结合书上的知识解决了问题。
2.问题:用for循环时,有时忘记了i是列表中的元素,而错误的当成了整形,导致程序报错。
解决办法:进行多次联系,熟悉掌握。
心得体会:要多复习之前的知识,将知识连贯起来使用,否则做题时会导致知识使用不连贯。
学习时间 0分钟
操作时间 0分钟
按键次数 0次
实验次数 2次
报告字数 8368字
是否完成 完成