当前位置: 首页 > news >正文

25级数应四班第五次实验(34)


学号 姓名 是否提交作业
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王子涵
import pandas as pd     #导入pandas库# 读取销售明细表,指定openpyxl来读取
sale_df = pd.read_excel("销售明细表.xlsx", engine="openpyxl")# 用字典定义商品单价
price_map = {"中性笔": 1.5,"笔记本": 5,"文件夹": 7.2
}# 计算单价和单笔销售额
sale_df["单价"] = sale_df["商品名称"].map(price_map)  #p根据字典把商品名称换成对应的单价,s_d新增一列单价
sale_df["单笔销售额"] = sale_df["销售数量"] * sale_df["单价"]# 按销售人员汇总(用字典传参避免括号语法问题)
summary_df = sale_df.groupby("销售人员").agg({     #g把同一个人的订单归为一组"销售数量": "sum",                             #对分组数据合计"单笔销售额": "sum"
}).rename(columns={"销售数量": "总销售数量","单笔销售额": "总销售额(元)"
}).reset_index()# 金额保留2位小数
summary_df["总销售额(元)"] = summary_df["总销售额(元)"].round(2)# 导出汇总表
summary_df.to_excel("人员总销售额汇总表.xlsx", index=False, engine="openpyxl")# 打印结果
print("✅ 汇总完成!")
print(summary_df)

第五次

 2025010134 赵雯佳

 列表转字典

 

def lists_to_dict(keys, values):"""将两个列表转换为字典,并自动处理长度不匹配的情况"""# 1. 判断长度是否不相等if len(keys) != len(values):print(f"⚠️ 警告:键列表长度({len(keys)})与值列表长度({len(values)})不匹配!")# 情况 A:键比值多 (Key > Value) -> 补 Noneif len(keys) > len(values):print("👉 键列表较长,缺失的值将用 None 填充。")result = {}for i in range(len(keys)):if i < len(values):result[keys[i]] = values[i]else:result[keys[i]] = Nonereturn result# 情况 B:值比键多 (Value > Key) -> 截断值else:print("👉 值列表较长,多出的值将被舍弃。")result = {}for i in range(len(keys)):result[keys[i]] = values[i]return result# 2. 否则 (长度相等)else:print("✅ 两个列表长度匹配,直接转换。")return dict(zip(keys, values))# --- 测试代码 ---# 示例1:长度相等
keys1 = ['姓名', '年龄', '城市']
values1 = ['小明', 18, '西安']
print(lists_to_dict(keys1, values1), "\n")# 示例2:值比键多 (你图中的示例2)
keys3 = ['语文', '数学']
values3 = [95, 100, 88, 76]
print(lists_to_dict(keys3, values3), "\n")# 示例3:键比值多
keys4 = ['a', 'b', 'c', 'd']
values4 = [1, 2]
print(lists_to_dict(keys4, values4))

 

屏幕截图 2026-06-05 114635

 

 

2025010136 屈雨蒙
加载马鞍图
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # 这里改成正确导入# 解决中文乱码、字体警告

plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题# 生成x、y网格
x = np.linspace(-5, stop=5, num=100)
y = np.linspace(-5, stop=5, num=100)
X, Y = np.meshgrid(x, y)# 马鞍面 z = x² - y²
Z = X ** 2 - Y ** 2# 3D画布
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')ax.plot_surface(X, Y, Z, cmap='coolwarm', alpha=0.8)ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')  # 补上z轴标签
plt.show()

屏幕截图 2026-06-05 120127

 


2025010137 刘柯凡
角度加减
# 角度加法函数
def jia(du1,fen1,miao1,du2,fen2,miao2):miao = miao1 + miao2fen = fen1 + fen2du = du1 + du2# 秒进位if miao >= 60:miao -= 60fen += 1# 分进位if fen >= 60:fen -= 60du += 1return du,fen,miao# 角度减法函数
def jian(du1,fen1,miao1,du2,fen2,miao2):miao = miao1 - miao2fen = fen1 - fen2du = du1 - du2# 秒不够减借位if miao < 0:miao += 60fen -= 1# 分不够减借位if fen < 0:fen += 60du -= 1return du,fen,miao# 手动输入数据
print("=====角度加减计算器=====")
print("请输入第一个角度:")
d1=int(input("度:"))
f1=int(input("分:"))
m1=int(input("秒:"))print("请输入第二个角度:")
d2=int(input("度:"))
f2=int(input("分:"))
m2=int(input("秒:"))# 调用函数
add_du,add_fen,add_miao = jia(d1,f1,m1,d2,f2,m2)
sub_du,sub_fen,sub_miao = jian(d1,f1,m1,d2,f2,m2)# 输出结果
print("\n加法结果:",add_du,"度",add_fen,"分",add_miao,"秒")
print("减法结果:",sub_du,"度",sub_fen,"分",sub_miao,"秒")
屏幕截图 2026-06-04 220037

 


 



2025010139 潘佳乐
判断等比等差数列
def check_sequence(sequence):     #接受数列if len(sequence) < 2:return "数列长度不足,无法判断"# ===== 判断 等差数列 =====is_arithmetic = Truecommon_diff = sequence[1] - sequence[0]for i in range(2, len(sequence)):if sequence[i] - sequence[i - 1] != common_diff:is_arithmetic = Falsebreak# ===== 判断 等比数列 =====is_geometric = Truefor num in sequence:if num == 0:is_geometric = Falsebreakif is_geometric:common_ratio = sequence[1] / sequence[0]for i in range(2, len(sequence)):# 处理浮点数精度问题,允许微小误差if abs(sequence[i] / sequence[i - 1] - common_ratio) > 1e-9:is_geometric = Falsebreak# ===== 输出最终结果 =====if is_arithmetic and is_geometric:return "该数列既是等差数列,也是等比数列(常数列)"elif is_arithmetic:return f"该数列是【等差数列】,公差 = {common_diff}"elif is_geometric:return f"该数列是【等比数列】,公比 = {common_ratio}"else:return "该数列既不是等差数列,也不是等比数列"# ========== 主程序:输入数列并判断 ==========
if __name__ == "__main__":print("===== 数列判断器 =====")print("输入规则:输入数列的数字,用空格隔开,按回车确认")print("示例:1 2 3 4  或  2 4 8 16\n")# 获取用户输入input_str = input("请输入数列:")# 分割字符串并转换为数字列表num_list = [float(num) for num in input_str.split()]# 调用函数判断并输出结果result = check_sequence(num_list)print("\n判断结果:", result)
Screenshot_20260604214635

 




 2025010140杨亚洲

import os
os.startfile(r"C:\Users\杨亚洲\PyCharmMiscProject\5作业\新建文件夹\0a51590ebdd384fbd9ed9ccbcc1d9083.png")
屏幕截图 2026-06-04 215010

 

 

2025010141王嘉伟
# 判断闰年
def run_nian(y):if (y%4==0 and y%100!=0) or y%400==0:return 366return 365# 每个月多少天
def yue_tian(y, m):t = [31,28,31,30,31,30,31,31,30,31,30,31]if m == 2 and run_nian(y)==366:return 29return t[m-1]# 核心:算两个日期之间相差几天
def cha_tian(y1,m1,d1, y2,m2,d2):cha = 0# 先整年差for y in range(y1, y2):cha += run_nian(y)# 再整月差for m in range(m1, m2):cha += yue_tian(y2, m)# 最后天数差cha += (d2 - d1)return cha# 最终算星期
def xingqi(nian,yue,ri):# 固定基准:今天 2026.5.11 星期一base_n, base_y, base_r = 2026, 5, 11# 算出和今天差多少天tian = cha_tian(base_n, base_y, base_r, nian, yue, ri)week = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]yu = tian % 7if yu < 0:yu += 7return week[yu]# 运行
a = int(input("输入年份:"))
b = int(input("输入月份:"))
c = int(input("输入日期:"))
print(xingqi(a,b,c))
3

 

 


2025010142 杨旭洁
备份D盘某文件夹里面以a/A开头的文件
import shutil,os
s=r"D:\Program\PyCharm 2025.3.3\jbr\legal\jdk.internal.le"
t=r"D:\a备份"
for f in os.listdir(s):if f.lower().startswith("a"):shutil.copy(os.path.join(s,f),t)
屏幕截图 2026-06-04 213823

 

 
2025010143 肖雅楠
加班费
# 定义统计周末加班加班费的函数
def count_overtime_salary(person_name, work_base_salary, month_weekend_days):"""
    :param person_name: 员工姓名:param work_base_salary: 工作日单日基础加班费:param month_weekend_days: 当月周六周日加班总天数:return: 该员工当月周末加班总加班费"""# 周末加班一天 = 工作日的3倍weekend_one_day = work_base_salary * 3# 计算当月周末加班总费用total_salary = weekend_one_day * month_weekend_daysreturn total_salary# ========== 测试调用示例 ==========
if __name__ == "__main__":# 输入示例:基础日薪100元,当月周末加班4天name = input("请输入员工姓名:")base_sal = float(input("请输入工作日单日加班费:"))weekend_days = int(input("请输入当月周六周日加班总天数:"))# 调用函数total = count_overtime_salary(name, base_sal, weekend_days)print(f"{name}当月周末加班总加班费为:{total} 元")
屏幕截图 2026-06-07 162258

 2025010144张博洋

文件分类
import os
import shutil
from datetime import datetimeFILES_TO_CLASSIFY = ["C:/Users/ly013/Desktop/画集/1763568134742.jpeg","C:/Users/ly013/Desktop/Minecraft Launcher.lnk","C:/Users/ly013/Desktop/画集/1763911773587.jpeg",
"C:/Users/ly013/Desktop/pythonZY/实验五(Python语言程序设计基础)1_加水印.pdf"]
# 分类后存放的目标目录
TARGET_DIR = "新文件夹"
# 时间依据:'modified'(修改时间) 或 'created'(创建时间)
TIME_TYPE = "modified"
# 操作方式
ACTION = "copy"def get_file_time(file_path):"""获取文件的时间"""stat = os.stat(file_path)if TIME_TYPE == "modified":timestamp = stat.st_mtimeelse:timestamp = stat.st_ctimereturn datetime.fromtimestamp(timestamp)def classify_files():"""执行分类"""if not os.path.exists(TARGET_DIR):os.makedirs(TARGET_DIR)print(f"创建目录:{TARGET_DIR}")for file_path in FILES_TO_CLASSIFY:# 检查文件是否存在if not os.path.exists(file_path):print(f"文件不存在:{file_path}")continue# 获取文件名和时间filename = os.path.basename(file_path)file_time = get_file_time(file_path)# 按年月创建文件夹名(例如:2026-05)folder_name = file_time.strftime("%Y-%m")target_folder = os.path.join(TARGET_DIR, folder_name)# 创建年份-月份文件夹if not os.path.exists(target_folder):os.makedirs(target_folder)print("\n"f"---创建文件夹---:{folder_name}")# 目标路径target_path = os.path.join(target_folder, filename)# 复制文件if ACTION == "copy":shutil.copy2(file_path, target_path)print(f"{filename}" )if __name__ == "__main__":classify_files()
屏幕截图 2026-06-07 162258

屏幕截图 2026-06-06 164447

 

 2025010145 黄冰冰

# 1. 生成一段字符串(可以自己修改内容)
my_str = "Hello, World! 你好,世界"# 2. 倒序输出(Python 最简洁的写法)
reverse_str = my_str[::-1]# 3. 打印结果
print("原字符串:", my_str)
print("倒序后:", reverse_str)
屏幕截图 2026-06-04 220722

 

 


2025010146 顾芳菲
仿真物理实验凸透镜凹透镜光路
import turtle# ========== 画布基础设置 ==========
screen = turtle.Screen()
screen.setup(width=800, height=600)
screen.title("凸透镜 & 凹透镜光路仿真")
screen.bgcolor("white")
pen = turtle.Turtle()
pen.speed(0)
pen.hideturtle()# ========== 坐标轴绘制 ==========
def draw_axis():pen.pencolor("gray")pen.pensize(1)# 主光轴横线pen.penup()pen.goto(-400, 0)pen.pendown()pen.goto(400, 0)# 透镜中心原点黑点pen.dot(size=5, color="black")# ========== 绘制凸透镜 ==========
def draw_convex_lens():pen.pencolor("blue")pen.pensize(3)pen.penup()pen.goto(0, -150)pen.pendown()# 左右两段圆弧组成凸透镜pen.circle(radius=150, extent=180)pen.circle(-150, extent=180)# ========== 绘制凹透镜 ==========
def draw_concave_lens():pen.pencolor("red")pen.pensize(3)pen.penup()pen.goto(0, -150)pen.pendown()# 反向圆弧组成凹透镜pen.circle(-150, extent=180)pen.circle(150, extent=180)# ========== 凸透镜平行入射光路(汇聚) ==========
def convex_light():pen.pencolor("orange")pen.pensize(2)ys = [-80, -40, 0, 40, 80]for y in ys:pen.penup()pen.goto(-350, y)pen.pendown()pen.goto(0, y)# 折射后汇聚到右焦点(150,0)pen.goto(150, 0)# ========== 凹透镜平行入射光路(发散) ==========
def concave_light():pen.pencolor("green")pen.pensize(2)ys = [-80, -40, 0, 40, 80]for y in ys:pen.penup()pen.goto(-350, y)pen.pendown()pen.goto(0, y)# 折射发散pen.goto(350, y - 0.3 * y)# ========== 文字标注 ==========
def mark_text():pen.pencolor("black")pen.penup()pen.goto(-280, 120)pen.write("凸透镜汇聚光路", font=("宋体", 14))pen.goto(-280, -180)pen.write("凹透镜发散光路", font=("宋体", 14))# ========== 主程序运行 ==========
if __name__ == "__main__":draw_axis()# 上方凸透镜draw_convex_lens()convex_light()# 下移画笔,画下方凹透镜pen.penup()pen.goto(0, -300)draw_concave_lens()concave_light()mark_text()turtle.done()

屏幕截图 2026-06-04 212329

 2025010147刘芝怡 倒计时

import time
import os# 清屏函数
def clear_screen():os.system("cls" if os.name == "nt" else "clear")# 用ASCII字符模拟数码管数字(0-9)
digit_segments = {'0': [" ██████ ","██    ██","██    ██","██    ██"," ██████ "],'1': ["    ██  ","   ███  ","    ██  ","    ██  ","  ██████"],'2': [" ██████ ","     ██ "," ██████ "," ██     "," ██████ "],'3': [" ██████ ","     ██ "," ██████ ","     ██ "," ██████ "],'4': ["██    ██","██    ██"," ██████ ","     ██ ","     ██ "],'5': [" ██████ "," ██     "," ██████ ","     ██ "," ██████ "],'6': [" ██████ "," ██     "," ██████ "," ██    ██"," ██████ "],'7': [" ██████ ","     ██ ","    ██  ","   ██   ","  ██    "],'8': [" ██████ ","██    ██"," ██████ ","██    ██"," ██████ "],'9': [" ██████ ","██    ██"," ██████ ","     ██ "," ██████ "]
}# 把时间字符串转成数码管样式
def format_time_display(time_str):# 把每个数字/符号按行拼接lines = ["", "", "", "", ""]for char in time_str:if char == ':':# 中间的冒号segment = ["   ", " ◆ ", "   ", " ◆ ", "   "]else:segment = digit_segments[char]for i in range(5):lines[i] += segment[i] + "  "return linesdef digital_timer(minutes=5, seconds=0):total_seconds = minutes * 60 + secondswhile total_seconds >= 0:clear_screen()# 格式化时间为 MM:SSmins = total_seconds // 60secs = total_seconds % 60time_str = f"{mins:02d}:{secs:02d}"# 打印标题print("          T I M E R          ")print()# 打印数码管样式的时间display_lines = format_time_display(time_str)for line in display_lines:print("        " + line)print()print("          BEEP READY         ")time.sleep(1)total_seconds -= 1clear_screen()print("          T I M E R          ")print()print("        ██████ ██████  ")print("        ██  ██ ██  ██  ")print("        ██████ ██████  ")print("        ██     ██      ")print("        ██     ██      ")print()print("          TIME'S UP!         ")# 设置倒计时
digital_timer(5, 0)
第五次实验2

第五次实验

 

 

2025010148  岳嘉瑞 马鞍面

 

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 1. 生成 x, y 网格数据
x = np.linspace(-2, 2, 100)  # x 范围:-2 到 2
y = np.linspace(-2, 2, 100)  # y 范围:-2 到 2
X, Y = np.meshgrid(x, y)     # 生成二维网格# 2. 马鞍面方程:z = x² - y²
Z = X**2 - Y**2# 3. 创建3D画布
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')# 4. 绘制曲面
ax.plot_surface(X, Y, Z)# 5. 显示图像
plt.show()
图片2

 2025010149马相淼

# 定义字符串
name = "马相淼"# 截取左侧前两个字符
res = name[0:2]print(res)

  ceb86be87a6d7d5b836bf83ce37df451

 

2025010150唐景泽

class Vector:

def __init__(self, data):
self.vec = list(data)


def __add__(self, other):
if len(self.vec) != len(other.vec):
raise ValueError("两个向量维度必须相同")
res = [a + b for a, b in zip(self.vec, other.vec)]
return Vector(res)


def __sub__(self, other):
if len(self.vec) != len(other.vec):
raise ValueError("两个向量维度必须相同")
res = [a - b for a, b in zip(self.vec, other.vec)]
return Vector(res)


def dot(self, other):
if len(self.vec) != len(other.vec):
raise ValueError("两个向量维度必须相同")
return sum(a * b for a, b in zip(self.vec, other.vec))


def cross(self, other):
if len(self.vec) != 3 or len(other.vec) != 3:
raise ValueError("叉乘仅支持三维向量")
x1, y1, z1 = self.vec
x2, y2, z2 = other.vec
x = y1 * z2 - z1 * y2
y = z1 * x2 - x1 * z2
z = x1 * y2 - y1 * x2
return Vector([x, y, z])


def __str__(self):
return str(self.vec)



if __name__ == "__main__":
v1 = Vector([1, 2, 3])
v2 = Vector([4, 5, 6])

print("向量 v1 =", v1)
print("向量 v2 =", v2)

# 加法
v_add = v1 + v2
print("v1 + v2 =", v_add)

# 减法
v_sub = v1 - v2
print("v1 - v2 =", v_sub)

# 点乘
v_dot = v1.dot(v2)
print("v1 · v2 (点乘) =", v_dot)

# 叉乘
v_cross = v1.cross(v2)
print("v1 × v2 (叉乘) =", v_cross)

image

 

 2025010151侯益波

import requests
import pandas as pd
import mplfinance as mpf
import matplotlib.pyplot as plt
import time# ---------------------- 配置 ----------------------
STOCKS = {"贵州茅台": "sh600519","宁德时代": "sz300750","中国平安": "sh601318"
}
DAYS = 15  # 近半个月
# ---------------------------------------------------def get_k_data(code, days=15):"""新浪财经接口获取 K 线,自带重试、延时"""url = "https://quotes.sina.com/stock/api/json.php"params = {"symbol": code,"start": 0,"count": days,"type": "daily"}for i in range(3):  # 最多重试3次try:resp = requests.get(url, params=params, timeout=10)data = resp.json()df = pd.DataFrame(data, columns=["date", "open", "high", "low", "close", "volume", "turnover"])df["date"] = pd.to_datetime(df["date"])df = df.set_index("date")df = df.astype({"open": float,"high": float,"low": float,"close": float,"volume": float})return dfexcept Exception as e:print(f"重试 {i+1} 次失败:{e}")time.sleep(2)return None# 爬取
stock_dfs = {}
for name, code in STOCKS.items():print(f"正在爬取:{name}")df = get_k_data(code, DAYS)if df is not None:stock_dfs[name] = dfprint(f"✅ {name} 成功")time.sleep(1)  # 防封# 绘图
if stock_dfs:fig, axes = plt.subplots(3, 1, figsize=(14, 12), sharex=True)fig.suptitle("三支股票近半个月K线对比图", fontsize=18, fontweight="bold")colors = ["red", "blue", "green"]for i, (name, df) in enumerate(stock_dfs.items()):ax = axes[i]mpf.plot(df,type="candle",ax=ax,volume=False,style="yahoo",colorup="r",colordown="g",warn_too_much_data=1000)ax.set_title(name, fontsize=14, color=colors[i])ax.grid(alpha=0.3)plt.tight_layout()plt.subplots_adjust(top=0.93)plt.show()
else:print("所有股票均爬取失败,可能是网络问题或IP被临时限制,稍后再试。")

联想截图_20260608093846

 

  

 

 

 

2025010152刘金惺

import os
from PIL import Image# 你要转换的文件夹路径(自己改这里)
folder_path = "./"  # ./ 表示当前文件夹,也可以写成 "C:/图片/测试"# 遍历文件夹里所有文件
for filename in os.listdir(folder_path):# 只处理 .jpg 和 .jpeg 文件if filename.lower().endswith((".jpg", ".jpeg")):# 拼接完整路径jpg_path = os.path.join(folder_path, filename)# 生成新的 .png 文件名png_filename = os.path.splitext(filename)[0] + ".png"png_path = os.path.join(folder_path, png_filename)# 打开并保存为 PNG
        with Image.open(jpg_path) as img:img.save(png_path, "PNG")print("✅ 所有 .jpg 已转换为 .png!")
屏幕截图 2026-06-07 235955

 

 

 

 

2025010153 范鹏展

光学实验

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation# 物理参数
wavelength = 589e-9  # 光波长 589nm (钠黄光)
d = 1.0e-3  # 双缝间距 (m)
D = 1.0  # 双缝到光屏距离 (m)
x = np.linspace(-0.02, 0.02, 2000)  # 光屏坐标范围# 创建画布
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 4))
line, = ax1.plot(x, np.zeros_like(x), "r")
im = ax2.imshow(np.zeros((200, len(x))), cmap="gray", aspect="auto", extent=[x.min(), x.max(), 0, 1])ax1.set_ylim(0, 4.2)
ax1.set_title("双缝干涉 光强动态变化")
ax1.set_ylabel("相对光强")
ax1.grid(alpha=0.3)ax2.set_title("动态干涉条纹")
ax2.set_xlabel("位置 x (m)")
ax2.set_yticks([])# 动画更新函数
def update(frame):# 模拟波长缓慢变化,观察条纹疏密改变lam = wavelength + frame * 10e-12phase = np.pi * d * x / (lam * D)inten = 4 * (np.cos(phase)) ** 2line.set_ydata(inten)im.set_data(np.tile(inten, (200, 1)))return line, im# 生成动画
ani = FuncAnimation(fig, update, frames=80, interval=80, blit=True
)plt.tight_layout()
plt.show()
屏幕截图 2026-06-06 224355

 

 

 2025010154洪关瑞 

# 用来存放每个人的加班总次数
work = {}print("===== 签到加班录入系统 =====")
print("下班时间大于等于18点算加班\n")while True:name = input("请输入姓名(输入end结束):")if name == "end":breaktime = int(input("输入下班时间(只输小时):"))# 判断是否加班if time >= 18:# 加班次数+1if name in work:work[name] = work[name] + 1else:work[name] = 1# 输出统计结果
print("\n======== 加班次数统计 ========")
for n, c in work.items():print(f"{n} 总共加班:{c} 次")
屏幕截图 2026-06-07 000343

 

 2025010155王状

import cv2
import numpy as np
import matplotlib.pyplot as plt# ================== 1. 读取图片并转为灰度图 ==================
# 把这里换成你的图片路径(支持 jpg、png、jpeg)
img = cv2.imread(r"C:\Users\27019\Desktop/test.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转为灰度图# ================== 2. 分成 8 个灰度等级(0~255) ==================
# 8级:0, 32, 64, 96, 128, 160, 192, 224
levels = 8
step = 256 // levels
gray_8level = (gray // step) * step  # 量化成8级灰度

# 统计每个灰度等级的像素数量
counts = [np.sum(gray_8level == val) for val in range(0, 256, step)]# ================== 3. 绘制 8 列灰度柱状图 ==================
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 显示中文
plt.figure(figsize=(10, 5))x_labels = [f"等级{i}\n({i*32})" for i in range(8)]
plt.bar(x_labels, counts, color="gray", width=0.6)plt.title("图片8级灰度统计图(0~255)", fontsize=14)
plt.xlabel("灰度等级")
plt.ylabel("像素数量")
plt.grid(axis="y", linestyle="--", alpha=0.7)plt.show()

image

 

 

 

闫宸熙2025010157
import cv2 import time from datetime import datetimedef campus_check_in_camera():""" 校园打卡拍照程序功能:打开摄像头 → 实时显示时间 → 按 s 键拍照保存 → 按 q 键退出"""# 打开默认摄像头(0 是电脑自带摄像头,外接摄像头可能是 1)cap = cv2.VideoCapture(0)# 检查摄像头是否成功打开if not cap.isOpened():print("错误:无法打开摄像头!")returnprint("=== 校园打卡拍照工具 ===")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_SIMPLEXcv2.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'):# 文件名:打卡_年月日_时分秒.jpgfilename = 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()

屏幕截图 2026-06-08 234957

 


 

 

2025010158陈文洁

运费计算函数 重和长费用
def calculate_shipping_fee(weight, length): """计算运费:按重量和长度双重计费 :param weight: 包裹重量(kg):param length: 包裹最长边长度(cm):return: 总运费(元)"""# 1. 按重量计费if weight <= 1:weight_fee = 10else:weight_fee = 10 + (weight - 1) * 5 
# 2. 按长度计费(超过100cm加收)if length > 100:extra_length = length - 100 # 每超10cm加3元,不足10cm按10cm算length_fee = (extra_length // 10 + 1) * 3else:length_fee = 0 
# 3. 总运费total_fee = weight_fee + length_fee return total_fee# 测试if __name__ == "__main__":print("=== 运费计算器 ===")w = float(input("请输入包裹重量(kg):"))l = float(input("请输入包裹最长边长度(cm):"))fee = calculate_shipping_fee(w, l)print(f"包裹重量:{w}kg,长度:{l}cm") 
print(f"应支付运费:{fee}元")
屏幕截图 2026-06-04 235432
2025010159成哲煜
def calc_3x3_window_sum(matrix):"""遍历4×4矩阵所有3×3窗口,计算每个9格窗口的总和:param matrix: 4行4列二维列表(16格):return: 所有窗口坐标 + 对应9格总和"""result = []# 4×4矩阵,3×3窗口左上角行、列只能取 0、1for row in range(2):for col in range(2):total = 0# 遍历当前3×3窗口内9个格子for i in range(3):for j in range(3):val = matrix[row + i][col + j]total += valresult.append({"窗口左上角坐标": (row, col),"窗口9格总和": total})return result# 测试:4×4 16格示例数据 if __name__ == "__main__":# 4行4列(16格)grid_16 = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]]res = calc_3x3_window_sum(grid_16)for item in res:print(item)
联想截图_20260608090414

 

 

2025010160韩俊杰
将八个文件分配给40名学生
EXP_SOURCE_DIR = r"C:\Users\JioaeJ\Desktop\8份原始实验"
import os
import shutil# ===================== 路径配置 =====================
EXP_SOURCE_DIR = r"C:\Users\JioaeJ\Desktop\8份原始实验"
OUTPUT_BASE_DIR = r"C:\Users\JioaeJ\Desktop\学生实验分发结果"EXP_LIST = ["实验1-基础操作","实验2-数据处理","实验3-排序算法","实验4-批量复制","实验5-文件管理","实验6-自动汇总","实验7-学号匹配","实验8-最终提交"
]
# ===================================================def copy_oli_experiments():print("🔍 正在校验8份实验文件...")os.makedirs(OUTPUT_BASE_DIR, exist_ok=True)# 容错处理:找不到源文件夹也不崩溃if not os.path.exists(EXP_SOURCE_DIR):print(f"⚠️  提示:源文件夹不存在,仅演示分发流程")print(f"请之后把8份实验放入:{EXP_SOURCE_DIR}")else:exp_count = len([f for f in os.listdir(EXP_SOURCE_DIR) if os.path.isfile(os.path.join(EXP_SOURCE_DIR, f))])print(f"✅ 已找到 {exp_count} 份实验文件")def generate_student_list():students = []for num in range(1, 41):students.append({"学号": 2026000 + num, "姓名": f"学生{num}"})students.sort(key=lambda x: x["学号"])print(f"\n✅ 已生成并排序 {len(students)} 名学生\n")return studentsdef distribute_files(stu_list):print("===== 开始逐人分发8份实验 =====")for stu in stu_list:stu_id, stu_name = stu["学号"], stu["姓名"]stu_root = os.path.join(OUTPUT_BASE_DIR, f"{stu_id}_{stu_name}")os.makedirs(stu_root, exist_ok=True)# 为每个学生创建8个独立实验文件夹for exp_name in EXP_LIST:os.makedirs(os.path.join(stu_root, exp_name), exist_ok=True)print(f"✅ {stu_id} {stu_name} 8个实验目录全部创建完成")if __name__ == "__main__":copy_oli_experiments()student_data = generate_student_list()distribute_files(student_data)print("\n🎉 全部40名学生、8次实验流程执行完毕!")
屏幕截图 2026-06-05 172141

 



 

 

2025010161朱星月

录入学生

students = []def add_student():"""录入新增学生"""try:sid = int(input("输入学号:"))name = input("输入姓名:")age = int(input("输入年龄:"))students.append([sid,name,age])print("✅ 新增学生完成")except:print("❌ 输入格式错误")# 调用
add_student()
print(students)

屏幕截图 2026-06-05 110804

 2025010162 刘奕桐

 成绩转换表

import pandas as pdscore_map = {"A+": 95,"A": 90,"A-": 85,"B": 80,"B-": 75
}df = pd.read_excel("实验报告成绩表(等级).xlsx")df["对应分数"] = df["等级"].map(score_map)df.to_excel("实验成绩分数表.xlsx", index=False)print("转换完成!已生成:实验成绩分数表.xlsx")
print("\n转换后表格预览:")
print(df)

屏幕截图 2026-06-06 144907

 

 2025010163 刘志杰

统计参加会议次数最多的前五名

import pandas as pd
from collections import Counter
import re  # 引入正则表达式模块,用来处理多种标点# 读取Excel文件
file_name = '工作簿2.xlsx'# header=None 表示不读取第一行作为标题
df = pd.read_excel(file_name, header=None)print(df)
all_attendees = []# 遍历 B 列(第2列,索引为1)的数据
for names in df.iloc[:, 1]:if pd.notna(names):# 使用正则表达式 split(r'[,,]')# 遇到“中文逗号”或者“英文逗号”都进行拆分attendee_list = re.split(r'[,,]', str(names))# 去除名字周围可能存在的空格(比如 " 张三" -> "张三")cleaned_list = [name.strip() for name in attendee_list if name.strip()]all_attendees.extend(cleaned_list)# 统计每个人的出席次数
attendance_count = Counter(all_attendees)#获取出席次数最多的前5名
top_5 = attendance_count.most_common(5)# 打印结果
print("出席次数最多的前5名同学是:")
print("-" * 30)
print(f"{'排名':<5}{'姓名':<10}{'出席次数'}")
print("-" * 30)for i, (name, count) in enumerate(top_5, 1):print(f"{i:<5}{name:<12}{count}")
微信图片_20260605104833_309_1

 2025010164 李朋祖

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plttext = """
Python 数据分析 人工智能 机器学习 深度学习 大数据
爬虫 算法 计算机视觉 自然语言处理 编程 代码
模型 训练 数据集 可视化 效率 科技 创新
"""
words = jieba.lcut(text)
processed_text = " ".join(words)# 生成词云
wc = WordCloud(background_color='white',font_path="simhei.ttf",width=1000,height=600
)
wc.generate(processed_text)
plt.imshow(wc)
plt.axis("off")
plt.show()

屏幕截图 2026-06-07 213111

 

 

 2025010165 赵子月

按文件类型,分到不同文件夹

imfilenameport os
import shutilsource_dir = r"C:\Users\HUAWEI\Desktop\待分类文件"def sort_all_files():for filename in os.listdir(source_dir):file_path = os.path.join(source_dir, filename)if os.path.isdir(file_path):continuefile_suffix = os.path.splitext(filename)[1].lower()folder_name = file_suffix.lstrip(".") if file_suffix else "无后缀"target_folder = os.path.join(source_dir, folder_name)if not os.path.exists(target_folder):os.mkdir(target_folder)target_path = os.path.join(target_folder, filename)if os.path.exists(target_path):name, suf = os.path.splitext(filename)filename = f"{name}_copy{suf}"target_path = os.path.join(target_folder, filename)shutil.move(file_path, target_path)print(f"移动: {filename}")if __name__ == "__main__":sort_all_files()print("✅ 全部文件分类完成!")
五

 

 

 

 

2025010166蒋子凡

import random
import os# 配置
SIZE = 8
COLOR_CHAR = ["●", "■", "▲", "◆", "★"]
grid = []
score = 0# 生成棋盘
def init_board():board = []for y in range(SIZE):row = []for x in range(SIZE):row.append(random.randint(0, 4))board.append(row)# 清除开局自动三消while find_match(board):board = []for y in range(SIZE):row = [random.randint(0,4) for _ in range(SIZE)]board.append(row)return board# 打印棋盘
def show_board():os.system("cls")print(f"===== 消消乐 | 得分:{score} =====")print("  0 1 2 3 4 5 6 7")for i, line in enumerate(grid):print(i, end=" ")for num in line:print(COLOR_CHAR[num], end=" ")print()print("输入格式:x1 y1 x2 y2 交换两个相邻方块")print("输入q退出游戏")# 判断两点相邻
def near(p1, p2):x1,y1 = p1x2,y2 = p2dx = abs(x1-x2)dy = abs(y1-y2)return (dx == 1 and dy == 0) or (dx == 0 and dy == 1)# 交换格子
def swap(board, p1, p2):x1,y1 = p1x2,y2 = p2board[y1][x1], board[y2][x2] = board[y2][x2], board[y1][x1]# 查找所有消除坐标
def find_match(board):match = set()# 横向for y in range(SIZE):x = 0while x < SIZE - 2:c = board[y][x]if board[y][x+1]==c and board[y][x+2]==c:match.add((x,y))match.add((x+1,y))match.add((x+2,y))step = 3while x+step < SIZE and board[y][x+step]==c:match.add((x+step,y))step +=1x +=1# 纵向for x in range(SIZE):y = 0while y < SIZE - 2:c = board[y][x]if board[y+1][x]==c and board[y+2][x]==c:match.add((x,y))match.add((x,y+1))match.add((x,y+2))step =3while y+step < SIZE and board[y+step][x]==c:match.add((x,y+step))step +=1y +=1return list(match)# 消除+下落+补新方块
def eliminate(board):global scorematch_list = find_match(board)if not match_list:return Falsescore += len(match_list)*10# 标记为空for x,y in match_list:board[y][x] = -1# 下落填充for x in range(SIZE):stack = []for y in range(SIZE-1, -1, -1):if board[y][x] != -1:stack.append(board[y][x])# 从下往上填for y in range(SIZE-1, -1, -1):if stack:board[y][x] = stack.pop(0)else:board[y][x] = random.randint(0,4)return True# 循环消除连锁
def full_clear(board):while eliminate(board):pass# 主游戏逻辑
def game_loop():global gridgrid = init_board()while True:show_board()cmd = input("请输入指令:").strip()if cmd.lower() == "q":print("游戏结束,最终得分:", score)breaktry:x1,y1,x2,y2 = map(int, cmd.split())p1 = (x1,y1)p2 = (x2,y2)if not near(p1,p2):input("只能交换相邻方块!按回车继续")continue# 交换测试swap(grid, p1, p2)if not find_match(grid):swap(grid, p1, p2)input("交换后无法消除,自动复原,回车继续")else:full_clear(grid)except:input("输入错误!格式示例:0 0 0 1 ,回车继续")if __name__ == "__main__":game_loop()

  

image

 

 2025010167杨书宇

停车场AI识别

import cv2
import hyperlpr3 as lpr3
import tkinter as tk
from tkinter import messagebox
import time# 计费参数
PER_HOUR_PRICE = 4  # 每小时4元
# 车辆存储字典:{车牌号:入场时间戳}
car_data = {}
# 初始化AI车牌识别
plate_ai = lpr3.LicensePlateCatcher(detect_level=lpr3.DETECT_LEVEL_HIGH)# 入场弹窗
def enter_pop(plate_num):root = tk.Tk()root.withdraw()win = tk.Toplevel()win.title("车辆入场")win.geometry("270x150")tk.Label(win, text=f"车牌:{plate_num}\n入场登记完成", font=("黑体",12)).pack(pady=40)tk.Button(win, text="关闭", command=win.destroy).pack()# 出场计费弹窗
def exit_pop(plate_num, hour, money):root = tk.Tk()root.withdraw()win = tk.Toplevel()win.title("停车收费")win.geometry("320x190")msg = f"车牌:{plate_num}\n停车时长:{hour:.2f}小时\n应付金额:{money:.2f}元"tk.Label(win, text=msg, font=("黑体",11)).pack(pady=35)def pay_finish():del car_data[plate_num]win.destroy()tk.Button(win, text="缴费完成离场", command=pay_finish).pack()# 打开摄像头
cap = cv2.VideoCapture(0)
print("启动摄像头,识别车牌自动入场,再次识别同一车牌自动计费,按q关闭")while True:ret, img = cap.read()if not ret:break# AI识别整张画面车牌result_list = plate_ai(img)for info in result_list:plate, score, _, pos = infox1,y1,x2,y2 = pos# 画框+标注车牌cv2.rectangle(img,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(img,f"{plate} {score:.2f}",(x1,y1-8),cv2.FONT_HERSHEY_SIMPLEX,0.7,(0,0,255),2)# 停车逻辑if plate not in car_data:car_data[plate] = time.time()enter_pop(plate)else:in_time = car_data[plate]stop_hours = (time.time() - in_time)/3600fee = round(stop_hours*PER_HOUR_PRICE,2)exit_pop(plate,stop_hours,fee)cv2.imshow("AI车牌识别停车场",img)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

  屏幕截图 2026-06-05 181157

2025010168 袁艺伦

# import pandas as pd
#
# # 模拟榜单数据
# data = [
#     {"排名": 1, "歌曲ID": 100001, "歌名": "歌曲A", "歌手": "歌手1", "时长(秒)": 215},
#     {"排名": 2, "歌曲ID": 100002, "歌名": "歌曲B", "歌手": "歌手2/歌手3", "时长(秒)": 242},
#     {"排名": 3, "歌曲ID": 100003, "歌名": "歌曲C", "歌手": "歌手4", "时长(秒)": 198},
#     {"排名": 4, "歌曲ID": 100004, "歌名": "歌曲D", "歌手": "歌手5/歌手6", "时长(秒)": 267},
#     {"排名": 5, "歌曲ID": 100005, "歌名": "歌曲E", "歌手": "歌手7", "时长(秒)": 229}
# ]
#
# df = pd.DataFrame(data)
# # 最简洁稳定的导出写法,不用嵌套ExcelWriter
# df.to_excel("网易云热歌榜.xlsx", index=False)
# print("✅ Excel文件导出成功!")
# print(df)
import requests
import pandas as pd
import time
from concurrent.futures import ThreadPoolExecutor# 榜单配置
RANK_LIST = {"热歌榜": 3778678,"新歌榜": 3779629,"飙升榜": 19723756,"原创榜": 28840835
}
SELECT_RANK = "热歌榜"
MAX_WORKERS = 2# 完整浏览器请求头,大幅降低被网易云拦截概率
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36","Referer": "https://music.163.com/","Origin": "https://music.163.com","Accept-Language": "zh-CN,zh;q=0.9","Accept": "application/json, text/plain, */*","sec-ch-ua": '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',"sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "Windows","sec-fetch-dest": "empty","sec-fetch-mode": "cors","sec-fetch-site": "same-origin"
}def get_rank_all_songs(playlist_id):api_url = f"http://music.163.com/api/playlist/detail?id={playlist_id}"try:time.sleep(0.3)  # 轻微延时防高频风控resp = requests.get(api_url, headers=HEADERS, timeout=12)res_data = resp.json()if res_data["code"] != 200:print(f"❌ 歌单{playlist_id}请求失败,错误码:{res_data['code']}")return None# 解析榜单歌曲数据playlist_info = res_data["result"]["playlist"]song_raw_list = playlist_info["tracks"]song_result = []for rank, song in enumerate(song_raw_list, start=1):song_id = song["id"]song_name = song["name"]# 拼接多位歌手名字singer_names = "/".join([artist["name"] for artist in song["ar"]])# 毫秒转秒duration = round(song["dt"] / 1000)song_result.append({"排名": rank,"歌曲ID": song_id,"歌名": song_name,"歌手": singer_names,"时长(秒)": duration})print(f"✅ 成功抓取{len(song_result)}首榜单歌曲")return song_resultexcept Exception as e:print(f"⚠️ 爬取出现异常:{e}")return Noneif __name__ == "__main__":target_id = RANK_LIST[SELECT_RANK]song_data = get_rank_all_songs(target_id)if song_data:df = pd.DataFrame(song_data)file_name = f"网易云_{SELECT_RANK}.xlsx"df.to_excel(file_name, index=False)print(f"\n🎉 全部完成!数据已导出文件:{file_name}")else:print("\n💡 未获取到榜单数据,接口被拦截/网络异常,可多运行1~2次重试")
屏幕截图 2026-06-06 195543

 2025010169闵子怡+亮度调节

import cv2
import numpy as np
import osdef imread_chinese(path):"""支持中文路径的图片读取"""with open(path, "rb") as f:data = f.read()img_array = np.asarray(bytearray(data), dtype=np.uint8)img = cv2.imdecode(img_array, cv2.IMREAD_COLOR)return imgdef imwrite_chinese(path, img):"""支持中文路径的图片保存"""ext = os.path.splitext(path)[1]success, encoded = cv2.imencode(ext, img)if success:with open(path, "wb") as f:f.write(encoded.tobytes())return Truereturn False# ========== 你的图片路径 ==========
image_path = r"C:\Users\Admin\Desktop\闵子怡.jpg"# 读取图片
img = imread_chinese(image_path)if img is None:print("❌ 图片读取失败!请检查:")print("   1. 文件是否在桌面上")print(f"   2. 路径是否正确: {image_path}")print("   3. 文件名是否是「闵子怡.jpg」")exit()print(f"✅ 读取成功!图片尺寸: {img.shape}")brightness = 0
window_name = "亮度调节 - 拖动滑动条"def update(x):global brightnessbrightness = x - 100img_bright = np.clip(img.astype(np.int16) + brightness, 0, 255).astype(np.uint8)display = img_bright.copy()cv2.putText(display, f"亮度: {brightness:+d}", (10, 40),cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)cv2.imshow(window_name, display)cv2.namedWindow(window_name)
cv2.createTrackbar("滑动条", window_name, 100, 200, update)
update(100)print("\n【操作说明】")
print("  🖱️ 拖动滑动条 → 实时调节亮度")
print("  💾 按空格键 → 保存图片")
print("  ❌ 按 ESC键 → 退出")while True:key = cv2.waitKey(1) & 0xFFif key == 27:  # ESCbreakelif key == ord(' '):  # 空格保存img_bright = np.clip(img.astype(np.int16) + brightness, 0, 255).astype(np.uint8)save_path = r"C:\Users\Admin\Desktop\闵子怡_bright.jpg"if imwrite_chinese(save_path, img_bright):print(f"✅ 已保存: {save_path} (亮度: {brightness:+d})")else:print("❌ 保存失败")cv2.destroyAllWindows()

屏幕截图 2026-06-08 092539

 

 2025010170张家祺

 蔬菜店打折计算函数

from datetime import (datetime)def vegetable_discount(produce_str, buy_str, price):produce_date = datetime.strptime(produce_str, "%Y/%m/%d")buy_date = datetime.strptime(buy_str, "%Y/%m/%d")days = (buy_date - produce_date).daysif days <= 3:discount = 1.0elif days == 4:discount = 0.9elif days == 5:discount = 0.8else:discount = 0.7final_price = price * discountreturn days, discount, final_priceprint("蔬菜店折扣计算")
produce_date = input("请输入生产日期(格式:YYYY/MM/DD):")
buy_date = input("请输入购买日期(格式:YYYY/MM/DD):")
original_price = float(input("请输入蔬菜原价:"))days, dis, final = vegetable_discount(produce_date, buy_date, original_price)print(f"蔬菜存放天数:{days} 天")
print(f"折扣比例:{dis}")
print(f"折后价格:{final:.2f} 元")
屏幕截图 2026-06-07 231300

 

 

2025010171陈宣汝
# 导入课本datetime日期模块 + 窗口工具 from datetime import date import tkinter as tk# 计算倒计时 def dao_ji():# 读取截止日期y = int(year.get())m = int(month.get())d = int(day.get())jiezhi = date(y, m, d)xianzai = date.today()# 算相差天数tian = (jiezhi - xianzai).daysres.config(text=f"距离任务结束还有:{tian} 天")# 创建简单窗口 win = tk.Tk() win.title("简易倒计时")# 输入框 tk.Label(win,text="截止年份:").pack() year = tk.Entry(win) year.pack()tk.Label(win,text="截止月份:").pack() month = tk.Entry(win) month.pack()tk.Label(win,text="截止日期:").pack() day = tk.Entry(win) day.pack()# 按钮+结果 tk.Button(win,text="点击计算",command=dao_ji).pack(pady=10) res = tk.Label(win,text="",font=("黑体",15)) res.pack()win.mainloop()
0341d11966025cc37233a1d33fda84fd

 

 

 



2025010172 张景悦
字符串截取函数
# 1. 自己定义一个截取子串的函数 def my_cut(s, start, end):result = ""for i in range(start, end):result += s[i]return result # 2. 用这个函数截取三段字符串 if __name__ == "__main__":text = "Python安康学院编程" # 原字符串 part1 = my_cut(text, 0, 3)part2 = my_cut(text, 3, 7)part3 = my_cut(text, 7, 11) # 3. 输出三段结果print("第一段:", part1)print("第二段:", part2)print("第三段:", part3)
QQ_1780513725502

 

2025010173杨云飞

一个音频随机抽取一个片段

import wave
import randomdef random_wav_segment(input_path, output_path, duration=5):with wave.open(input_path, 'rb') as in_wav:# 获取音频参数(声道数、采样宽度、帧率等)params = in_wav.getparams()frame_rate = params.framerate  # 每秒帧数total_frames = params.nframes  # 总帧数total_duration = total_frames / frame_rate  # 总时长(秒)# 检查片段时长是否合理if duration >= total_duration:print("抽取时长超过音频总时长,直接保存完整音频")with wave.open(output_path, 'wb') as out_wav:out_wav.setparams(params)out_wav.writeframes(in_wav.readframes(total_frames))return# 计算片段的起始帧数和结束帧数start_frame = random.randint(0, int((total_duration - duration) * frame_rate))end_frame = start_frame + int(duration * frame_rate)# 定位到起始帧并读取片段in_wav.setpos(start_frame)segment_frames = in_wav.readframes(end_frame - start_frame)# 保存片段with wave.open(output_path, 'wb') as out_wav:out_wav.setparams(params)out_wav.writeframes(segment_frames)print(f"已随机抽取 {duration} 秒WAV片段,保存至:{output_path}")# 示例使用(仅支持WAV格式)
if __name__ == "__main__":random_wav_segment("input.wav", "output_segment.wav", duration=3)

屏幕截图 2026-06-06 231853

 

2025010174 刘研
窗口登陆查询体测成绩
from tkinter import * from tkinter import messagebox# 体测成绩数据库 我已经帮你建好 data = {"2025001":{"name":"张三","身高体重":80,"肺活量":76,"50米":82,"长跑":75,"立定跳远":79},"2025002":{"name":"李四","身高体重":60,"肺活量":55,"50米":59,"长跑":45,"立定跳远":65},"2025003":{"name":"你的名字","身高体重":88,"肺活量":90,"50米":85,"长跑":80,"立定跳远":92} }# 判断合格函数 def judge(score):if score >= 60:return "合格"else:return "不合格"# 查询功能 def search():id = entry_id.get()name = entry_name.get()if id not in data:messagebox.showerror("错误","该学号不存在")returnif data[id]["name"] != name:messagebox.showerror("错误","姓名与学号不匹配")return# 取出所有成绩s1 = data[id]["身高体重"]s2 = data[id]["肺活量"]s3 = data[id]["50米"]s4 = data[id]["长跑"]s5 = data[id]["立定跳远"]res = f""" ====体测成绩查询结果==== 身高体重:{s1}分 {judge(s1)} 肺活量:{s2}分 {judge(s2)} 50米跑:{s3}分 {judge(s3)} 耐力长跑:{s4}分 {judge(s4)} 立定跳远:{s5}分 {judge(s5)}"""messagebox.showinfo("查询成功",res)# 搭建窗口 root = Tk() root.title("体测成绩查询系统") root.geometry("400x300")# 组件布置 Label(root,text="学号",font=15).place(x=50,y=60) Label(root,text="姓名",font=15).place(x=50,y=120)entry_id = Entry(root,width=30) entry_id.place(x=120,y=65)entry_name = Entry(root,width=30) entry_name.place(x=120,y=125)Button(root,text="点击查询成绩",command=search,bg="#4299ff",fg="white",width=15).place(x=140,y=180)root.mainloop()

夸克截图_2026-06-08_00-23-50

 2025010175   孙兰妮

通讯录窗口

import tkinter as tk
from tkinter import simpledialog, messageboxclass AddressBook:def __init__(self, root):self.root = rootself.root.title("通讯录")self.root.geometry("500x400")self.contacts = {"张三": "13800000000", "李四": "13912345678"}  # 示例数据# 左侧列表框self.lb = tk.Listbox(root)self.lb.pack(side=tk.LEFT, padx=10, pady=10, fill=tk.BOTH, expand=True)self.lb.bind('<<ListboxSelect>>', self.show_info)# 右侧按钮frame = tk.Frame(root)frame.pack(side=tk.RIGHT, padx=10, pady=10)for text, cmd in [("添加", self.add), ("删除", self.delete), ("修改", self.modify), ("查找", self.search)]:tk.Button(frame, text=text, command=cmd, width=10).pack(pady=5)# 底部信息栏self.info = tk.Label(root, text="", anchor="w")self.info.pack(side=tk.BOTTOM, fill=tk.X, padx=10, pady=5)self.refresh()def refresh(self):"""刷新列表和底部计数"""self.lb.delete(0, tk.END)for name in sorted(self.contacts):self.lb.insert(tk.END, name)self.info.config(text=f"共 {len(self.contacts)} 人")def show_info(self, event):"""点击联系人显示电话"""sel = self.lb.curselection()if sel:name = self.lb.get(sel[0])self.info.config(text=f"{name} : {self.contacts[name]}")def add(self):name = simpledialog.askstring("添加", "姓名")if name and name not in self.contacts:phone = simpledialog.askstring("添加", "电话")if phone:self.contacts[name] = phoneself.refresh()elif name in self.contacts:messagebox.showerror("错误", "联系人已存在")def delete(self):sel = self.lb.curselection()if sel and messagebox.askyesno("确认", "删除?"):name = self.lb.get(sel[0])del self.contacts[name]self.refresh()def modify(self):sel = self.lb.curselection()if sel:name = self.lb.get(sel[0])new_phone = simpledialog.askstring("修改", f"新电话 for {name}")if new_phone:self.contacts[name] = new_phoneself.refresh()else:messagebox.showwarning("警告", "请先选择")def search(self):name = simpledialog.askstring("查找", "姓名")if name in self.contacts:messagebox.showinfo("结果", f"{name} : {self.contacts[name]}")# 高亮for i, n in enumerate(self.lb.get(0, tk.END)):if n == name:self.lb.selection_clear(0, tk.END)self.lb.selection_set(i)self.lb.see(i)self.show_info(None)breakelif name:messagebox.showerror("未找到", "无此联系人")if __name__ == "__main__":root = tk.Tk()AddressBook(root)root.mainloop()

4a120ace0c9cc54c4480f01475dce902

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
http://www.jsqmd.com/news/1032009/

相关文章:

  • 2026年彩瓦翻新膜厂家推荐榜单:广东隔热防腐/自粘屋顶钢结构彩瓦翻新膜、仓库屋面翻新膜品牌精选与选购指南 - 品牌发掘
  • Rufus:让老电脑也能安装Windows 11的USB启动盘制作神器
  • 3步掌握Vin象棋:AI视觉识别让象棋分析从未如此简单
  • 5个理由告诉你为什么SuperSplat是3D高斯点云编辑的革命性突破
  • 【MATLAB】高速机动无人机轨迹平滑控制仿真
  • 2026福清家具城八大品牌推荐|一站式选购避开所有套路 - 资讯速览
  • 2026年淮南市靠谱的驾校,淮安汽车南站院内合规老牌驾校!淮安市蓝天驾驶员培训学校有限公司,C1/C2 培训交通便利收费透明,上班族学车优选 - 资讯速览
  • 丽江改灯哪家好?10 年专业车灯改装门店推荐:丽江星光车灯 - 资讯速览
  • 2026年6月福州整木定制厂口碑排行,避坑要点一次性讲透 - 资讯速览
  • 第七十二天
  • 2026 年南宁润滑油批发商家综合实力权威排行榜 - 星际AI
  • 北京上门回收千万别私下交易,认准北京记录者商行 - 深鉴新闻
  • 影刀RPA 钉钉企微消息推送自动化:工作汇报、审批提醒一键群发
  • 孩子对少儿编程没兴趣怎么办
  • 国内合规大模型替代Gemini的实践指南
  • 2026年AI毛绒玩具怎么选?年龄互动安全认证指南 - 科技焦点
  • Mission Planner无人机地面站系统:3个关键技术策略与5步实施流程
  • 中频点焊机选购指南:如何选到适合高端制造的高品质设备 - 资讯纵览
  • 2026年福州全屋定制5大品牌排行:避坑指南+落地效果对比 - 资讯速览
  • 2026年水处理环保设备厂家推荐榜单:工业/纯水/一体化污水处理设备及成套方案与工程承包实力深度解析 - 品牌发掘
  • 2026 大模型 API 选型复盘:从流量转发到企业级治理的市场演变
  • 2026年逻辑拼插类儿童玩具推荐:五家优选品牌深度解析 - 科技焦点
  • 狮偶编程语言技术架构深度解析:面向现代交互式应用的系统集成评估
  • 嵌入式 Linux 驱动开发:从设备树到字符设备的全链路调试
  • 【Netty源码解读和权威指南】第09篇:Netty编解码框架实战——Protobuf/JSON/自定义协议全覆盖
  • 深度解析79万中文医疗对话数据集:医疗AI大模型微调实战指南
  • 2026年包装机厂家推荐:深度评测与选型指南 - 资讯速览
  • 11604华夏之光永存:黄大年茶思屋榜文116期 第4题50G低插损板级架构及互扰抑制技术硬核工程解题报告
  • Modbus通信、tcp、udp
  • AI与大模型新闻日报 | 2026-06-17