python系统之综合案例:用python打造智能诗词生成助手

news2025/4/4 6:56:04

不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。

python系列之综合案例

  • 前言
  • 一、项目描述
  • 二、项目需求
  • 三、 项目实现
    • 1、开发准备
    • 2、代码实现
  • 四、代码解读
    • 1、变量与数据类型
    • 2、运算符
    • 3、输入输出语句
    • 4、控制流程语句
    • 5、函数
    • 6、高阶函数
  • 五、总结

python系列前期章节

  1. python系列之注释与变量
  2. python系列之输入输出语句与数据类型
  3. python系列之运算符
  4. python系列之控制流程语句
  5. python系列之字符串
  6. python系列之列表
  7. python系列之元组
  8. python系列之字典
  9. python系列之集合
  10. python系列之函数基础
  11. python系列之函数进阶

前言

       本章是python系列的第12章,前面几章已经学习了很多的python基础知识点,比如最开始的变量、注释、运算符到控制语句、数据类型,然后函数等。每一章有都有实践案例,目的是以应用为驱动,由浅入深的学习。本章暂时不进行新的知识讲解,而要温故而知新,做一个小项目。那么废话不多说,直接开干~

一、项目描述

在诗词的世界里,每一首诗都承载着诗人独特的情感与意境。今天,我们就用Python打造一个别具一格的诗词生成助手,深入体验Python基础语法和高阶特性的魅力。项目名称为 智能诗词生成助手

二、项目需求

我们要创建一个诗词生成助手,它能根据用户输入的季节和情感,生成与之匹配的简单诗词,帮助用户快速获取创作灵感。

三、 项目实现

1、开发准备

本项目在Python 3.7+环境下开发,代码使用PyCharm编辑器编写。你可根据实际需求,调整代码运行环境。

2、代码实现


#导入random模块,用于生成随机数,在选择诗词元素时增加随机性
import random

#创建一个函数,让它根据输入的季节和情感,生成相应的诗词
def generate_poem(season, emotion):
    # 定义一些描述季节的词汇
    season_words = {
        "春天": ["嫩绿", "花香", "鸟鸣"],
        "夏天": ["烈日", "蝉鸣", "荷香"],
        "秋天": ["金黄", "落叶", "雁归"],
        "冬天": ["白雪", "寒风", "梅香"]
    }

    # 定义一些描述情感的词汇
    emotion_words = {
        "喜悦": ["欢快", "愉悦", "欣喜"],
        "悲伤": ["忧愁", "哀伤", "痛苦"],
        "平静": ["安宁", "静谧", "平和"]
    }

    # 使用高阶函数choice从季节和情感词汇中随机选择一个
    s_word = random.choice(season_words[season])
    e_word = random.choice(emotion_words[emotion])

    # 根据季节和情感组合生成诗词
    poem = f"{season}{ s_word},透着{ e_word}的气息。"
    return poem

#获取用户输入的季节
while True:
    season = input("请输入季节(春天、夏天、秋天、冬天):")
    if season in ["春天", "夏天", "秋天", "冬天"]:
        break
    print("输入错误,请重新输入!")

#获取用户输入的情感
while True:
    emotion = input("请输入情感(喜悦、悲伤、平静):")
    if emotion in ["喜悦", "悲伤", "平静"]:
        break
    print("输入错误,请重新输入!")

#调用generate_poem函数生成诗词
result = generate_poem(season, emotion)
print("生成的诗词:", result)
 

参考运行结果:
运行结果

四、代码解读

1、变量与数据类型

在上述代码中, season_words 和 emotion_words 是字典类型的变量,分别用于存储描述季节和情感的词汇。 season 、 emotion 和 result 则是字符串类型变量,用于存储用户输入和生成的诗词。

2、运算符

这里虽没有复杂的数学运算,但赋值运算符 = 用于将值赋给变量,保证程序的顺利运行。

3、输入输出语句

input() 函数用于获取用户输入的季节和情感。 print() 函数负责输出提示信息和生成的诗词。

4、控制流程语句

while 循环用于验证用户输入是否正确。只有当用户输入正确的季节和情感时,循环才会结束,确保程序的健壮性。

5、函数

generate_poem() 是一个自定义函数,接受季节和情感作为参数,返回生成的诗词。它将复杂的诗词生成逻辑封装起来,提高了代码的可读性和可维护性。

6、高阶函数

random.choice() 属于高阶函数,它从序列中随机选择一个元素,在生成诗词时为诗词元素的选择增加了随机性。

五、总结

通过这个诗词生成助手项目,我们不仅巩固了Python的基础语法,还体验了高阶函数在实际项目中的应用。你可以发挥想象力,进一步优化这个项目,如增加更多的诗词元素、改进诗词的结构,使其生成更优美、更有韵味的诗词。希望大家能从这个项目中感受到Python的魅力,开启更多有趣的编程之旅!

本人学识浅薄,文章中有不足之处,还请各方道友在评论区留言,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2326215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23种设计模式-结构型模式-桥接器

文章目录 简介问题解决方案示例总结 简介 桥接器是一种结构型设计模式,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。 问题 假如你有一个几何形状Shape类,它有两个子类:圆形C…

K8S学习之基础五十八:部署nexus服务

部署nexus服务 Nexus服务器是一个代码包管理的服务器,可以理解 Nexus 服务器是一个巨大的 Library 仓库。Nexus 可以支持管理的工具包括 Maven , npm 等,对于 JAVA 开发来说,只要用到 Maven 管理就可以了。Nexus服务器作用&#x…

Docker Desktop 界面功能介绍

Docker Desktop 界面功能介绍 左侧导航栏 Containers(容器): 用于管理容器,包括查看运行中或已停止的容器,检查容器状态、日志,执行容器内命令,启动、停止、删除容器等操作。Images(镜像): 管理本地 Docker 镜像,可查看镜像列表、从 Docker Hub 拉取新镜像、删除镜…

C++ set map

1.set和map是什么 set和map是 C STL 提供的容器,用于高效的查找数据,底层采用红黑树实现,其中set是Key模型,map是Key-Value模型 set和map的基本使用较为简单,这里不再叙述,直接进入实现环节 2.set和map的…

Spring AI Alibaba 对话记忆使用

一、对话记忆 (ChatMemory)简介 1、对话记忆介绍 ”大模型的对话记忆”这一概念,根植于人工智能与自然语言处理领域,特别是针对具有深度学习能力的大型语言模型而言,它指的是模型在与用户进行交互式对话过程中,能够追踪、理解并利…

Ubuntu24.04 离线安装 MySQL8.0.41

一、环境准备 1.1 官方下载MySQL8.0.41 完整包 1.2 上传包 & 解压 上传包名称是:mysql-server_8.0.41-1ubuntu24.04_amd64.deb-bundle.tar # 切换到上传目录 cd /home/MySQL8 # 解压: tar -xvf mysql-server_8.0.41-1ubuntu24.04_amd64.deb-bundl…

SOME/IP-SD -- 协议英文原文讲解10

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.5 Non…

Ubuntu上给AndroidStudio创建桌面图标

最近使用了Ubuntu开发了,默认的android studio没有桌面图标,还是很不方便,每次都要cd到bin目录启动studio.sh。 步骤1:cd /usr/share/applications linux系统里面,所有的应用启动入口都在 /usr/share/applications …

简单视图函数

视图函数 文章目录 视图函数[toc]一、什么是视图函数二、简单视图函数三、返回错误视图 一、什么是视图函数 所谓视图函数(简称视图),本质上就是一个Python函数,用于接收Web请求并且返回Web响应。Web响应可以包含很多类型&#x…

蓝桥杯备考----》完全背包模板

其实这个完全背包的步骤和01背包也是差不多滴,不过他有一些优化是我们必须要说一说的 老样子,我们先定义一下状态表示 step1: f[i][j]表示从1到i个物品里选出体积不超过j的最大价值 step2:状态转移方程 写成一行就是 我们再写一下f[i][j-v[i]]的表达…

小白入门机器学习概述

文章目录 一、引言二、机器学习的基础概念1. 机器学习的定义2. 机器学习的类型(1)监督学习(Supervised Learning)(2)无监督学习(Unsupervised Learning)(3)半…

微软 GraphRAG 项目学习总结

微软2024年4月份发布了一篇《From Local to Global: A GraphRAG Approach to Query-Focused Summarization》(GraphRAG:从局部到全局的查询式摘要方法)论文,提出了一种名为GraphRAG的检索增强生成(RAG)方法…

C# dataGridView 自动生成几行几列及手动输入整型字符

C# dataGridView生成12号4列的表格 private void Form1_Load(object sender, EventArgs e) {// 清除默认列dataGridView1.Columns.Clear();// 添加4列(首列为序号列)dataGridView1.Columns.Add("ColIndex", "序号");dataGridView1.…

Day17 -实例:利用不同语言不同框架的特征 进行识别

前置:我们所需的web站点,都可以利用fofa去搜索,例如:app"flask"这样的语句去找对应的站点,找到后,我们模拟不知道是什么框架,再根据特征去判断它的框架。 ***利用工具可以再去结合大…

Pycharm(八):字符串切片

一、字符串分片介绍 对操作的对象截取其中一部分的操作,比如想要获取字符串“888666qq.com前面的qq号的时候就可以用切片。 字符串、列表、元组都支持切片操作。 语法:字符串变量名 [起始:结束:步长] 口诀:切片其实很简单,只顾头来…

Mysql从入门到精通day5————子查询精讲

本文主要讲述子查询的几种方法,读者注意体会它们的不同场合的适用情况及功能,本篇文章也融入了小编实践过程遇到的坑,希望读者不要再踩坑 一.带IN关键字的子查询 in关键字可以检测结果集中是否存在某个特定的值,检测成功则执行外…

虫洞数观系列二 | Python+MySQL高效封装:为pandas数据分析铺路

目录 系列文章 1. 引言 2. 常规写法mysql 3. 封装设计接口mysql 3.1dbname.py文件 3.1.1. 导入和基类定义 3.1.2. 具体表定义类 3.1.3. 表定义整合函数 3.1.4. 全局字典和测试代码 3.2mysql_dao文件 3.2.1. 模块导入与配置 3.2.2. 数据库连接池初始化 3.2.3. Comm…

MySQl之Binlog

前言 Binlog(Binary Log)是MySQL中至关重要的日志模块,它直接关系到数据恢复、主从复制等高阶架构设计。无论你是刚入门的新手还是有一定经验的开发者,掌握Binlog的原理和应用都是进阶的必经之路。 BinLog是什么? Bin…

开源项目解读(https://github.com/zjunlp/DeepKE)

1.DeepKE 是一个开源的知识图谱抽取与构建工具,支持cnSchema、低资源、长篇章、多模态的知识抽取工具,可以基于PyTorch实现命名实体识别、关系抽取和属性抽取功能。同时为初学者提供了文档,在线演示, 论文, 演示文稿和海报。 2.下载对应的de…

「MethodArgumentTypeMismatchException:前端传递 ‘undefined‘ 导致 Integer 类型转换失败」

遇到的问题: Failed to convert value of type java.lang.String to required type java.lang.Integer; nested exception is java.lang.NumberFormatException: For input string: "undefined" 原因分析: 大致意思就是我传递的参数到后端没…