当前位置:首页>python>Python 零基础100天—Day20 综合练习

Python 零基础100天—Day20 综合练习

  • 2026-07-01 20:59:05
Python 零基础100天—Day20 综合练习

🐍 综合练习 — Day13-Day19 大串联

🕐 预计用时:3-4 小时 | 🎯 目标:用函数、推导式、文件操作、异常处理完成两个完整项目


📖 今日目录

  1. 项目 1:词频统计程序
  2. 项目 2:联系人通讯录(文件持久化)
  3. 阶段总结:Day13-Day20 回顾

1. 项目 1:词频统计程序 📊

读取文本文件,统计词频,生成排行榜,支持多种输出格式。

📋 需求分析

功能
用到的知识点
读取文本文件
文件操作 + 异常处理
清洗和拆分单词
字符串方法 + 列表推导式
统计词频
字典 + 字典推导式
排序
sorted + lambda
过滤停用词
集合 + 集合推导式
生成报告
格式化字符串

🎯 完整代码

import stringimport osfrom collections import Counter# ============ 配置 ============STOP_WORDS = {    "the", "a", "an", "is", "are", "was", "were", "be", "been",    "have", "has", "had", "do", "does", "did", "will", "would",    "shall", "should", "may", "might", "can", "could", "to", "of",    "in", "for", "on", "with", "at", "by", "from", "as", "into",    "and", "or", "but", "if", "then", "so", "not", "no", "it",    "its", "this", "that", "these", "those", "i", "you", "he",    "she", "we", "they", "me", "him", "her", "us", "them",}# ============ 核心函数 ============def load_text(filename):    """加载文本文件"""    try:        with open(filename, "r", encoding="utf-8") as f:            return f.read()    except FileNotFoundError:        print(f"❌ 文件不存在: {filename}")        return None    except UnicodeDecodeError:        with open(filename, "r", encoding="gbk") as f:            return f.read()def clean_text(text):    """清洗文本:转小写、去标点"""    text = text.lower()    for char in string.punctuation:        text = text.replace(char, " ")    return textdef extract_words(text):    """提取单词列表"""    return [w for w in text.split() if len(w) > 1]def count_words(words, remove_stopwords=True):    """统计词频"""    if remove_stopwords:        words = [w for w in words if w not in STOP_WORDS]    return Counter(words)def get_top_n(freq, n=20):    """获取前 N 个高频词"""    return freq.most_common(n)# ============ 输出函数 ============def print_table(top_words, title="词频统计"):    """表格形式输出"""    if not top_words:        print("  暂无数据")        return    max_count = top_words[0][1]    print(f"\n📊 {title}(前 {len(top_words)} 名)")    print("-" * 45)    for rank, (word, count) in enumerate(top_words, 1):        bar = "█" * int(count / max_count * 20)        print(f"  {rank:2d}. {word:15s} | {bar} {count}")    print("-" * 45)def print_word_cloud(top_words):    """词云形式输出(按大小排列)"""    if not top_words:        return    max_count = top_words[0][1]    print("\n☁️ 词云:")    sizes = []    for word, count in top_words:        ratio = count / max_count        if ratio > 0.8:            sizes.append(f"**{word}**")        elif ratio > 0.5:            sizes.append(f"*{word}*")        else:            sizes.append(word)    print("  " + " ".join(sizes))def save_report(freq, filename="word_report.txt", top_n=50):    """保存完整报告到文件"""    with open(filename, "w", encoding="utf-8") as f:        f.write("=" * 50 + "\n")        f.write("词频统计报告\n")        f.write("=" * 50 + "\n\n")        f.write(f"总词数: {sum(freq.values())}\n")        f.write(f"不重复词数: {len(freq)}\n\n")        f.write(f"Top {top_n}:\n")        f.write("-" * 30 + "\n")        for rank, (word, count) in enumerate(freq.most_common(top_n), 1):            f.write(f"  {rank:3d}. {word:15s} {count:5d}\n")    print(f"✅ 报告已保存: {filename}")# ============ 分析函数 ============def analyze_text(filename, top_n=20):    """完整分析流程"""    print("=" * 50)    print("📊 词频分析器")    print("=" * 50)    # 1. 加载    text = load_text(filename)    if text is None:        return    print(f"📄 文件大小: {len(text)} 字符")    # 2. 清洗    cleaned = clean_text(text)    # 3. 提取    words = extract_words(cleaned)    print(f"📝 总单词数: {len(words)}")    # 4. 统计(含停用词)    all_freq = count_words(words, remove_stopwords=False)    print(f"📚 不重复词数: {len(all_freq)}")    # 5. 统计(去停用词)    freq = count_words(words, remove_stopwords=True)    print(f"🔍 有效词数: {len(freq)}")    # 6. 输出    top = get_top_n(freq, top_n)    print_table(top)    print_word_cloud(top[:10])    # 7. 保存    save_report(freq, "word_report.txt")    # 8. 额外统计    lengths = {len(w) for w in freq.keys()}    print(f"\n📏 单词长度范围: {min(lengths)}-{max(lengths)} 字母")    avg_len = sum(len(w) * c for w, c in freq.items()) / sum(freq.values())    print(f"📏 平均单词长度: {avg_len:.1f} 字母")# ============ 生成测试文件 ============def create_sample():    """创建示例文本"""    sample = """Python is a high-level, general-purpose programming language.Its design philosophy emphasizes code readability with the use of significant indentation.Python is dynamically typed and garbage-collected.It supports multiple programming paradigms, including structured, object-oriented, and functional programming.Python was conceived in the late 1980s by Guido van Rossum at Centrum Wiskunde & Informatica in the Netherlands.Python consistently ranks as one of the most popular programming languages.Python is used extensively in scientific computing, data analysis, artificial intelligence, and web development.The language provides constructs intended to enable clear programs on both small and large scales.Python interpreters are available for many operating systems, allowing Python code to run on a wide variety of systems."""    with open("sample.txt", "w", encoding="utf-8") as f:        f.write(sample)    print("✅ 示例文件已创建: sample.txt")    return "sample.txt"# ============ 主程序 ============if __name__ == "__main__":    filename = create_sample()    analyze_text(filename, top_n=15)

2. 项目 2:联系人通讯录 📇

一个支持增删改查、搜索、导入导出的命令行通讯录,数据持久化到 JSON 文件。

📋 需求分析

功能
用到的知识点
增删改查
字典操作
分组管理
字典推导式
搜索
filter + 字符串方法
数据持久化
json + 文件读写 + 异常处理
导入导出
CSV 文件 + 模块
排序显示
sorted + lambda

🎯 完整代码

import jsonimport osimport csvfrom datetime import datetime# ============ 数据结构 ============# contacts = {#     "id_001": {#         "name": "张三",#         "phone": "13800138001",#         "email": "zhangsan@test.com",#         "group": "朋友",#         "created": "2024-01-15 10:30:00"#     },#     ...# }DATA_FILE = "contacts.json"ID_COUNTER = 0# ============ 文件操作 ============def load_contacts():    """从 JSON 文件加载通讯录"""    global ID_COUNTER    if not os.path.exists(DATA_FILE):        return {}    try:        with open(DATA_FILE, "r", encoding="utf-8") as f:            data = json.load(f)            if data:                max_id = max(int(k.split("_")[1]) for k in data.keys())                ID_COUNTER = max_id            return data    except (json.JSONDecodeError, KeyError) as e:        print(f"⚠️ 数据文件损坏: {e}")        return {}def save_contacts(contacts):    """保存通讯录到 JSON 文件"""    with open(DATA_FILE, "w", encoding="utf-8") as f:        json.dump(contacts, f, indent=2, ensure_ascii=False)def generate_id():    """生成唯一 ID"""    global ID_COUNTER    ID_COUNTER += 1    return f"id_{ID_COUNTER:04d}"# ============ 核心操作 ============def add_contact(contacts):    """添加联系人"""    print("\n➕ 添加联系人")    name = input("  姓名: ").strip()    if not name:        print("  ❌ 姓名不能为空")        return    phone = input("  电话: ").strip()    email = input("  邮箱: ").strip()    group = input("  分组 (朋友/家人/同事/其他): ").strip() or "其他"    contact_id = generate_id()    contacts[contact_id] = {        "name": name,        "phone": phone,        "email": email,        "group": group,        "created": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),    }    save_contacts(contacts)    print(f"  ✅ 已添加: {name} (ID: {contact_id})")def search_contacts(contacts):    """搜索联系人"""    keyword = input("\n🔍 搜索关键词: ").strip().lower()    if not keyword:        return []    results = {        cid: c for cid, c in contacts.items()        if keyword in c["name"].lower()        or keyword in c.get("phone", "")        or keyword in c.get("email", "").lower()        or keyword in c.get("group", "").lower()    }    return resultsdef display_contacts(contacts_dict, title="联系人列表"):    """显示联系人列表"""    if not contacts_dict:        print("  📭 暂无数据")        return    print(f"\n📋 {title}(共 {len(contacts_dict)} 人)")    print("-" * 60)    print(f"  {'ID':8s} {'姓名':8s} {'电话':14s} {'邮箱':20s} {'分组':6s}")    print("-" * 60)    for cid, c in sorted(contacts_dict.items(), key=lambda x: x[1]["name"]):        print(f"  {cid:8s} {c['name']:8s} {c.get('phone',''):14s} {c.get('email',''):20s} {c.get('group',''):6s}")    print("-" * 60)def edit_contact(contacts):    """编辑联系人"""    cid = input("\n✏️ 输入要编辑的 ID: ").strip()    if cid not in contacts:        print("  ❌ ID 不存在")        return    c = contacts[cid]    print(f"  当前: {c['name']} | {c.get('phone','')} | {c.get('email','')}")    name = input(f"  新姓名 (回车保持 '{c['name']}'): ").strip()    phone = input(f"  新电话 (回车保持 '{c.get('phone','')}'): ").strip()    email = input(f"  新邮箱 (回车保持 '{c.get('email','')}'): ").strip()    group = input(f"  新分组 (回车保持 '{c.get('group','')}'): ").strip()    if name:        c["name"] = name    if phone:        c["phone"] = phone    if email:        c["email"] = email    if group:        c["group"] = group    save_contacts(contacts)    print(f"  ✅ 已更新: {c['name']}")def delete_contact(contacts):    """删除联系人"""    cid = input("\n🗑️ 输入要删除的 ID: ").strip()    if cid not in contacts:        print("  ❌ ID 不存在")        return    name = contacts[cid]["name"]    confirm = input(f"  确认删除 '{name}'?(y/n): ").strip().lower()    if confirm == "y":        del contacts[cid]        save_contacts(contacts)        print(f"  ✅ 已删除: {name}")# ============ 统计功能 ============def group_stats(contacts):    """按分组统计"""    if not contacts:        print("  📭 暂无数据")        return    groups = {c.get("group", "未分组") for c in contacts.values()}    stats = {        g: len([c for c in contacts.values() if c.get("group", "未分组") == g])        for g in groups    }    print("\n📊 分组统计:")    for group, count in sorted(stats.items(), key=lambda x: -x[1]):        bar = "█" * count        print(f"  {group:8s} | {bar} ({count}人)")def export_csv(contacts):    """导出为 CSV"""    filename = "contacts_export.csv"    with open(filename, "w", encoding="utf-8-sig", newline="") as f:        writer = csv.writer(f)        writer.writerow(["ID", "姓名", "电话", "邮箱", "分组", "创建时间"])        for cid, c in contacts.items():            writer.writerow([cid, c["name"], c.get("phone",""), c.get("email",""), c.get("group",""), c.get("created","")])    print(f"  ✅ 已导出: {filename}")def import_csv(contacts):    """从 CSV 导入"""    filename = input("  CSV 文件名: ").strip()    if not os.path.exists(filename):        print(f"  ❌ 文件不存在: {filename}")        return    count = 0    try:        with open(filename, "r", encoding="utf-8-sig") as f:            reader = csv.DictReader(f)            for row in reader:                cid = generate_id()                contacts[cid] = {                    "name": row.get("姓名", ""),                    "phone": row.get("电话", ""),                    "email": row.get("邮箱", ""),                    "group": row.get("分组", "其他"),                    "created": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),                }                count += 1        save_contacts(contacts)        print(f"  ✅ 已导入 {count} 条记录")    except Exception as e:        print(f"  ❌ 导入失败: {e}")# ============ 主菜单 ============def show_menu():    """显示菜单"""    print("\n" + "=" * 40)    print("📇 通讯录管理系统")    print("=" * 40)    print("  1. 查看全部    2. 添加联系人")    print("  3. 搜索        4. 编辑联系人")    print("  5. 删除联系人  6. 分组统计")    print("  7. 导出 CSV    8. 导入 CSV")    print("  q. 退出")def main():    """主程序"""    contacts = load_contacts()    print(f"📂 已加载 {len(contacts)} 条联系人")    while True:        show_menu()        choice = input("\n请选择 (1-8/q): ").strip()        if choice == "1":            display_contacts(contacts, "全部联系人")        elif choice == "2":            add_contact(contacts)        elif choice == "3":            results = search_contacts(contacts)            display_contacts(results, "搜索结果")        elif choice == "4":            edit_contact(contacts)        elif choice == "5":            delete_contact(contacts)        elif choice == "6":            group_stats(contacts)        elif choice == "7":            export_csv(contacts)        elif choice == "8":            import_csv(contacts)        elif choice == "q":            save_contacts(contacts)            print("👋 再见!数据已保存。")            break        else:            print("  ❌ 无效选择")if __name__ == "__main__":    main()

3. 阶段总结:Day13-Day20 回顾

Day
主题
核心收获
13
函数基础
def、参数、return、docstring
14
函数进阶
*args/**kwargs、作用域、lambda、闭包
15
内置函数
map/filter/reduce、zip/enumerate、sorted
16
文件操作
open、with、read/write、模式大全
17
异常处理
try/except/else/finally、自定义异常
18
模块与包
import、__name__、pip、requirements.txt
19
推导式
列表/字典/集合推导式、生成器表达式
20
综合练习
词频统计 + 通讯录(全知识点串联)

🎓 函数与模块阶段毕业感言:8 天前,你学会了定义第一个函数。今天,你能写出完整的词频分析器、通讯录管理系统——用函数组织代码、用文件保存数据、用异常处理保证稳定、用推导式简化逻辑。从 Day 21 开始,我们将进入面向对象编程(OOP)的世界——用"类"和"对象"来思考和组织代码,这是从"写脚本"到"写工程"的关键一步。准备好了吗?🚀

🔮 预告: Day 21 类与对象 — class__init__self。编程思维的一次升级!

轻松时刻:

请在微信客户端打开

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 01:01:21 HTTP/2.0 GET : https://f.mffb.com.cn/a/496430.html
  2. 运行时间 : 0.486237s [ 吞吐率:2.06req/s ] 内存消耗:4,351.98kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7fb755fda829696484ee5e78c44529ff
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000405s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000611s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002910s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.010279s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000622s ]
  6. SELECT * FROM `set` [ RunTime:0.000269s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000576s ]
  8. SELECT * FROM `article` WHERE `id` = 496430 LIMIT 1 [ RunTime:0.039580s ]
  9. UPDATE `article` SET `lasttime` = 1783011681 WHERE `id` = 496430 [ RunTime:0.035253s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000318s ]
  11. SELECT * FROM `article` WHERE `id` < 496430 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.020738s ]
  12. SELECT * FROM `article` WHERE `id` > 496430 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.014897s ]
  13. SELECT * FROM `article` WHERE `id` < 496430 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.115327s ]
  14. SELECT * FROM `article` WHERE `id` < 496430 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.099048s ]
  15. SELECT * FROM `article` WHERE `id` < 496430 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.070381s ]
0.488586s