25级数应四班第四次实验(33)
| 学号 | 姓名 | 是否提交作业 |
| 2025010133 | 王子涵 | 是 |
| 2025010134 | 赵雯佳 | 是 |
| 2025010136 | 屈雨蒙 | 是 |
| 2025010137 | 刘柯凡 | 是 |
| 2025010139 | 潘佳乐 | 是 |
| 2025010140 | 杨亚洲 | 是 |
| 2025010141 | 王嘉伟 | 是 |
| 2025010142 | 杨旭洁 | 是 |
| 2025010143 | 肖雅楠 | 是 |
| 2025010144 | 张博洋 | 是 |
| 2025010145 | 黄冰冰 | 是 |
| 2025010146 | 顾芳菲 | 是 |
| 2025010147 | 刘芝怡 | 是 |
| 2025010148 | 岳嘉瑞 | 是 |
| 2025010149 | 马相淼 | 否 |
| 2025010150 | 唐景泽 | 是 |
| 2025010151 | 侯益波 | 是 |
| 2025010152 | 刘金惺 | 是 |
| 2025010153 | 范鹏展 | 是 |
| 2025010154 | 洪关瑞 | 是 |
| 2025010155 | 王状 | 是 |
| 2025010157 | 闫宸熙 | 是 |
| 2025010158 | 陈文洁 | 是 |
| 2025010159 | 成哲煜 | 否 |
| 2025010160 | 韩俊杰 | 是 |
| 2025010161 | 朱星月 | 是 |
| 2025010162 | 刘奕桐 | 是 |
| 2025010163 | 刘志杰 | 是 |
| 2025010164 | 李朋祖 | 是 |
| 2025010165 | 赵子月 | 是 |
| 2025010166 | 蒋子凡 | 是 |
| 2025010167 | 杨书宇 | 是 |
| 2025010168 | 袁艺伦 | 是 |
| 2025010169 | 闵子怡 | 是 |
| 2025010170 | 张家祺 | 是 |
| 2025010171 | 陈宣汝 | 是 |
| 2025010172 | 张景悦 | 是 |
| 2025010173 | 杨云飞 | 是 |
| 2025010174 | 刘研 | 是 |
| 2025010175 | 孙兰妮 | 是 |
2025010133王子涵
#导入pandas用来读表
import pandas as pd
# 读取Excel文件
file_path = "学生表.xlsx"
df = pd.read_excel(file_path) #读表进入变量df,用来存放一整张结构化表格数据
# 把整个表格转成列表(每一行是一个子列表)
data_list = df.values.tolist() #取数据,转python列表格式
# 打印结果
print("Excel转成的列表:")
print(data_list)

2025010134 赵雯佳
安康天气列表
# 1. 安康五天天气原始文本
weather_text = """
5月9日 周六 多云 16℃~26℃
5月10日 周日 晴 15℃~28℃
5月11日 周一 多云 17℃~25℃
5月12日 周二 阴 14℃~23℃
5月13日 周三 小雨 13℃~21℃
"""
# 2. 定义空列表存结果
result_list = []
# 3. 按行分割、逐行处理
lines = weather_text.strip().splitlines()
for line in lines:
line = line.strip()
if not line:
continue
# 拆分每一行内容
parts = line.split()
# 提取:时间(5月9日 周六)、温度(16℃~26℃)
date_time = parts[0] + " " + parts[1]
temp = parts[3]
# 加入列表
result_list.append([date_time, temp])
# 4. 打印输出
print("时间+温度:")
print(result_list)

2025010136 屈雨蒙
判断括号是否成对出现
s = input("请输入带括号的表达式:")
stack = []
flag = True
for ch in s:
if ch == '(':
stack.append(ch)
elif ch == ')':
if len(stack) == 0:
flag = False
break
stack.pop()
if flag and len(stack) == 0:
print("括号成对,匹配正确")
else:
print("括号不匹配,缺少括号")

2025010137 刘柯凡
切九宫格
import os
from PIL import Image
from tkinter import Tk, filedialog
def cut_image_into_nine_pieces(image_path, output_folder="九宫格输出"):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
img = Image.open(image_path)
width, height = img.size
piece_width = width // 3
piece_height = height // 3
count = 1
for i in range(3):
for j in range(3):
left = j * piece_width
top = i * piece_height
right = left + piece_width
bottom = top + piece_height
piece = img.crop((left, top, right, bottom))
ext = os.path.splitext(os.path.basename(image_path))[1]
piece_path = os.path.join(output_folder, f"九宫格_{count}{ext}")
piece.save(piece_path)
count += 1
if __name__ == "__main__":
root = Tk()
root.withdraw()
file_path = filedialog.askopenfilename(
title="选择要切割的图片",
filetypes=[("图片文件", "*.jpg;*.jpeg;*.png;*.bmp;*.gif")]
)
if file_path:
cut_image_into_nine_pieces(file_path)
print("切割完成!文件已保存在「九宫格输出」文件夹里")
2025010139 潘佳乐
判断文件夹中文件格式
import os
import re
folder_path = r"D:\作业"
pattern = r'^\d+[\u4e00-\u9fa5]+$'
if not os.path.exists(folder_path):
print(f"❌ 错误:找不到文件夹 {folder_path}")
print("请确认路径正确,例如 D:\\作业、D:\\我的作业 等")
else:
print(f"✅ 正在检查文件夹:{folder_path}\n")
print("=" * 50)
# 遍历所有文件
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
# 只检查文件,跳过子文件夹
if os.path.isfile(file_path):
# 分离文件名和后缀(只检查名称部分,不检查后缀)
name_only = os.path.splitext(filename)[0]
# 正则匹配
if re.fullmatch(pattern, name_only):
print(f"✅ 格式正确:{filename}")
else:
print(f"❌ 格式错误:{filename}")
print("=" * 50)
print("\n检查完成!")
print("✅ 正确格式 = 纯数字 + 纯中文姓名,无空格、无符号、无英文")
2025010140杨亚洲
import os
folder_path = "./"
file_list = os.listdir(folder_path)
print("文件夹中的所有内容:")
print(file_list)![屏幕截图 2026-06-04 220021]()
2025010141王嘉伟
# 用户输入文字
s = input("请输入一段文字:")
# 把逗号、句号都换成空格
s = s.replace(",", " ")
s = s.replace("。", " ")
# 切开
words = s.split()
phone = 0
email = 0
for w in words:
# 电话:11位数字
if len(w) == 11 and w.isdigit():
phone += 1
# 邮箱:有@
if '@' in w:
email += 1
print("电话号码个数:", phone)
print("邮箱个数:", email)

2025010142 杨旭洁
在一段话中提取关键词
s = "一辆车在平整的城市道路上匀速行驶,先向左行驶1000米,再向右行驶500米,接着向前行驶500米,再向右行驶500米,继续向后行驶1000米,随后又向左行驶300米,再向右行驶300米"
qian = hou = zuo = you = 0
for i in s.split(","):
if "向前行驶" in i:
qian += int(i.split("向前行驶")[1].split("米")[0])
if "向后行驶" in i:
hou += int(i.split("向后行驶")[1].split("米")[0])
if "向左行驶" in i:
zuo += int(i.split("向左行驶")[1].split("米")[0])
if "向右行驶" in i:
you += int(i.split("向右行驶")[1].split("米")[0])
print("前{}米".format(qian))
print("后{}米".format(hou))
print("右{}米".format(you))
print("左{}米".format(zuo))
2025010143 肖雅楠
动态频谱图
import sounddevice as sd
import soundfile as sf
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# 录音参数
fs = 44100 # 采样率
duration = 5 # 录5秒
# 1. 录音
print("开始录音,5秒后自动结束...")
myrecording = sd.rec(int(duration * fs), samplerate=fs, channels=1)
sd.wait()
print("录音完成!")
# 保存音频
sf.write("my_audio.wav", myrecording, fs)
# 2. 读取音频并画动态频谱
data, fs = sf.read("my_audio.wav")
data = data.flatten()
# 绘图设置
plt.rcParams["figure.figsize"] = (8, 4)
fig, ax = plt.subplots()
x = np.fft.rfftfreq(1024, 1/fs)
line, = ax.plot(x, np.zeros(513))
ax.set_ylim(0, 0.1)
ax.set_xlim(0, 5000)
ax.set_title("实时音频频谱图")
ax.set_xlabel("频率 (Hz)")
ax.set_ylabel("振幅")
# 动态更新
def update(frame):
start = frame * 256
end = start + 1024
if end > len(data):
return line,
fft = np.abs(np.fft.rfft(data[start:end])) / 512
line.set_ydata(fft)
return line,
ani = FuncAnimation(fig, update, interval=30, blit=True)
plt.show()
![屏幕截图 2026-06-07 160844]()
2025010144张博洋
创建窗口图片移动
import tkinter as tk
from PIL import Image, ImageTk
win = tk.Tk()
win.title("图片移动动画")
win.geometry("800x500")
# 创建一个画布
canvas = tk.Canvas(win, width=800, height=500, bg="white")
canvas.pack()
image = Image.open("C:/Users/ly013/Desktop/画集/13ce5553d85a47200d.jpg")
image = image.resize((300,400))
photo = ImageTk.PhotoImage(image)
img = canvas.create_image(0, 50, anchor="nw", image=photo)
# 移动函数
x = 0
def move():
global x
new_x=x+2 # 每次移动的像素
if new_x<=500:
x=new_x
canvas.coords(img, x, 50)
win.after(20,move)
move()
win.mainloop()

2025010145 黄冰冰
将中文单位变成字母单位
# 字典:中文单位 → 英文符号 unit = { "厘米":"cm", "公斤":"kg", "平方米":"m²", "升":"L", "公里":"km", "分钟":"min", "毫升":"mL", "克":"g" } s = "清晨,身高175厘米、体重68公斤的我,从2平方米的阳台出发,拎起5升装的水桶,给几盆高度约30厘米的绿植浇水。随后我骑上续航50公里的电动车,用了20分钟赶到菜市场。我买了3公斤猪肉、2公斤苹果,还有500毫升生抽。回家后用20厘米菜刀切肉,分成500克小块,加10毫升料酒做菜。餐桌长120厘米、宽80厘米,椅子高45厘米,一顿饭用时40分钟,体重轻了0.3公斤。" # 循环字典批量替换 for c, e in unit.items(): s = s.replace(c, e) print(s)

2025010146 顾芳菲
判断括号
def is_valid(s):
stack = []
# 键:右括号,值:对应的左括号
mapping = {')': '(', ']': '[', '}': '{'}
for char in s:
# 左括号,压入栈
if char in '([{':
stack.append(char)
# 右括号,出栈校验
elif char in ')]}':
# 栈空 或 栈顶和当前右括号不匹配
if not stack or stack.pop() != mapping[char]:
return False
# 遍历结束,栈必须为空才算全部匹配
return len(stack) == 0
# 程序入口测试
if __name__ == "__main__":
code = input("请输入带括号的代码:")
if is_valid(code):
print("✅ 括号完全匹配、正确闭合")
else:
print("❌ 括号不匹配 / 未闭合")

2025010147刘芝怡 将文档中文字格式改为大纲二级
def main():
# 1. 直接获取桌面路径
desktop = Path.home() / "Desktop"
# 2. 设置要处理的文档名称
filename = "编程题目.docx"
doc_path = desktop / filename
# 3. 检查文件是否存在
if not doc_path.exists():
print(f"❌ 未找到文件:{doc_path}")
return
# 4. 打开 Word 文档
doc = docx.Document(str(doc_path))
# 5. 遍历所有段落,将大纲级别设为“二级”
for paragraph in doc.paragraphs:
paragraph.paragraph_format.outline_level = 2
# 6. 保存为新文件
new_filename = f"二级大纲_{filename}"
new_path = desktop / new_filename
doc.save(str(new_path))
print(f"✅ 处理完成!已保存至:{new_path}")
print(" 请用 Word 打开,切换到大纲视图查看效果。")
if __name__ == "__main__":
main()

2025010148 岳嘉瑞 求逆矩阵
# 计算矩阵行列式
def determinant(mat):
n = len(mat)
if n == 1:
return mat[0][0]
det = 0
for col in range(n):
sign = (-1) ** col
# 生成子矩阵
sub_mat = [row[:col] + row[col+1:] for row in mat[1:]]
det += mat[0][col] * sign * determinant(sub_mat)
return det
# 生成伴随矩阵
def adjoint(mat):
n = len(mat)
adj = [[0]*n for _ in range(n)]
for i in range(n):
for j in range(n):
# 代数余子式
sub_mat = [row[:j] + row[j+1:] for row in (mat[:i]+mat[i+1:])]
adj[j][i] = ((-1)**(i+j)) * determinant(sub_mat)
return adj
# 求逆矩阵
def inverse_matrix(mat):
det = determinant(mat)
if det == 0:
raise ValueError("矩阵不可逆,行列式为 0")
adj = adjoint(mat)
n = len(mat)
inv = [[adj[i][j]/det for j in range(n)] for i in range(n)]
return inv
# ================= 测试 =================
if __name__ == "__main__":
A = [
[1, 2],
[3, 4]
]
inv_A = inverse_matrix(A)
print("逆矩阵:")
for row in inv_A:
print([round(x, 2) for x in row])
2025010149马相淼
import cv2
import numpy as np
# 生成白底图片 + 红色矩形
img = np.ones((400, 400, 3), np.uint8) * 255
cv2.rectangle(img, (120, 120), (280, 280), (0, 0, 255), -1)
# 框选截取
roi = cv2.selectROI("框选红色区域", img)
cv2.destroyAllWindows()
x, y, w, h = roi
crop = img[y:y+h, x:x+w]
cv2.imwrite("红框截取图.jpg", crop)
cv2.imshow("原图", img)
cv2.imshow("截取结果", crop)
cv2.waitKey(0)
cv2.destroyAllWindows()

2025010150唐景泽
import os
# 输入文件夹路径
folder_path = input("请输入文件夹路径:").strip()
# 输入前缀和后缀
prefix = input("请输入前缀(可留空):").strip()
suffix = input("请输入后缀(可留空):").strip()
# 检查路径是否存在
if not os.path.isdir(folder_path):
print("❌ 文件夹不存在!")
exit()
# 获取文件列表
files = os.listdir(folder_path)
count = 1
history = []
print("\n====== 预览结果 ======")
for file_name in files:
old_path = os.path.join(folder_path, file_name)
# 只处理文件
if os.path.isfile(old_path):
# 获取文件扩展名
file_ext = os.path.splitext(file_name)[1]
# 新文件名
new_name = f"{prefix}{count}{suffix}{file_ext}"
new_path = os.path.join(folder_path, new_name)
print(f"{file_name} --> {new_name}")
history.append((old_path, new_path))
count += 1
# 是否确认执行
confirm = input("\n是否开始重命名?(y/n):").strip().lower()
if confirm == "y":
for old_path, new_path in history:
try:
os.rename(old_path, new_path)
print(f"已重命名:{os.path.basename(old_path)} -> {os.path.basename(new_path)}")
except Exception as e:
print(f"重命名失败:{e}")
print("\n文件整理完成!")
else:
print("\n已取消操作。")


2025010151侯益波
import pandas as pd
import os
# 读取表格
file_path = r"C:\Users\lenovo\Desktop\1\停车场本月记录.xlsx"
if not os.path.exists(file_path):
print(f"错误:文件 {file_path} 不存在!请检查文件路径。")
exit()
df = pd.read_excel(file_path, sheet_name="出入记录", engine="openpyxl")
# 统计每车出入次数、总收费
stat = df.groupby("车牌").agg(
出入次数=("车牌", "count"),
总收费=("收费金额", "sum")
)
# 打印结果
print("车辆出入收费统计")
print(stat)
print("本月总收入:", df["收费金额"].sum())

2025010152刘金惺
import os
folder_path = "./" # 目标文件夹,可修改绝对路径
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
if os.path.isfile(file_path):
size = os.path.getsize(file_path)
print(f"文件名:{file_name} | 大小:{size} 字节")
2025010153 范鹏展
红楼梦人物出现次数
from collections import Counter
text = """
第一回 甄士隐梦幻识通灵 贾雨村风尘怀闺秀
此开卷第一回也。作者自云:因曾历过一番梦幻之后,故将真事隐去,而借“通灵”之说,撰此《石头记》一书也。故曰“甄士隐”云云。但书中所记何事何人?自又云:“今风尘碌碌,一事无成,忽念及当日所有之女子,一一细考较去,觉其行止见识,皆出于我之上。何我堂堂须眉,诚不若彼裙钗哉?实愧则有余,悔又无益之大无可如何之日也!当此,则自欲将已往所赖天恩祖德,锦衣纨绔之时,饫甘餍肥之日,背父兄教育之恩,负师友规训之德,以至今日一技无成、半生潦倒之罪,编述一集,以告天下人:我之罪固不免,然闺阁中本自历历有人,万不可因我之不肖,自护己短,一并使其泯灭也。虽今日之茅椽蓬牖,瓦灶绳床,其晨夕风露,阶柳庭花,亦未有妨我之襟怀笔墨者。虽我未学,下笔无文,又何妨用假语村言,敷演出一段故事来,亦可使闺阁昭传,复可悦世之目,破人愁闷,不亦宜乎?”故曰“贾雨村”云云。
却说姑苏城中有一乡绅姓甄名费,字士隐,性情贤淑,深明礼义。家中虽不甚富贵,然本地便也推他为望族了。只因这甄士隐禀性恬淡,不以功名为念,每日只以观花修竹、酌酒吟诗为乐,倒是神仙一流人品。只是一件不足:如今年已半百,膝下无儿,只有一女,乳名英莲,年方三岁。
一日炎夏永昼,士隐于书房闲坐,手倦抛书,伏几盹睡,不觉朦胧中走至一处,不辨是何地方。忽见那厢来了一僧一道,且行且谈。只听道人问道:“你携了这蠢物,意欲何往?”那僧笑道:“你放心,如今现有一段风流公案正该了结,这一干风流冤家,尚未投胎入世。趁此机会,就将此蠢物夹带于中,使他去经历那离合悲欢的人情,随后将历劫之事带回来,岂非一件奇事?”那道人道:“原来近日风流冤孽又将造劫历世去不成?但不知落于何方何处?”那僧笑道:“此事说来好笑,竟是千古未闻的罕事。只因西方灵河岸上三生石畔,有绛珠草一株,时有赤瑕宫神瑛侍者,日以甘露灌溉,这绛珠草始得久延岁月。后来既受天地精华,复得雨露滋养,遂得脱却草胎木质,得换人形,仅修成个女体,终日游于离恨天外,饥则食蜜青果为膳,渴则饮灌愁海水为汤。只因尚未酬报灌溉之德,故其五内便郁结着一段缠绵不尽之意。恰近日这神瑛侍者凡心偶炽,乘此昌明太平朝世,意欲下凡造历幻缘,已在警幻仙子案前挂了号。警幻亦曾问及,灌溉之情未偿,趁此倒可了结的。那绛珠仙子道:‘他是甘露之惠,我并无此水可还。他既下世为人,我也去下世为人,但把我一生所有的眼泪还他,也偿还得过他了。’因此一事,就勾出多少风流冤家来,陪他们去了结此案。”
第二回 贾夫人仙逝扬州城 冷子兴演说荣国府
贾雨村在林家做西宾,教林黛玉读书。黛玉之母贾夫人一疾而终。贾雨村偶遇冷子兴,演说宁荣二府,道出贾宝玉、王熙凤等一众人物。贾宝玉周岁抓周,只抓脂粉钗环,贾政大怒。
第三回 贾雨村夤缘复旧职 林黛玉抛父进京都
林黛玉进贾府,初见贾宝玉、王熙凤、贾母、王夫人。宝玉见黛玉,笑道:“这个妹妹我曾见过的。”二人一见如故。
第四回 薄命女偏逢薄命郎 葫芦僧乱判葫芦案
薛蟠打死冯渊,抢走英莲(香菱)。薛宝钗随母亲进京,寄居贾府。
第五回 游幻境指迷十二钗 饮仙醪曲演红楼梦
贾宝玉梦游太虚幻境,翻看金陵十二钗判词。
第六回 贾宝玉初试云雨情 刘姥姥一进荣国府
刘姥姥一进贾府,王熙凤接济。
第七回 送宫花贾琏戏熙凤 宴宁府宝玉会秦钟
第八回 比通灵金莺微露意 探宝钗黛玉半含酸
贾宝玉到梨香院见薛宝钗,黛玉赶来,三人初次交锋。
"""
person_list = [
"贾宝玉","林黛玉","薛宝钗","王熙凤","贾母","王夫人","邢夫人",
"史湘云","秦可卿","妙玉","李纨","贾元春","贾迎春","贾探春",
"贾惜春","巧姐","袭人","晴雯","平儿","紫鹃","鸳鸯","香菱",
"甄士隐","贾雨村","英莲","刘姥姥","贾政","贾赦","贾珍","贾琏"
]
count = Counter()
for name in person_list:
count[name] = text.count(name)
top10 = count.most_common(10)
print("《红楼梦》人物出场次数TOP10:")
for i, (name, num) in enumerate(top10, 1):
print(f"{i}. {name}:{num} 次")
2025010154洪关瑞
统计发言次数
from collections import Counter
import re
chat_text = """
数应四班 孙兰妮:@所有人 根据学生手册的相关内容,结合前期做出来的公示过的综测筛选出符合基本条件的人员,评选“三好学生”“优秀学生干部”,以下为本班符合条件的学生名单,请同学们尽快填写表格,在表中符合条件的同学后续自己不申请的在备注栏备注“自愿放弃”,要申请的填写后面的详细信息。
数应四班 孙兰妮:【金山文档 | WPS 云文档】数统学院2026年三好学生、优干、单项奖励金情况一览表 https://www.kdocs.cn/l/cakNHoaJvAr2
数应四班 孙兰妮:在单项奖励金中,如有获得省级以上比赛荣誉的同学请联系我
数应四班 孙兰妮:25级四班大一上成绩排名.xlsx(19.9 KB 未下载)
数应四班 孙兰妮:25级数应四班综合测评汇总表.xls(28.0 KB 未下载)
数应四班 孙兰妮:《学生手册》安康学院“三好学生”“优秀学生干部”评选办法在108-110页
数应四班 孙兰妮:三好学生和优秀学生干部的含金量一样的。没有区别,在申报时尽量不要扎堆扎堆的话竞争就很激烈,最终可能会两手空空。评选的原则上是荣誉尽量不集中某个人或几个,面广一点,要让同学们都受益
数应四班 孙兰妮:两个都满足的同学二选一
数应四班 孙兰妮:如对上述表格中名单有异议的同学请及时与我联系
数应四班 孙兰妮:最终三好学生名额为4名,优秀学生干部为2名
数应四班 孙兰妮:关于三好、优干、单项奖励金的评选过程如下:1️⃣组织班委会、班级同学认真学习学生手册上的相关内容一;2️⃣结合前期做出来的公示过的综测筛选出符合基本条件的人员;3️⃣自愿申请并填表;4️⃣对自愿申请的同学进行班级民意测评;最终将表和投票结果上报给辅导员。@全体成员
闵子怡:(发送了表格图片)
闵子怡:(发送了表格图片)
黄冰冰 15291445010:✌️
刘芝怡19719141050:✌️
杨旭洁19929154963:✌️
数应四班 陈昱汝:✌️
闵子怡:(发送了表格图片)
闵子怡:@范鹏展 19263980968 @李明祖 13355300196
数应四班 刘研19891471921:@所有人 捐步数
数应四班 刘研19891471921:(发送了“人道公益日”捐步数二维码图片)
数应四班 张景悦-19329743917:(消息未完整显示)
数应四班 张景悦-19329743917:(消息未完整显示)
数应四班 张景悦-19329743917:(消息未完整显示)
"""
pattern = re.compile(r"([^\n:]+):")
speakers = pattern.findall(chat_text)
count = Counter(speakers)
top3 = count.most_common(3)
print("发言次数前三名:")
for i, (name, num) in enumerate(top3, start=1):
print(f"第{i}名:{name.strip()},发言{num}次")
2025010155王状
import cv2
import time
from datetime import datetime
def campus_check_in_camera():
"""
校园打卡拍照程序
功能:打开摄像头 → 实时显示时间 → 按 s 键拍照保存 → 按 q 键退出
"""
# 打开默认摄像头(0 是电脑自带摄像头,外接摄像头可能是 1)
cap = cv2.VideoCapture(0)
# 检查摄像头是否成功打开
if not cap.isOpened():
print("错误:无法打开摄像头!")
return
print("=== 校园打卡拍照工具 ===")
print("按 s 键:拍照并保存")
print("按 q 键:退出程序")
print("="*30)
while True:
# 读取一帧画面
ret, frame = cap.read()
if not ret:
print("读取画面失败")
break
# ========== 1. 获取当前系统时间 ==========
now = datetime.now()
time_str = now.strftime("%Y-%m-%d %H:%M:%S") # 显示格式
file_time_str = now.strftime("%Y%m%d_%H%M%S") # 文件名格式
# ========== 2. 在画面上叠加时间 ==========
# 字体、位置、颜色、大小
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame, time_str, (10, 50), font, 1.2,
(0, 255, 255), 3, cv2.LINE_AA) # 黄色字体
# 显示画面窗口
cv2.imshow('校园打卡拍照 - 按s保存,q退出', frame)
# 键盘监听
key = cv2.waitKey(1) & 0xFF
# 按 s 键:拍照保存
if key == ord('s'):
# 文件名:打卡_年月日_时分秒.jpg
filename = f"打卡_{file_time_str}.jpg"
cv2.imwrite(filename, frame)
print(f"✅ 打卡成功!已保存:{filename}")
# 按 q 键:退出
if key == ord('q'):
print("👋 程序已退出")
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
# 启动打卡程序
if __name__ == "__main__":
campus_check_in_camera()

闫宸熙2025010157
import os
import time
file_path ="D:\新建 XLS 工作表.xls"
# ==========="D:\SteamLibrary\libraryfolder.vdf"===============================
if os.path.exists(file_path):
stat = os.stat(file_path)
modify_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(stat.st_mtime))
ext = os.path.splitext(file_path)[1].lower()
file_type = ext if ext else "无后缀文件"
size_mb = round(stat.st_size / 1024 / 1024, 2)
print("文件修改时间:", modify_time)
print("文件类型:", file_type)
print("文件大小:", size_mb, "MB")
else:
print("文件不存在!")
2025010158陈文洁
西安天气文章时间和温度 列表
# 西安5月1日-15日天气数据(模拟真实天气) weather_info = [
# (日期, 天气, 最高温, 最低温, 风向)
("2025,5,1", "晴", 28, 15, "微风"),
("2025,5,2", "多云", 26, 14, "东风2级"),
("2025,5,3", "阴", 24, 13, "东北风2级"),
("2025,5,4", "小雨", 22, 12, "微风"),
("2025,5,5", "晴", 27, 14, "南风2级"),
("2025,5,6", "晴", 29, 16, "微风"),
("2025,5,7", "多云", 27, 15, "西风2级"),
("2025,5,8", "晴", 30, 17, "微风"),
("2025,5,9", "阴", 25, 14, "北风2级"),
("2025,5,10", "晴", 28, 15, "微风"),
("2025,5,11", "多云", 26, 13, "东风2级"),
("2025,5,12", "晴", 27, 14, "微风"),
("2025,5,13", "小雨", 23, 12, "微风"),
("2025,5,14", "阴", 24, 13, "东北风2级"),
("2025,5,15", "晴", 28, 16, "南风2级"), ]
# 1. 按课本格式,用format()方法输出
print("="*50)
print("西安 5月1日-15日 天气预报")
print("="*50)
for day in weather_info:
# 拆分日期
year, month, day_num = day[0].split(",")
weather, high, low, wind = day[1], day[2], day[3], day[4]
# 格式化输出,和课本格式一致
print("{:s}年{:02d}月{:02d}日\t天气预报:
year, int(month), int(day_num), weather, high, low, wind ))
# 2. 实现「天气文本 → 拆分时间/温度/天气 → 列表」的流程
print("\n" + "="*50)
print("拆分后的时间、温度、天气列表:")
print("="*50)
# 拆分出三个列表
time_list = []
temp_list = []
weather_list = []
for day in weather_info: year, month, day_num = day[0].split(",") time_list.append(f"{month}-{day_num}") # 时间列表(格式:5-1) temp_list.append(f"{day[2]}~{day[3]}℃") # 温度列表(格式:28~15℃) weather_list.append(day[1]) # 天气列表(格式:晴)
# 输出拆分后的列表
print("时间列表:", time_list)
print("温度列表:", temp_list)
print("天气列表:", weather_list)
2025010159 成哲煜
import turtle # 设置画笔 t = turtle.Turtle() t.pensize(3) # 线条粗细 t.color("gold") # 颜色 t.fillcolor("yellow") t.begin_fill() # 循环5次绘制五角星 for _ in range(5): t.forward(200) # 向前走200像素 t.right(144) # 右转144度,五角星核心角度 t.end_fill() turtle.done()
2025010160韩俊杰
目录
# 加粗终端控制码(实现文字加粗)
BOLD = "\033[1m"
RESET = "\033[0m"
# 标题和目录文字
main_title = "学生日常行为规范准则"
content = [
("一、日常作息管理", "合理规划每日学习与休息时间,养成早睡早起的习惯,不熬夜、不迟到,保持良好精神状态投入日常学习生活。"),
("二、课堂纪律要求", "上课期间专心听讲,不随意讲话、不玩手机、不做与课堂无关的事,积极配合老师教学,主动参与课堂互动。"),
("三、宿舍内务标准", "每日整理床铺、摆放生活用品,保持桌面地面干净整洁,物品分类归置整齐,营造舒适文明的住宿环境。"),
("四、人际交往准则", "与同学和睦相处、互相包容、互帮互助,礼貌待人、文明用语,杜绝争吵打闹,共建和谐集体氛围。"),
("五、身心健康维护", "坚持日常体育锻炼,劳逸结合,保持乐观心态,遇到烦恼及时沟通疏导,重视心理与身体健康。")
]
# 打印排版
print("=" * 50)
print(f"{main_title:^50}")
print("=" * 50)
print()
# 小标题全部加粗,正文正常
for title, text in content:
print(f"■ {BOLD}{title}{RESET}")
print(f" {text}\n")
2025010161朱星月
天气字典描述
# 天气描述字典:key=天气状况,value=文字描述
weather_dict = {
"晴": "天空万里无云,阳光明媚,微风拂面,适合出门活动。",
"多云": "云层较多,阳光时隐时现,气温舒适,不冷不热。",
"阴": "天空被乌云笼罩,光线偏暗,空气略显沉闷。",
"小雨": "淅淅沥沥下起小雨,细雨绵绵,地面微微湿润。",
"大雨": "雨势急促滂沱,雨声较大,出行需要带好雨具。",
"雾": "清晨浓雾弥漫,能见度较低,四周朦胧一片。",
"风": "大风呼啸而过,树枝摇曳,体感凉意十足。"
}
# 调用示例
print(weather_dict["晴"])
print(weather_dict["小雨"])

2025010162 刘奕桐
绘制图表
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
months = ['1月', '2月', '3月', '4月', '5月']
sales = [2000, 3500, 2800, 4200, 3900]
plt.bar(months, sales)
plt.title('销售数据柱状图')
plt.xlabel('月份')
plt.ylabel('销售额')
plt.show()

2025010163 刘志杰
将物理题中的中文单位改成英文单位
# 中文单位 → 英文单位
unit_map = {
"米": "m",
"千米": "km",
"厘米": "cm",
"毫米": "mm",
"千克": "kg",
"克": "g",
"吨": "t",
"秒": "s",
"分钟": "min",
"小时": "h",
"米每秒": "m/s",
"千米每小时": "km/h",
"克每立方厘米": "g/cm³",
"千克每立方米": "kg/m³",
"帕斯卡": "Pa",
"牛顿": "N",
"焦耳": "J",
"瓦特": "W"
}
def chinese_unit_to_english(text):
"""把文本里的中文物理单位替换为英文单位"""
for chinese, english in unit_map.items():
text = text.replace(chinese, english)
return text
# 需要转换的物理题目
physics_text = """"
一个物体质量为5千克,速度是10米每秒,
密度为2.5克每立方厘米,长度是20厘米,
压强为1000帕斯卡,重力为50牛顿。
"""
result = chinese_unit_to_english(physics_text)
print("转换后:")
print(result)
2025010164 李朋祖
import tkinter as tk
import random
# 窗口设置
root = tk.Tk()
root.title("漫天雪花")
width, height = 800, 600
root.geometry(f"{width}x{height}")
root.configure(bg="black")
# 雪花列表
snow = []
snow_num = 120
# 初始化雪花
for i in range(snow_num):
x = random.randint(0, width)
y = random.randint(-height, height)
size = random.randint(1, 3)
speed_y = random.uniform(1, 3)
speed_x = random.uniform(-0.8, 0.8)
snow.append([x, y, size, speed_x, speed_y])
canvas = tk.Canvas(root, width=width, height=height, bg="black")
canvas.pack()
# 动画循环
def snow_fall():
canvas.delete("all")
for s in snow:
s[0] += s[3]
s[1] += s[4]
# 雪花落地重置
if s[1] > height:
s[1] = random.randint(-50, 0)
s[0] = random.randint(0, width)
canvas.create_oval(s[0], s[1], s[0]+s[2], s[1]+s[2], fill="white")
root.after(30, snow_fall)
snow_fall()
root.mainloop()

2025010165 赵子月
图书信息字典按出版社
定义图书信息:列表中每个元素是一本图书的字典
books = [
{"书名": "Python编程从入门到实践", "出版社": "人民邮电出版社", "价格": 89.0},
{"书名": "数据结构与算法", "出版社": "清华大学出版社", "价格": 59.0},
{"书名": "流畅的Python", "出版社": "人民邮电出版社", "价格": 128.0},
{"书名": "C++ Primer", "出版社": "机械工业出版社", "价格": 138.0},
{"书名": "深度学习", "出版社": "人民邮电出版社", "价格": 158.0},
{"书名": "计算机网络", "出版社": "清华大学出版社", "价格": 49.0}
]
# 2. 按【出版社】升序排序(默认)
# sorted() 不会修改原数据,key 指定按字典的“出版社”字段排序
books_sorted_by_publisher = sorted(books, key=lambda x: x["出版社"])
print("===== 按出版社升序排序 =====")
for book in books_sorted_by_publisher:
print(f"出版社:{book['出版社']} | 书名:{book['书名']} | 价格:{book['价格']}")
# 3. 按【出版社】降序排序(reverse=True)
books_sorted_desc = sorted(books, key=lambda x: x["出版社"], reverse=True)
print("\n===== 按出版社降序排序 =====")
for book in books_sorted_desc:
print(f"出版社:{book['出版社']} | 书名:{book['书名']} | 价格:{book['价格']}")
# 4. 进阶:先按出版社排序,同出版社再按【书名】排序
books_sorted_multi = sorted(books, key=lambda x: (x["出版社"], x["书名"]))
print("\n===== 先按出版社,再按书名排序 =====")
for book in books_sorted_multi:
print(f"出版社:{book['出版社']} | 书名:{book['书名']} | 价格:{book['价格']}")
2025010166蒋子凡
import cv2
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_pose = mp.solutions.pose
cap = cv2.VideoCapture(0)
with mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5) as pose:
while cap.isOpened():
ret, frame = cap.read()
if not ret: break
frame = cv2.flip(frame, 1)
img_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img_rgb.flags.writeable = False
res = pose.process(img_rgb)
img_rgb.flags.writeable = True
frame = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR)
if res.pose_landmarks:
mp_drawing.draw_landmarks(frame, res.pose_landmarks, mp_pose.POSE_CONNECTIONS,
mp_drawing.DrawingSpec((0,255,0),2,2),
mp_drawing.DrawingSpec((255,0,0),2,2))
cv2.imshow("人体骨骼识别(q退出)", frame)
if cv2.waitKey(5) & 0xFF == ord('q'): break
cap.release()
cv2.destroyAllWindows()

2025010167杨书宇
停车场收费
import tkinter as tk
from tkinter import messagebox
import time
root = tk.Tk()
root.title('停车场收费系统')
root.geometry("400x300")
# 全局变量
car_plate = ""
in_time = 0
HOUR_PRICE = 3 # 3元/小时
# 入场
def car_enter():
global car_plate, in_time
car_plate = entry_plate.get().strip()
if not car_plate:
messagebox.showinfo("提示", "请输入车牌号!")
return
in_time = time.time()
# 入场弹窗
win_in = tk.Toplevel(root)
win_in.title("入场成功")
win_in.geometry("280x150")
tk.Label(win_in, text=f"车牌:{car_plate}\n登记入场成功").pack(pady=40)
tk.Button(win_in, text="关闭", command=win_in.destroy).pack()
# 出场计费
def car_exit():
global car_plate, in_time
if not car_plate:
messagebox.showerror("错误", "暂无入场车辆")
return
# 计算停车小时
stop_hour = (time.time() - in_time) / 3600
cost = round(stop_hour * HOUR_PRICE, 2)
# 结算弹窗
win_out = tk.Toplevel(root)
win_out.title("收费结算")
win_out.geometry("300x180")
info = f"车牌:{car_plate}\n停车时长:{stop_hour:.2f}小时\n应收费用:{cost}元"
tk.Label(win_out, text=info, font=11).pack(pady=30)
def ok():
car_plate = ""
win_out.destroy()
tk.Button(win_out, text="确认缴费离场", command=ok).pack()
# 界面布局
tk.Label(root, text="请输入车牌号:", font=12).pack(pady=15)
entry_plate = tk.Entry(root, font=12, width=20)
entry_plate.pack()
tk.Button(root, text="车辆入场", command=car_enter, width=12).pack(pady=12)
tk.Button(root, text="车辆出场&计费", command=car_exit, width=12).pack()
root.mainloop()

2025010168 袁艺伦
import tkinter as tk
from tkinter import ttk
def convert():
# 汇率:1单位外币 = 人民币
rate = {
"人民币": 1,
"美元": 7.22,
"欧元": 7.85,
"英镑": 9.10,
"日元": 0.049
}
try:
money = float(entry_num.get())
from_cur = combo_from.get()
to_cur = combo_to.get()
# 统一转人民币再换算
cny = money * rate[from_cur]
result = cny / rate[to_cur]
lab_res.config(text=f"换算结果:{result:.2f} {to_cur}")
except:
lab_res.config(text="请输入正确数字!")
# 创建主窗口
win = tk.Tk()
win.title("五国货币汇率转换")
win.geometry("420x280")
# 组件布局
tk.Label(win, text="金额:", font=("Arial",12)).place(x=30,y=40)
entry_num = tk.Entry(win, font=("Arial",12), width=15)
entry_num.place(x=90,y=40)
tk.Label(win, text="原货币:", font=("Arial",12)).place(x=30,y=90)
combo_from = ttk.Combobox(win, font=("Arial",12), width=12)
combo_from["values"] = ("人民币","美元","欧元","英镑","日元")
combo_from.current(0)
combo_from.place(x=90,y=90)
tk.Label(win, text="目标货币:", font=("Arial",12)).place(x=30,y=140)
combo_to = ttk.Combobox(win, font=("Arial",12), width=12)
combo_to["values"] = ("人民币","美元","欧元","英镑","日元")
combo_to.current(1)
combo_to.place(x=90,y=140)
# 转换按钮
tk.Button(win, text="立即转换", command=convert, font=("Arial",12),bg="#1E90FF",fg="white").place(x=150,y=190)
# 结果显示
lab_res = tk.Label(win, text="换算结果:", font=("Arial",13),fg="red")
lab_res.place(x=30,y=230)
win.mainloop()

闵子怡+2025010169+登陆窗口
import tkinter as tk
from tkinter import messagebox
# 正确密码
correct_pwd = "123456"
# 错误次数
error_count = 0
def login():
global error_count
pwd = entry.get()
if pwd == correct_pwd:
messagebox.showinfo("成功", "登录成功!欢迎进入系统")
root.destroy()
else:
error_count += 1
remain = 3 - error_count
if error_count < 3:
messagebox.showerror("错误", f"密码错误!剩余次数:{remain}")
entry.delete(0, tk.END)
else:
messagebox.showerror("锁定", "密码错误超过3次,程序退出")
root.destroy()
# 创建窗口
root = tk.Tk()
root.title("密码登录")
root.geometry("300x150")
# 标签
label = tk.Label(root, text="请输入密码", font=("微软雅黑",12))
label.pack(pady=10)
# 密码输入框
entry = tk.Entry(root, show="*", font=("微软雅黑",12))
entry.pack(pady=5)
# 登录按钮
btn = tk.Button(root, text="登录", width=10, command=login)
btn.pack(pady=10)
root.mainloop()
![屏幕截图 2026-06-06 231950]()
2025010170张家祺
数学式子识别计算
# 获取输入的数学式子
s = input("请输入数学式子(支持+ - * / **):")
# 定义要识别的运算符
operators = ["**", "*", "/", "+", "-"]
# 遍历查找运算符
w = None
for i in operators:
if i in s:
w = i
break
# 如果没找到运算符
if not w:
print("输入的式子不包含有效运算符!")
else:
# 拆分左右数字
a, b = s.split(w, 1)
num1 = float(a)
num2 = float(b)
# 计算结果
if w == "**":
res = num1 ** num2
elif w == "*":
res = num1 * num2
elif w == "/":
res = num1 / num2
elif w == "+":
res = num1 + num2
elif w == "-":
res = num1 - num2
# 输出结果
print("计算结果:", res)
2025010171陈宣汝
import tkinter as tk # 创建主窗口 win = tk.Tk() win.title("简易计算器") # 输入框 show = tk.Entry(win, width=20, font=("Arial",18)) show.pack(pady=10) # 按钮通用点击逻辑 def click(val): show.insert(tk.END, val) # 计算 def calc(): res = eval(show.get()) show.delete(0, tk.END) show.insert(0, str(res)) # 清空 def clear(): show.delete(0, tk.END) # 直接摆放所有按钮 tk.Button(win,text="7",width=6,command=lambda:click("7")).pack(side="left",padx=2,pady=2) tk.Button(win,text="8",width=6,command=lambda:click("8")).pack(side="left",padx=2,pady=2) tk.Button(win,text="9",width=6,command=lambda:click("9")).pack(side="left",padx=2,pady=2) tk.Button(win,text="+",width=6,command=lambda:click("+")).pack(side="left",padx=2,pady=2) tk.Button(win,text="4",width=6,command=lambda:click("4")).pack(side="left",padx=2,pady=2) tk.Button(win,text="5",width=6,command=lambda:click("5")).pack(side="left",padx=2,pady=2) tk.Button(win,text="6",width=6,command=lambda:click("6")).pack(side="left",padx=2,pady=2) tk.Button(win,text="-",width=6,command=lambda:click("-")).pack(side="left",padx=2,pady=2) tk.Button(win,text="1",width=6,command=lambda:click("1")).pack(side="left",padx=2,pady=2) tk.Button(win,text="2",width=6,command=lambda:click("2")).pack(side="left",padx=2,pady=2) tk.Button(win,text="3",width=6,command=lambda:click("3")).pack(side="left",padx=2,pady=2) tk.Button(win,text="*",width=6,command=lambda:click("*")).pack(side="left",padx=2,pady=2) tk.Button(win,text="0",width=6,command=lambda:click("0")).pack(side="left",padx=2,pady=2) tk.Button(win,text="C",width=6,command=clear).pack(side="left",padx=2,pady=2) tk.Button(win,text="=",width=6,command=calc).pack(side="left",padx=2,pady=2) tk.Button(win,text="/",width=6,command=lambda:click("/")).pack(side="left",padx=2,pady=2) win.mainloop()
2025010172 张景悦
注册用户名
name = input("输入用户名:") # 规定特殊字符集合 fuhao = "!@#$%^&*" # 判断长度 if len(name) != 6: print("必须6位字符") # 判断有没有特殊符号 elif not any(c in fuhao for c in name): print("必须包含1个特殊字符(!@#$%^&*)") else: print("注册成功")
杨云飞2025010173
一个区域随机出现圆圈,一个箭头指向圆圈
import tkinter as tk
import random
import time
class ArrowTracker:
def __init__(self, root):
self.root = root
self.root.title("箭头追踪圆圈")
self.canvas = tk.Canvas(root, width=600, height=400, bg="white")
self.canvas.pack()
# 初始圆圈位置
self.circle_pos = self.random_pos()
self.arrow_id = None
self.circle_id = self.draw_circle()
self.draw_arrow()
# 定时更新圆圈位置
self.root.after(3000, self.update_circle) # 3秒换一次位置
def random_pos(self):
# 生成随机位置,避免超出画布
x = random.randint(50, 550)
y = random.randint(50, 350)
return (x, y)
def draw_circle(self):
# 画圆圈
x, y = self.circle_pos
return self.canvas.create_oval(x-20, y-20, x+20, y+20, fill="red")
def draw_arrow(self):
# 箭头从中心指向圆圈
center_x, center_y = 300, 200 # 箭头起点(画布中心)
x, y = self.circle_pos
# 清除旧箭头
if self.arrow_id:
self.canvas.delete(self.arrow_id)
# 画箭头(线段+三角形箭头)
self.arrow_id = self.canvas.create_line(center_x, center_y, x, y, width=3, arrow=tk.LAST)
def update_circle(self):
# 删除旧圆圈
self.canvas.delete(self.circle_id)
# 生成新位置
self.circle_pos = self.random_pos()
self.circle_id = self.draw_circle()
# 更新箭头指向
self.draw_arrow()
# 继续定时更新
self.root.after(3000, self.update_circle)
if __name__ == "__main__":
root = tk.Tk()
app = ArrowTracker(root)
root.mainloop()

2025010174 刘研
窗口登录
import tkinter as tk from tkinter import messagebox # 设定正确账号密码 right_user = "admin" right_pwd = "123456" count = 3 # 剩余次数 def login(): global count username = entry_user.get() password = entry_pwd.get() if username == right_user and password == right_pwd: messagebox.showinfo("成功", "登录成功!欢迎进入系统") root.destroy() # 关闭登录窗口 else: count -= 1 if count > 0: messagebox.showerror("错误", f"账号或密码错误!剩余{count}次机会") entry_pwd.delete(0, tk.END) else: messagebox.showerror("禁止登录", "三次机会已用完,无法登录") root.destroy() # 创建主窗口 root = tk.Tk() root.title("登录界面") root.geometry("350x220") # 文字标签 tk.Label(root, text="账号:", font=("宋体",12)).place(x=60,y=40) tk.Label(root, text="密码:", font=("宋体",12)).place(x=60,y=90) # 输入框 entry_user = tk.Entry(root, font=("宋体",12)) entry_user.place(x=120,y=40,width=160) entry_pwd = tk.Entry(root, font=("宋体",12), show="*") entry_pwd.place(x=120,y=90,width=160) # 登录按钮 tk.Button(root, text="立即登录", command=login, font=("宋体",12),bg="#409EFF",fg="white").place(x=130,y=140) root.mainloop()


2025010175 孙兰妮
检查大、中、小括号是否匹配,式子是否正确
def check(expr):
"""检查括号匹配"""
pairs = {')': '(', ']': '[', '}': '{'}
stack = []
for ch in expr:
if ch in '([{':
stack.append(ch)
elif ch in ')]}':
if not stack or pairs[ch] != stack.pop():
return False
return not stack # 栈空才匹配
def calc(expr):
"""计算表达式(自动把[]和{}变成())"""
expr = expr.replace('[', '(').replace(']', ')')
expr = expr.replace('{', '(').replace('}', ')')
return eval(expr, {'__builtins__': None}, {})
def main():
while True:
expr = input("表达式: ").strip()
if expr in ('exit', 'quit'):
break
if not check(expr):
print("括号错误")
continue
try:
print("结果:", calc(expr))
except Exception as e:
print("计算错误:", e)
if __name__ == '__main__':
main()







浙公网安备 33010602011771号