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)

屏幕截图 2026-06-05 114342

 

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("括号不匹配,缺少括号")

屏幕截图 2026-06-05 115904

 


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("切割完成!文件已保存在「九宫格输出」文件夹里")
屏幕截图 2026-06-04 215241

 

  


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("✅ 正确格式 = 纯数字 + 纯中文姓名,无空格、无符号、无英文")
Screenshot_20260604214745

 


 

 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)
2

 


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))
屏幕截图 2026-06-04 213128

 

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()

屏幕截图 2026-06-06 163933

 

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)

 屏幕截图 2026-06-04 220227

 

 


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("❌ 括号不匹配 / 未闭合")

屏幕截图 2026-06-04 211803

 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()

微信图片_20260606233249_1908_78

 

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])
图片3

 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()

  502ed73abbc4954c30eef726a1e339f9

 

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已取消操作。")

image

 

image

 

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())

联想截图_20260608081731

 

 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} 字节")
屏幕截图 2026-06-07 235755

 

 

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} 次")
image

 



 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}次")
屏幕截图 2026-06-06 235952

 

 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()

image

 

闫宸熙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("文件不存在!")
屏幕截图 2026-06-08 234628

 

 

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)
屏幕截图 2026-06-04 233716

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()
联想截图_20260608085849

 

 

 

 

 

 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")
屏幕截图 2026-06-05 171743

 

 2025010161朱星月

天气字典描述

# 天气描述字典:key=天气状况,value=文字描述
weather_dict = {
    "晴": "天空万里无云,阳光明媚,微风拂面,适合出门活动。",
    "多云": "云层较多,阳光时隐时现,气温舒适,不冷不热。",
    "阴": "天空被乌云笼罩,光线偏暗,空气略显沉闷。",
    "小雨": "淅淅沥沥下起小雨,细雨绵绵,地面微微湿润。",
    "大雨": "雨势急促滂沱,雨声较大,出行需要带好雨具。",
    "雾": "清晨浓雾弥漫,能见度较低,四周朦胧一片。",
    "风": "大风呼啸而过,树枝摇曳,体感凉意十足。"
}

# 调用示例
print(weather_dict["晴"])
print(weather_dict["小雨"])

屏幕截图 2026-06-06 225746

 

 

 

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()

屏幕截图 2026-06-06 144551

 


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)
微信图片_20260605103837_308_1

 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()

屏幕截图 2026-06-07 214615

 

 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()

 

image

 

 

 

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()

  屏幕截图 2026-06-05 175824

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()

屏幕截图 2026-06-06 195112

 

 闵子怡+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)
屏幕截图 2026-06-07 231006

 

 

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()cbde095c03e875c3b15f3a59e5717a22

 


 

 

 


2025010172 张景悦
注册用户名
name = input("输入用户名:") # 规定特殊字符集合 fuhao = "!@#$%^&*" # 判断长度 if len(name) != 6: print("必须6位字符") # 判断有没有特殊符号 elif not any(c in fuhao for c in name): print("必须包含1个特殊字符(!@#$%^&*)") else: print("注册成功")
QQ_1780512173349

 

    杨云飞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()

屏幕截图 2026-06-06 204407

 

 

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()

夸克截图_2026-06-08_00-18-47

夸克截图_2026-06-08_00-19-11

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()

0c7c9b07347e50d8fc5c94d7a0dffd0a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
posted @ 2026-06-17 20:59  szmtjs10  阅读(13)  评论(0)    收藏  举报