Python大数据处理实验报告(二)
- 游戏开发
- 2025-09-16 07:57:01

实验目的
1. 通过编写程序实现矩阵操作,包括矩阵相减和遍历矩阵元素。
2. 练习使用计算机工具求解矩阵的逆,并验证逆矩阵的正确性。
3. 熟悉递归算法的应用,通过解决汉诺塔问题加深对递归的理解。
4. 实践使用循环结构解决约瑟夫问题,加强对循环的掌握。
5. 编写密码检查程序,加强对字符串处理和条件判断的能力。
实验要求 随机生成两个4*4的矩阵X和Y,要求用for循环取出X,Y矩阵对应位置的值,将其相减后放入新的矩阵Z中随机输入一个矩阵,求它的逆矩阵并验证汉诺塔问题:有3根柱子,第一根有N个盘子,从上往下越来越大。要求把第一根柱子的N个盘子全部移到第三根柱子上,在移动过程中,始终只能小盘子压着大盘子,而且每一次只能移动一个盘子。有n个人围成一圈,顺序排号。从第一个人开始报数(从1到5报数),凡报到5的人退出圈子,问最后留下的是原来的第几号。某网站要求对用户设置的密码进行检查,密码长度介于6到12个字符,且必须同时包含大小写字母、数字、及[@,#,*]三个特殊符号中的一种。输入:一系列以逗号分隔的密码,输出:符合要求的以逗号分隔的密码。 实验代码题目一源代码:
import numpy as np
X = np.random.randint(0, 10, (4, 4))
Y = np.random.randint(0, 10, (4, 4))
Z = np.zeros((4, 4), dtype=int)
for i in range(4):
for j in range(4):
Z[i][j] = X[i][j] - Y[i][j]
print("X:")
print(X)
print("Y:")
print(Y)
print("Z:")
print(Z)
print("X-Y:")
print(X-Y)
题目二源代码:
import numpy as np
# 从键盘输入矩阵
n = int(input("请输入矩阵的阶数: "))
matrix = np.zeros((n, n))
print("请输入矩阵内的元素:")
for i in range(n):
matrix[i] = input().split()
# 判断矩阵是否可逆
if np.linalg.det(matrix) != 0:
# 求逆矩阵
Ni_matrix = np.linalg.inv(matrix)
# 验证
result = np.dot(matrix, Ni_matrix)
print("\n原始矩阵:\n", matrix)
print("\n逆矩阵:\n", Ni_matrix)
print("\n验证结果:\n", result)
else:
print("\n该矩阵不可逆。")
题目三源代码:
def hanoi_tower(N, F, T, S):
if N == 1:
print(f"Move disc 1 from {F} to {T}")
return
hanoi_tower(N-1, F, S, T)
print(f"Move disc {N} from {F} to {T}")
hanoi_tower(N-1, S, T, F)
N = int(input("请输入有几个盘子:"))
F = 'A'
T = 'C'
S = 'B'
hanoi_tower(N, F, T, S)
题目四源代码:
def find_last_person(n):
people = list(range(1, n+1))
index = 0
while len(people) > 1:
index = (index + 4) % len(people) #减少index增量考虑每次pop之后的长度变化
people.pop(index)
return people[0]
n = int(input("请输入总人数:"))
last_person = find_last_person(n)
print("最后留下的是原来的第", last_person, "号")
题目五源代码:
import re
def check_password(password):
# 使用一个正则表达式同时匹配所有条件:长度6-12位,包含小写字母、大写字母、数字和特殊符号
if re.match("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#*])[a-zA-Z0-9@#*]{6,12}$", password):
return True
else:
return False
def filter_passwords(passwords):
valid_passwords = [password for password in passwords if check_password(password)]
return valid_passwords
passwords = input("请输入一个或多个以逗号分隔的密码: ").split(",")
valid_passwords = filter_passwords(passwords)
print("符合要求的密码为: " + ",".join(valid_passwords))
实验结果图 1 题目一运行结果截图
图 2 题目二运行结果截图
图 3 题目三运行结果截图
图 4 题目四运行结果截图
图 5 题目五运行结果截图
实验体会1. 通过实现矩阵操作,我加深了对矩阵运算的理解,尤其是使用for循环逐元素操作的方法。这让我更熟练地处理矩阵数据。
2. 求解矩阵的逆矩阵并验证的过程中,我学会了如何使用计算机工具进行线性代数运算,这对我理解线性代数知识起到了很好的辅助作用。
3. 解决汉诺塔问题时,我深刻体会到了递归算法的思想和应用。这让我对递归有了更深入的认识,也提升了我的问题解决能力。
4. 解决围成一圈报数问题,我加强了对循环结构和约瑟夫问题的理解,锻炼了我的逻辑思维能力和编程技巧。
5. 编写密码检查程序让我更加熟练地运用条件判断和字符串处理,同时也提高了我对密码安全性检查的认识,对网络安全有了更深的了解。
总的来说,通过这些实验,我不仅学到了更多关于矩阵操作、递归算法、循环结构和密码安全性的知识,还提升了我的编程能力和问题解决能力。这些实验让我更加熟练地运用编程工具解决实际问题,为我的学习和职业发展打下了坚实的基础。
Python大数据处理实验报告(二)由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Python大数据处理实验报告(二)”
下一篇
2.数据结构:3.合并集合