24级数应二班课堂作业4

2024010047 金佳仪 Excel工资表格合计

import pandas as pd
data = pd.read_excel('C:\\Users\\administrator\\Desktop\\三月工资条.xlsx')
print(data.head())
import pandas as pd

import pandas as pd
data = pd.read_excel('C:\\Users\\administrator\\Desktop\\四月工资条.xlsx')
print(data.head())
import pandas as pd

import pandas as pd
data = pd.read_excel('C:\\Users\\administrator\\Desktop\\工资条合计.xlsx')
print(data.head())
import pandas as pd
def merge_salary_excel(march_file, april_file, output_file):
    try:
        # 读取三月份工资表格
        march_df = pd.read_excel(march_file)
        # 读取四月份工资表格
        april_df = pd.read_excel(april_file)

        # 合并两个DataFrame
        combined_df = pd.concat([march_df, april_df], ignore_index=True)

        # 将合并后的数据写入新的Excel文件
        combined_df.to_excel(output_file, index=False)
        print(f"已成功生成合计的工资表格: {output_file}")
    except FileNotFoundError as e:
        print(f"文件未找到: {e}")
    except Exception as e:
        print(f"发生错误: {e}")


if __name__ == "__main__":
    march_salary_file = '三月工资条.xlsx'
    april_salary_file = '四月工资条.xlsx'
    output_salary_file = '工资条合计.xlsx'
    merge_salary_excel(march_salary_file, april_salary_file, output_salary_file)

 

2024010052 雷升官 读取西游记文字中人名

import tkinter as tk


def move_image(event):
    key = event.keysym
    speed = 10
    x, y = 0, 0

    if key == "Up":
        y -= speed
    elif key == "Down":
        y += speed
    elif key == "Left":
        x -= speed
    elif key == "Right":
        x += speed

    canvas.move(image_item, x, y)


root = tk.Tk()
root.title("键盘控制图片移动")

# 请将图片替换为你的 GIF 文件路径
img = tk.PhotoImage(file="C:/Users/景勇强/Desktop/新建文件夹/image.gif")

canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
image_item = canvas.create_image(200, 200, image=img)

root.bind("<Key>", move_image)
root.focus_set()  # 确保窗口获得焦点
root.mainloop()

 

2024010048 景勇强 GIF动画移动

import tkinter as tk


def move_image(event):
    key = event.keysym
    speed = 10
    x, y = 0, 0

    if key == "Up":
        y -= speed
    elif key == "Down":
        y += speed
    elif key == "Left":
        x -= speed
    elif key == "Right":
        x += speed

    canvas.move(image_item, x, y)


root = tk.Tk()
root.title("键盘控制图片移动")

# 请将图片替换为你的 GIF 文件路径
img = tk.PhotoImage(file="C:/Users/景勇强/Desktop/新建文件夹/image.gif")

canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
image_item = canvas.create_image(200, 200, image=img)

root.bind("<Key>", move_image)
root.focus_set()  # 确保窗口获得焦点
root.mainloop()

 

2024010077 马京兴 excel 出勤统计

import pandas as pd
import os

# 配置文件路径
EXCEL_FILE = "attendance.xlsx"

def init_excel():
    """初始化Excel文件(如果不存在)"""
    if not os.path.exists(EXCEL_FILE):
        # 创建最简单的表结构
        df = pd.DataFrame(columns=["日期", "姓名", "出勤状态"])
        df.to_excel(EXCEL_FILE, index=False)
        print(f"已创建空白出勤表: {EXCEL_FILE}")

def show_raw_data():
    """直接打印Excel原始内容"""
    try:
        df = pd.read_excel(EXCEL_FILE)
        print("\n=== 当前出勤数据 ===")
        print(df.to_string(index=False))  # 不显示行索引
    except Exception as e:
        print(f"读取失败: {e}")

if __name__ == "__main__":
    init_excel()
    show_raw_data()

 

2024010050 康佳莹 excel工资表格合计

import pandas as pd
data = pd.read_excel('C:\\Users\\administrator\\Desktop\\三月工资条.xlsx')
print(data.head())
import pandas as pd

import pandas as pd
data = pd.read_excel('C:\\Users\\administrator\\Desktop\\四月工资条.xlsx')
print(data.head())
import pandas as pd

import pandas as pd
data = pd.read_excel('C:\\Users\\administrator\\Desktop\\工资条合计.xlsx')
print(data.head())
import pandas as pd
def merge_salary_excel(march_file, april_file, output_file):
    try:
        # 读取三月份工资表格
        march_df = pd.read_excel(march_file)
        # 读取四月份工资表格
        april_df = pd.read_excel(april_file)

        # 合并两个DataFrame
        combined_df = pd.concat([march_df, april_df], ignore_index=True)

        # 将合并后的数据写入新的Excel文件
        combined_df.to_excel(output_file, index=False)
        print(f"已成功生成合计的工资表格: {output_file}")
    except FileNotFoundError as e:
        print(f"文件未找到: {e}")
    except Exception as e:
        print(f"发生错误: {e}")


if __name__ == "__main__":
    march_salary_file = '三月工资条.xlsx'
    april_salary_file = '四月工资条.xlsx'
    output_salary_file = '工资条合计.xlsx'
    merge_salary_excel(march_salary_file, april_salary_file, output_salary_file)

 

2024010057 李楠  文件夹中含有a字符的文件移动到另一文件夹中

#导入工具包
import os#文件路径操作
import shutil#文件移动'操作

#定义移动函数
def move_files_with_a(source_folder, target_folder):
    """
    将包含字母'a'的文件从源文件夹移动到目标文件夹

    参数:
        source_folder (str): 源文件夹路径
        target_folder (str): 目标文件夹路径
    """
    # 确保目标文件夹存在
    if not os.path.exists(target_folder):
        os.makedirs(target_folder)

    # 遍历源文件夹中的所有文件
    for filename in os.listdir(source_folder):
        # 检查文件名中是否包含'a'(不区分大小写)
        if 'a' in filename.lower():
            source_path = os.path.join(source_folder, filename)
            target_path = os.path.join(target_folder, filename)

            # 移动文件
            shutil.move(source_path, target_path)
            print(f"已移动: {filename}")


if __name__ == "__main__":
    # 设置文件夹路径 - 请根据实际情况修改
    source_dir = "原文件夹路径"  # 替换为你的源文件夹路径
    target_dir = "目标文件夹路径"  # 替换为你的目标文件夹路径

    # 执行移动操作
    move_files_with_a(source_dir, target_dir)
    print("文件移动完成!")

2024010059 李若楠 框选车牌

import cv2
import easyocr

image_path = r"D:\111\car.jpg"
image = cv2.imread(image_path)

reader = easyocr.Reader(['ch_sim', 'en'])

results = reader.readtext(image)

for (bbox, text, confidence) in results:
    if len(text) >= 5 and confidence > 0.5:
        (top_left, top_right, bottom_right, bottom_left) = bbox
        top_left = tuple(map(int, top_left))
        bottom_right = tuple(map(int, bottom_right))
        cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)
        cv2.putText(image, text, (top_left[0], top_left[1] - 10),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2)
        print(f"检测到车牌:{text},置信度:{confidence:.2f}")

cv2.imshow("Detected License Plate", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

2024010062 廖佳怡 统计出勤人数

import pandas as pd
# 读取Excel文件,指定桌面路径下的点名表.xlsx ,注意路径中的反斜杠需转义
df = pd.read_excel('点名表.xlsx')
print(df)
# # 假设出勤情况在名为'出勤'的列中,根据实际列名修改
attendance_column = '出勤情况'
# # 统计出勤人数,假设出勤标记为'出勤'
attendance_count = (df[attendance_column] == '出勤').sum()
print(f"出勤人数为:{attendance_count}")

2024010064 刘纯怡 将图片滚动

import tkinter as tk
from tkinter import PhotoImage, Canvas, Scrollbar, Tk

# 创建主窗口
root = Tk()
root.title("图片滚动示例")

try:
    # 加载图片
    photo = PhotoImage(file="D:/images/page.gif")  # 替换为你的图片路径
except tk.TclError:
    print("无法打开图片文件。请确保图片格式为GIF、PPM或PNG。")
    exit()

# 创建Canvas并设置滚动区域
canvas = Canvas(root, width=600, height=400, scrollregion=(0, 0, photo.width(), photo.height()))
canvas.pack(fill=tk.BOTH, expand=True)

# 在Canvas上创建图片
canvas.create_image(0, 0, anchor='nw', image=photo)

# 创建水平滚动条
h_scroll = Scrollbar(root, orient=tk.HORIZONTAL, command=canvas.xview)
h_scroll.pack(fill=tk.X)

# 配置Canvas的滚动条
canvas.config(xscrollcommand=h_scroll.set)

# 运行主循环
root.mainloop()

 

2024010068 刘晓津 将文档更改

from docx import Document
from docx.shared import RGBColor

def change_red_to_blue(docx_path):
    document = Document(docx_path)
    for paragraph in document.paragraphs:
        for run in paragraph.runs:
            if run.font.color:
                if run.font.color.rgb == RGBColor(255, 0, 0):  # 红色的 RGB 值
                    run.font.color.rgb = RGBColor(0, 0, 255)  # 蓝色的 RGB 值

    document.save(docx_path)

# 使用示例
docx_path = '123.docx'  # 替换为你的实际文档路径
change_red_to_blue(docx_path)

 2024010080 毛蕊婷 excel表格联动

import pandas as pd
from openpyxl import load_workbook

# 创建基础数据表(职位工资表)
positions_df = pd.DataFrame({
    '职位': ['经理', '工程师', '会计'],
    '工资': [50000, 40000, 35000]
})

# 创建员工信息表(仅包含姓名和职位)
employees_df = pd.DataFrame({
    '姓名': ['张三', '李四', '王五'],
    '职位': ['经理', '工程师', '会计']
})

# 生成Excel文件(第一次生成)
with pd.ExcelWriter('联动表格.xlsx', engine='openpyxl') as writer:
    positions_df.to_excel(writer, sheet_name='职位工资表', index=False)
    employees_df.to_excel(writer, sheet_name='员工信息表', index=False)

# 使用openpyxl添加公式
wb = load_workbook('联动表格.xlsx')
ws_employee = wb['员工信息表']

# 在员工信息表中插入工资列
ws_employee.insert_cols(3)  # 在C列插入新列
ws_employee['C1'] = '工资'

# 为每个员工添加VLOOKUP公式
for row in range(2, ws_employee.max_row + 1):
    formula = f'=VLOOKUP(B{row}, 职位工资表!A:B, 2, FALSE)'
    ws_employee[f'C{row}'] = formula

wb.save('联动表格.xlsx')

print("Excel文件已生成,文件名为:联动表格.xlsx")

 2024010075鲁美宏将一个文件夹里的文件大小排序后将其写入txt文件夹里

import os

def generate_file_report():
    # 源文件夹路径(直接使用用户提供的路径)
    source_dir = r"C:\Users\鲁美宏\Desktop\新建文件夹"
    # 输出文件夹路径(独立指定)
    output_dir = r"C:\Users\鲁美宏\Desktop\Txt"
    
    try:
        # 创建输出目录(自动处理已存在的情况)
        os.makedirs(output_dir, exist_ok=True)
        
        # 获取文件列表并排序
        files = []
        with os.scandir(source_dir) as entries:
            for entry in entries:
                if entry.is_file():
                    size = entry.stat().st_size
                    files.append((entry.name, size))
        
        # 按文件大小降序排序
        sorted_files = sorted(files, key=lambda x: x[1], reverse=True)
        
        # 生成报告文件
        report_path = os.path.join(output_dir, "文件大小报告.txt")
        with open(report_path, "w", encoding="utf-8") as f:
            # 写入带中文标题的表格头
            f.write(f"{'文件名':<40}{'大小(字节)':>20}\n")
            f.write("-" * 60 + "\n")
            
            # 写入格式化数据行
            for name, size in sorted_files:
                # 使用千位分隔符并保持列对齐
                f.write(f"{name:<40}{size:>20,}\n")
        
        print(f"报告已生成至:{report_path}")
        print(f"共处理 {len(sorted_files)} 个文件")

    except FileNotFoundError:
        print(f"错误:源文件夹不存在 - {source_dir}")
    except PermissionError:
        print(f"错误:没有访问权限 - {source_dir}")
    except Exception as e:
        print(f"发生未知错误:{str(e)}")

if __name__ == "__main__":
    generate_file_report()

 

posted @ 2025-05-18 21:17  szmtjs10  阅读(7)  评论(0)    收藏  举报