代码行数计数器

2024-08-23 17:44
文章标签 代码 计数器

本文主要是介绍代码行数计数器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做了个记录代码函数的小程序,后缀名记得设置为.pyw,如果你装了python的话可以直接拿来用,免费自取。
功能说明:
1.记录总行数、当前行数、目标行数三个值

2.具有进度条功能

3.行数的多少能激发不同的反馈,如great,good等

4.具有段位系统,参考游戏段位设计

文件目录:

两个文件一个是源代码,一个txt文件保存代码总行数

源代码如下:

import os
import tkinter as tk
from tkinter import ttk, messagebox# 定义目标行数
TARGET_LINES = 1000000# 记录文件路径
record_file = "line_count_record.txt"# 层次名称和颜色映射
tier_names = ["青铜", "白银", "黄金", "铂金", "钻石", "星耀", "王者", "最强王者", "荣耀王者", "归一"]
tier_colors = ["#CD7F32", "#C0C0C0", "#FFD700", "#38B0DE", "#CC3299", "#FF7F00", "#BC1717", "#FF7F00", "#FF2400", "#000000"]def read_record():"""读取记录文件中的行数信息"""if os.path.exists(record_file):with open(record_file, "r", encoding="utf-8") as f:data = f.readlines()if len(data) > 0:total_lines = int(data[0].strip())return total_linesreturn 0def write_record(total_lines):"""将行数信息写入记录文件"""with open(record_file, "w", encoding="utf-8") as f:f.write(f"{total_lines}\n")def update_progress_bar():"""更新进度条和百分比标签"""progress = (total_lines / TARGET_LINES) * 100progress_var.set(progress)label_percentage.config(text=f"{progress:.2f}%")def get_tier_and_rank(total_lines):"""根据总行数计算层次和等级"""tier_index = total_lines // 100000  # 每个层次代表10万行代码rank = (total_lines % 100000) // 10000 + 1  # 每个层次分10阶,每1万行表示1阶if tier_index >= len(tier_names):tier_index = len(tier_names) - 1  # 限制最大层次rank = 10  # 限制最大等级为10阶return tier_index, rankdef show_feedback(new_current_lines):"""根据输入的行数显示反馈消息"""if new_current_lines > 1000:label_feedback.config(text="oh my god!", fg="red")elif new_current_lines > 500:label_feedback.config(text="unbelievable!", fg="purple")elif new_current_lines > 300:label_feedback.config(text="wonderful!", fg="gold")elif new_current_lines > 200:label_feedback.config(text="amazing!", fg="silver")elif new_current_lines > 100:label_feedback.config(text="very good!", fg="cyan")elif new_current_lines > 50:label_feedback.config(text="great!", fg="black")else:label_feedback.config(text="Keep going!", fg="black")def on_submit(event=None):"""提交按钮的回调函数,更新当前行数并保存"""global total_linestry:new_current_lines = int(entry_current_lines.get())total_lines += new_current_lines  # 直接加上当前行数write_record(total_lines)label_total_lines.config(text=f"累计总行数: {total_lines}")update_progress_bar()  # 更新进度条show_feedback(new_current_lines)  # 显示反馈信息tier_index, rank = get_tier_and_rank(total_lines)label_tier.config(text=f"当前层次: {tier_names[tier_index]} {rank}阶", fg=tier_colors[tier_index])messagebox.showinfo("保存成功", "当前行数已更新并保存。")except ValueError:messagebox.showerror("输入错误", "请输入有效的整数行数。")# 读取之前的记录
total_lines = read_record()# 创建图形化界面
root = tk.Tk()
root.title("代码行数记录器")# 设置窗口宽度和位置
window_width = 400  # 宽度设为400像素
window_height = 300  # 高度设为300像素# 获取屏幕宽度和高度
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()# 计算窗口位置,使其位于右上角
x_position = screen_width - window_width
y_position = 0# 设置窗口的大小和位置
root.geometry(f"{window_width}x{window_height}+{x_position}+{y_position}")# 显示目标行数
label_target = tk.Label(root, text=f"目标行数: {TARGET_LINES}")
label_target.pack()# 显示累计总行数
label_total_lines = tk.Label(root, text=f"累计总行数: {total_lines}")
label_total_lines.pack()# 当前行数输入框
label_current = tk.Label(root, text="输入当前增加的行数:")
label_current.pack()entry_current_lines = tk.Entry(root)
entry_current_lines.pack()# 绑定回车键到提交函数
entry_current_lines.bind("<Return>", on_submit)# 提交按钮
btn_submit = tk.Button(root, text="提交", command=on_submit)
btn_submit.pack()# 进度条
progress_var = tk.DoubleVar()
progress_bar = ttk.Progressbar(root, variable=progress_var, maximum=100)
progress_bar.pack(fill=tk.X, padx=10, pady=10)# 百分比显示标签
label_percentage = tk.Label(root, text="0.00%")
label_percentage.pack()# 反馈信息标签
label_feedback = tk.Label(root, text="", font=("Arial", 14))
label_feedback.pack()# 当前层次和等级标签
tier_index, rank = get_tier_and_rank(total_lines)
label_tier = tk.Label(root, text=f"当前层次: {tier_names[tier_index]} {rank}阶", fg=tier_colors[tier_index], font=("Arial", 14))
label_tier.pack()# 初始化进度条
update_progress_bar()# 运行图形化界面
root.mainloop()

这篇关于代码行数计数器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100069

相关文章

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La