1. 小说中的单词频次的统计
Re库:Re库是Python的标准库,主要用于字符串匹配。
方法 | 解释说明 |
re.search() | 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 |
re.match() | 从一个字符串的开始位置起匹配正则表达式,返回match对象 |
re.findall() | 搜索字符串,以列表类型返回全部能匹配的字符串 |
re.split() | 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型 |
re.finditer() | 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象 |
re.sub() | 字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 |
代码如下: |
# 小说中的单词频次的统计
import re # 导入正则表达式库
f = open('LOVE.txt', 'r') # 以只读的方式打开文件,注意文件路径
txt = f.read() # 读取进来的数据类型是字符串
f.close() # 关闭文件,释放内存
txt = txt.lower() # 将所有字母变为小写
# 去除小说中的标点符号(将txt文件中的,.?:"\'!-用空代替)
txt = re.sub('[,.?:"\'!-]', '', txt)
words = txt.split() # 单词分割
word_sq = {} # 单词频次统计容器
# 单词频次统计
for i in words:
if i not in word_sq.keys():
word_sq[i] = 1
else:
word_sq[i] += 1
# 利用键值对中的 值 来进行降序排列
a = sorted(word_sq.items(), key=lambda x: x[1], reverse=True)
print('该小说中的单词频次为:', a)
结果为:该小说中的单词频次为: [(‘the’, 7346), (‘and’, 4602), (‘of’, 3490), (‘to’, 3104), (‘a’, 3033),…]
2. 自定义求序列偶数个数的函数
# 自定义函数:求序列中偶数个数
def even(x):
z = 0
for i in x:
if i % 2 == 0: # if i % 2 != 0: 求奇数
z += 1
print('偶数位置:', [i])
return z
a = even([1, 2, 3, 4, 5, 6]) # 调用函数even()
print('序列中偶数的个数为:', a)
3. 求曲边图形的面积
将各小矩形的高度存放至一列表y中,将各高度x乘以宽度width,得各矩形面积,然后求和s/S。
代码如下:
# 求曲边图形的面积
import math # 导入数学库
n = 20000 # 分块数
width = 2*math.pi/n # 宽度
# 方法一:利用for循环构建
x = [] # 宽
y = [] # 高
for i in range(n):
x.append(i*width)
for i in x:
y.append(abs(math.sin(i)))
S = sum(y)*width
print('曲边图形的面积为:', '%.2f' % S)
# 方法二:利用列表推导式构建
s = [abs(math.sin(i*width))*width for i in range(n)]
print('曲边图形的面积为:', sum(s))
结果为:
曲边图形的面积为: 4.00
曲边图形的面积为: 3.999999999671082
4. 冒泡排序
对序列[17.00, 21.50, 65.07, 20.91, 2.00, 30.16, -10.01, 27.45]]按从小到大顺序进行排列
# 冒泡排序
x = [17.00, 21.50, 65.07, 20.91, 2.00, 30.16, -10.01, 27.45]
n = len(x) # 获取数组的长度
for i in range(n):
for j in range(i):
if x[j] > x[i]:
x[i], x[j] = x[j], x[i]
print('排序结果:', x)
排序结果: [-10.01, 2.0, 17.0, 20.91, 21.5, 27.45, 30.16, 65.07]