python系统之综合案例:用python打造智能诗词生成助手
不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。
python系列之综合案例
- 前言
- 一、项目描述
- 二、项目需求
- 三、 项目实现
- 1、开发准备
- 2、代码实现
- 四、代码解读
- 1、变量与数据类型
- 2、运算符
- 3、输入输出语句
- 4、控制流程语句
- 5、函数
- 6、高阶函数
- 五、总结
python系列前期章节
- python系列之注释与变量
- python系列之输入输出语句与数据类型
- python系列之运算符
- python系列之控制流程语句
- python系列之字符串
- python系列之列表
- python系列之元组
- python系列之字典
- python系列之集合
- python系列之函数基础
- 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 ["春天", "夏天", "秋天", "冬天"]:breakprint("输入错误,请重新输入!")#获取用户输入的情感
while True:emotion = input("请输入情感(喜悦、悲伤、平静):")if emotion in ["喜悦", "悲伤", "平静"]:breakprint("输入错误,请重新输入!")#调用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的魅力,开启更多有趣的编程之旅!
本人学识浅薄,文章中有不足之处,还请各方道友在评论区留言,谢谢。
相关文章:
python系统之综合案例:用python打造智能诗词生成助手
不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。 python系列之综合案例 前言一、项目描述二、项目需求三、 项目实现1、开发准备2、代码实现 …...
【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
目录 一、前言 二、Langchain4j概述 2.1 Langchain4j 介绍 2.1.1 Langchain4j 是什么 2.1.2 主要特点 2.2 Langchain4j 核心组件介绍 2.3 Langchain4j 核心优势 2.4 Langchain4j 核心应用场景 三、SpringBoot 整合 LangChain4j 组件使用 3.1 前置准备 3.1.1 获取apik…...
DeepSeek:巧用前沿AI技术,开启智能未来新篇章
引言 近年来,人工智能(AI)技术迅猛发展,大模型成为全球科技竞争的核心赛道。在这场AI革命中,DeepSeek作为中国领先的大模型研发团队,凭借其创新的技术架构、高效的训练方法和广泛的应用场景,迅…...
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…...
Flutter 2025生态全景:从跨端到嵌入式开发的新机遇
一、技术演进:从"一次编写多端运行"到"全场景覆盖" 1.1 渲染引擎革命:Impeller 2.0的性能突破 // 启用Impeller的配置示例(android/app/build.gradle) def enableImpeller true android {defaultConfig {…...
【sylar-webserver】7 定时器模块
文章目录 设计知识点 设计 #mermaid-svg-RbjvgaHrVWa5mA9X {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-RbjvgaHrVWa5mA9X .error-icon{fill:#552222;}#mermaid-svg-RbjvgaHrVWa5mA9X .error-text{fill:#552222;s…...
蓝桥杯备考----》完全背包模板
其实这个完全背包的步骤和01背包也是差不多滴,不过他有一些优化是我们必须要说一说的 老样子,我们先定义一下状态表示 step1: f[i][j]表示从1到i个物品里选出体积不超过j的最大价值 step2:状态转移方程 写成一行就是 我们再写一下f[i][j-v[i]]的表达…...
小白入门机器学习概述
文章目录 一、引言二、机器学习的基础概念1. 机器学习的定义2. 机器学习的类型(1)监督学习(Supervised Learning)(2)无监督学习(Unsupervised Learning)(3)半…...
深入了解 MySQL 锁机制
MySQL作为一个常用的关系型数据库系统,其事务处理能力强大,并提供了丰富的锁机制以保障数据的一致性和并发操作的有效性。在多用户并发操作的环境中,锁是控制资源访问的重要工具。本文将详细介绍MySQL中锁的分类及其具体应用,包括…...
ubuntu的ubuntu--vg-ubuntu--lv磁盘扩容
在我们安装ubuntu时,如果选择的是自动分区,就会按照逻辑卷的形式来分区,并且只分配100G其余的并不会被分配,这对我们大多数情况来说都是不合理的,所以,如何扩充呢 下面以一个小的案例来说明如何扩充 问题…...
音视频开发---常用工具
一、VLC播放器 1. 简介 VLC多媒体播放器(最初命名为VideoLAN客户端)是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘、VCD影音光盘和各类流式协议。它也能作为unicast或multicast的流式服务器在IPv4或IPv6的高速连接下使用。 它融…...
9、tlm 事务交互通信
1、TLM(Transaction-Level Modeling) 是 SystemC 的高级建模方法,用于描述系统的通信行为,特别是在硬件设计和验证中。TLM 是 SystemC 的一部分,用于提高仿真的效率和抽象性。以下是 TLM 的核心知识以及关键概念。 2、…...
Kotlin 基础语法解析
详细的 Kotlin 基础语法解析,结合概念说明和实用场景: 一、变量与常量 1. 变量类型 val(不可变变量):声明后不可重新赋值,类似 Java 的 final。 val name “Kotlin” // 类型自动推断为 String// name …...
MaxEnt模型进阶:基于R语言自动化与GIS空间建模的物种栖息地精准预测
生物多样性的空间分布规律及其对环境变化的响应机制,是生态学与地理学研究的前沿议题。在气候变化加剧和人类活动干扰的双重压力下,如何精准预测物种潜在分布范围、识别关键环境驱动因子,已成为制定生物保护策略的核心科学问题。物种分布模型…...
微软 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.…...
CSS层叠顺序
介绍 在 CSS 中,元素的层叠顺序决定了当多个元素重叠时(跟布局没有完全的关系,也就是说层叠顺序只会在几个叠放元素上进行比较,而不会改变布局),哪个元素显示在最上面,哪个元素显示在最下面。 …...
QtAV入门
QtAV 是一个基于 FFmpeg 和 Qt 的高性能多媒体播放框架,提供强大的音视频解码、渲染和处理能力,适合开发跨平台的播放器、视频编辑和流媒体应用。 1. 核心功能 多格式支持 支持 H.264/H.265、VP9、AV1 等视频编码。 支持 MP3、AAC、Opus 等音频编码。 封装格式:MP4、MKV、…...
Day17 -实例:利用不同语言不同框架的特征 进行识别
前置:我们所需的web站点,都可以利用fofa去搜索,例如:app"flask"这样的语句去找对应的站点,找到后,我们模拟不知道是什么框架,再根据特征去判断它的框架。 ***利用工具可以再去结合大…...
Pycharm(八):字符串切片
一、字符串分片介绍 对操作的对象截取其中一部分的操作,比如想要获取字符串“888666qq.com前面的qq号的时候就可以用切片。 字符串、列表、元组都支持切片操作。 语法:字符串变量名 [起始:结束:步长] 口诀:切片其实很简单,只顾头来…...
leetcode 53.Maximum Subarray
分治法 //lSum表示[left,right]内以left为左端点的最大子段和 //rSum表示[left,right]内以right为右端点的最大字段和 //iSum表示[left,right]的区间和 int divide_conquer(int* nums,int left,int right,int *lSum,int *rSum,int *iSum){int maxSum;//表示[left,right]内的最…...
Mysql从入门到精通day5————子查询精讲
本文主要讲述子查询的几种方法,读者注意体会它们的不同场合的适用情况及功能,本篇文章也融入了小编实践过程遇到的坑,希望读者不要再踩坑 一.带IN关键字的子查询 in关键字可以检测结果集中是否存在某个特定的值,检测成功则执行外…...
