“Python 语言程序设计实验2023春季”实验报告

实验报告三 字符串与正则表达式(3月31日23:00截止)

实验三 字符串与正则表达式

班级:软件22-12 姓名:宋思睿

一、实验目的

  1. 理解转义字符、ASCII、UTF-8的基本概念与应用;
  2. 掌握字符串常用方法。
  3. 掌握正则表达式基本语法;
  4. 理解正则表达式扩展语法;
  5. 掌握正则表达式模块re的常用函数;

二、实验内容

通过编写函数实现下述各题。

1.输入一字符串,各个子串之间按空白字符隔开,分别显式其中最长、最短子串,以及最大、最小字符。

2.输入单个字符,判断并显示该字符是否为大写英文字母、小写英文字母、非英文文字字符、空格、数字或者其它字符。

3.输入一字符串,各个子串之间按空白字符隔开,要求将其中的纯英文子串的大写字母改为小写,含数字的子串中的阿拉伯数字改写为对应的汉字,并且将所有空白字符改写为'%'。

4.字符串加密与解密,输入一字符串,按如下规则加密,将原文中每个字符转换为对应的ascii码后,再将该ascii码加上一 100 100至 200 200之间的整数得到的数值即为该字符对应的密文;解密即为上述过程的逆运算。将该字符串加密后再解密,并且显示原文、密文、解密后文本。

5.输入一字符串,要求统计出该字符串中出现频率最高的字符。

6.令字符串 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!' ,通过编写函数实现下述各题功能。

1 应用正则表达式判断该字符串是否包含0~9的数字和大小写英文字母。

2 根据正则表达式使用中文逗号、中文句号、英文逗号、英文点号、英文感叹号、英文换行符号将该字符串分割成多个子串。

3 应用正则表达式提取该字符串中的日期时间字符串。

4 应用正则表达式提取该字符串中的诗词名称。

5 应用正则表达式提取该字符串中的姓名。

三、实验步骤及结果

1.

input_string = input("请输入字符串:")
substrings = input_string.split(" ")
 
min_substring = substrings[0]
max_substring = substrings[0]
min_char = input_string[0]
max_char = input_string[0]
 
for substring in substrings:
    if len(substring) < len(min_substring):
        min_substring = substring
    elif len(substring) > len(max_substring):
        max_substring = substring
 
    for char in substring:
        if ord(char) < ord(min_char):
            min_char = char
        elif ord(char) > ord(max_char):
            max_char = char
 
print("最短子串为:" + min_substring)
print("最长子串为:" + max_substring)
print("最小字符为:" + min_char)
print("最大字符为:" + max_char)
copy

图片描述

2.

a = input('请输入一个字符:')
b = ord(a)

if  48<=b<=57:
  print('这是一个数字')
elif 65<=b<=90:
  print('这是一个大写字母')
elif 97 <= b <= 122:
  print('这是一个小写字母')
else:
  print('这是一个符号')
copy

图片描述

3.

import re

def number_to_chinese(match):
    num = match.group(0)
    chinese_num_dict = {
        '0': '零',
        '1': '一',
        '2': '二',
        '3': '三',
        '4': '四',
        '5': '五',
        '6': '六',
        '7': '七',
        '8': '八',
        '9': '九'
    }
    chinese_num = ''
    for n in num:
        chinese_num += chinese_num_dict[n]
    return chinese_num

text = input('请输入字符串:')
text = re.sub(r'\b([A-Za-z]+)\b', lambda match: match.group(1).lower(), text)
text = re.sub(r'\d+', number_to_chinese, text)
text = re.sub(r'\s', '%', text)

print(text)
copy

图片描述

4.

import random
print('原文')
lll=input()
list(lll)
a=len(lll)
w=[]
eee=[]
s=random.randint(100,200)
for i in range(0,a):
    w.append(1)
    w[i]=ord(lll[i])+s
print('密文')
print(w)
for i in range(0,a):
    w[i]-=s
    eee.append('q')
    eee[i]=chr(w[i])  
print('解文')
print(eee)
copy

图片描述

5.

Str = input("请输入一串字符:")
resoult = {}  # 定义一个空字典
for i in Str:  # 遍历输入的字符串,以键值对的方式存储在字典中
    resoult[i] = Str.count(i)  
for key in resoult:  # 遍历字典,格式化输出结果
    print(f'"{key}":{resoult[key]}次')
copy

图片描述

6.

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!'''
if re.findall('/d+ and lw+',s)!=None:
    print("包含0~9的数字和大小写英文字母")
s1 = re.split('[,。,.;!\\n]+', s)
print(s1)
print(re.findall('\d+[-]\d+[-]\d+ \d+[:]\d+',s))
print(re.findall('《.*》',s))
print(re.findall('\A.{2}',s))
copy

图片描述

四、实验小结

问题与解决办法

  1. int 类型问题,解决方法:问同学,改类型即可

  2. TypeError: 'str' object does not support item assignment 字符串类型不可更改其内容

    心得体会:

  3. python真好玩

最新评论

本次实验解题逻辑清晰,内容完整,格式符合要求。

2023-06-09 18:33:00
回复