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

Python3 【函数】项目实战:5 个新颖的学习案例

Python3 【函数】项目实战:5 个新颖的学习案例

本文包含5编程学习案例,具体项目如下:

  1. 简易聊天机器人
  2. 待办事项提醒器
  3. 密码生成器
  4. 简易文本分析工具
  5. 简易文件加密解密工具

项目 1:简易聊天机器人

功能描述:
实现一个简易聊天机器人,根据用户输入返回预设的响应。

代码:

def chatbot_response(user_input):
    responses = {
        "hello": "Hello! How can I help you?",
        "how are you": "I'm just a bot, but I'm doing great!",
        "bye": "Goodbye! Have a nice day!",
        "default": "I'm not sure how to respond to that."
    }
    return responses.get(user_input.lower(), responses["default"])

# 测试案例
print(chatbot_response("Hello"))  # 输出: Hello! How can I help you?
print(chatbot_response("How are you"))  # 输出: I'm just a bot, but I'm doing great!
print(chatbot_response("What's your name?"))  # 输出: I'm not sure how to respond to that.

执行结果:

Hello! How can I help you?
I'm just a bot, but I'm doing great!
I'm not sure how to respond to that.

项目 2:简易待办事项提醒器

功能描述:
实现一个简易待办事项提醒器,支持添加任务、设置提醒时间,并在指定时间提醒用户。

代码:

import time
from datetime import datetime

def add_task(tasks, task, reminder_time):
    tasks.append({"task": task, "reminder_time": reminder_time})

def check_reminders(tasks):
    current_time = datetime.now()
    for task in tasks:
        if current_time >= task["reminder_time"]:
            print(f"Reminder: {task['task']} is due now!")
            tasks.remove(task)

# 测试案例
tasks = []
add_task(tasks, "Buy groceries", datetime(2025, 1, 27, 10, 26))  # 设置提醒时间为 2025-1-27 10:26
add_task(tasks, "Read a book", datetime(2025, 1, 27, 10, 28))    # 设置提醒时间为 2025-1-27 10:28

while tasks:
    check_reminders(tasks)
    time.sleep(60)  # 每分钟检查一次

执行结果:

Reminder: Buy groceries is due now!  # 当时间到达 2025-1-27 10:26 时输出
Reminder: Read a book is due now!    # 当时间到达 2025-1-27 10:28 时输出

项目 3:密码生成器

功能描述:
实现一个密码生成器,生成包含大小写字母、数字和特殊字符的随机密码。

代码:

import random
import string

def generate_password(length=12):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

# 测试案例
print("Generated Password:", generate_password())  # 输出: 随机生成的密码,如 "A1b@C3d$E5f^"

执行结果:

Generated Password: A1b@C3d$E5f^

项目 4:简易文本分析工具

功能描述:
实现一个简易文本分析工具,统计文本中的单词数量、字符数量和最常见的单词。

代码:

from collections import Counter

def analyze_text(text):
    words = text.split()
    word_count = len(words)
    char_count = len(text)
    most_common_word = Counter(words).most_common(1)[0][0]
    return {
        "word_count": word_count,
        "char_count": char_count,
        "most_common_word": most_common_word
    }

# 测试案例
text = "This is a simple text analysis tool. It counts words and characters."
result = analyze_text(text)
print(result)

执行结果:

{
    'word_count': 12,
    'char_count': 68,
    'most_common_word': 'This'
}



项目 5:简易文件加密解密工具

功能描述:
实现一个简易文件加密解密工具,使用简单的字符替换算法对文件内容进行加密和解密。

代码:

def encrypt(text, key):
    encrypted_text = ""
    for char in text:
        encrypted_text += chr(ord(char) + key)
    return encrypted_text

def decrypt(encrypted_text, key):
    decrypted_text = ""
    for char in encrypted_text:
        decrypted_text += chr(ord(char) - key)
    return decrypted_text

def encrypt_file(input_file, output_file, key):
    with open(input_file, 'r') as file:
        text = file.read()
    encrypted_text = encrypt(text, key)
    with open(output_file, 'w') as file:
        file.write(encrypted_text)

def decrypt_file(input_file, output_file, key):
    with open(input_file, 'r') as file:
        encrypted_text = file.read()
    decrypted_text = decrypt(encrypted_text, key)
    with open(output_file, 'w') as file:
        file.write(decrypted_text)

# 测试案例
encrypt_file("input.txt", "encrypted.txt", 3)  # 加密文件
decrypt_file("encrypted.txt", "decrypted.txt", 3)  # 解密文件

执行结果:

  • 生成 encrypted.txt,内容为加密后的文本。
  • 生成 decrypted.txt,内容与原始文件 input.txt 相同。

总结

以上 5 个迷你项目涵盖了密码生成、待办事项提醒、聊天机器人、文本分析和文件加密解密等新颖且实用的功能。每个项目都附有测试案例和执行结果,适合用于学习和练习 Python 函数的综合应用。


http://www.kler.cn/a/521861.html

相关文章:

  • SOME/IP--协议英文原文讲解2
  • Openfga 授权模型搭建
  • 基于物联网的火灾报警器设计与实现(论文+源码)
  • 私有包上传maven私有仓库nexus-2.9.2
  • 【某大厂一面】数组和链表区别
  • Hugging Face 推出最小体积多模态模型,浏览器运行成为现实!
  • 从0到1:.NET Core微服务的Docker容器奇幻冒险
  • springboot 动态线程池
  • 省级金融发展水平数据(2000-2022年)-社科数据
  • git困扰的问题
  • C++标准线程库实现优雅退出的方式
  • three.js+WebGL踩坑经验合集(5.2):THREE.Mesh和THREE.Line2在镜像处理上的区别
  • AndroidCompose Navigation导航精通2-过渡动画与路由切换
  • Python GUI 开发 | PySide6 辅助工具简介
  • 恒源云云GPU服务器训练模型指南
  • 二分算法 (二)
  • Springboot使用复盘
  • 计算机视觉算法实战——车辆速度检测
  • Linux常见问题解决方法--1
  • 度小满Java开发面试题及参考答案 (上)
  • 62.异步编程+Prism
  • 数据结构实战之线性表(一)
  • 【算法】多源 BFS
  • YOLOv8:目标检测与实时应用的前沿探索
  • HTML5使用favicon.ico图标
  • android 的aab包