项目3:狗屁不通文本生成器 — 《跟着小王学Python·新手》
《跟着小王学Python》 是一套精心设计的Python学习教程,适合各个层次的学习者。本教程从基础语法入手,逐步深入到高级应用,以实例驱动的方式,帮助学习者逐步掌握Python的核心概念。通过开发游戏、构建Web应用、编写网络爬虫、制作桌面软件等多样化项目,学习者可以深入理解并实践Python知识。每周更新1至2篇内容,旨在助力学习者成长为全栈工程师。
文章目录
- 项目3:狗屁不通文本生成器 --- 《跟着小王学Python·新手》
- 目录
- 目标
- 功能
- 设计
- 系统架构
- 数据结构
- 技术选型
- 实现步骤
- 代码实现

目录
- 目标
- 功能
- 设计
- 实现步骤
- 代码实现
- 测试
- 注意事项
- 小结
目标
本项目旨在通过开发一个简单的“狗屁不通文本生成器”小游戏,帮助Python新手掌握基本的编程概念和技能。通过该项目,学习者能够熟悉文本处理、随机生成、用户交互等核心技术,同时提升编程逻辑和问题解决能力。
功能
- 随机文本生成:根据预设的词库和句型,随机生成“狗屁不通”的文本内容。
- 用户输入:允许用户输入关键词,生成包含该关键词的文本。
- 多样化输出:提供多种生成模式,例如段落、句子等。
- 简洁界面:通过命令行界面与用户进行交互,简单易用。
- 可扩展性:支持用户自定义词库和句型,增强生成的多样性。
设计
系统架构
系统主要由以下几个模块组成:
- 词库模块:存储各种类型的词汇,如名词、动词、形容词等。
- 句型模块:定义不同的句子结构模板。
- 生成模块:根据选定的句型和词库,生成随机文本。
- 用户交互模块:处理用户输入和输出展示。
- 配置模块:允许用户自定义词库和句型。
数据结构
- 词库:使用字典结构存储不同类别的词汇。
- 句型:使用字符串模板,利用占位符标识词汇位置。
技术选型
- 编程语言:Python 3.x
- 开发工具:推荐使用PyCharm或VSCode等集成开发环境。
- 第三方库:无特殊依赖,使用Python内置库即可实现。
实现步骤
- 搭建项目框架:创建项目目录,规划各模块文件。
- 构建词库:准备不同类别的词汇,并组织成字典结构。
- 设计句型:编写多个句型模板,包含不同词汇的占位符。
- 实现生成逻辑:编写函数,随机选择词汇填充句型,生成文本。
- 开发用户界面:通过命令行与用户交互,获取输入和展示结果。
- 添加扩展功能:如支持用户自定义词库和句型。
- 测试与优化:进行功能测试,优化生成逻辑和用户体验。
代码实现
以下为完整的Python代码实现,包含必要的中文注释:
import random
# 词库定义
word_bank = {
'名词': ['时间', '人类', '社会', '技术', '未来', '意识', '文化', '经济'],
'动词': ['发展', '影响', '改变', '推动', '塑造', '促进', '管理', '预测'],
'形容词': ['复杂的', '动态的', '先进的', '多样化的', '创新的', '重要的', '持续的', '显著的'],
'副词': ['显著地', '有效地', '快速地', '深刻地', '全面地', '显然地', '持续地', '实际地']
}
# 句型模板
sentence_templates = [
"{副词},{名词}在{动词}着{形容词}的{名词}。",
"随着{名词}的{动词},{副词}地改变着{名词}。",
"{形容词}的{名词}通过{动词},{副词}影响着我们的{名词}。",
"在{名词}的{动词}过程中,{副词}地展现出{形容词}的特征。",
"{副词},{名词}与{名词}的{动词}密不可分。"
]
def generate_sentence(word_bank, templates):
"""
根据词库和句型模板生成随机句子
"""
template = random.choice(templates)
sentence = template.format(
名词=random.choice(word_bank['名词']),
动词=random.choice(word_bank['动词']),
形容词=random.choice(word_bank['形容词']),
副词=random.choice(word_bank['副词'])
)
return sentence
def generate_text(word_bank, templates, num_sentences=5, keyword=None):
"""
生成指定数量的随机文本,可选包含关键词
"""
sentences = []
for _ in range(num_sentences):
sentence = generate_sentence(word_bank, templates)
if keyword:
# 在句子中随机插入关键词
words = sentence.split(',')
insert_pos = random.randint(0, len(words)-1)
words.insert(insert_pos, keyword)
sentence = ','.join(words)
sentences.append(sentence)
return '\n'.join(sentences)
def main():
print("欢迎使用狗屁不通文本生成器!")
keyword = input("请输入一个关键词(可选,直接按回车跳过):")
try:
num = int(input("请输入生成句子的数量(默认5):") or "5")
except ValueError:
print("输入无效,默认生成5句。")
num = 5
text = generate_text(word_bank, sentence_templates, num_sentences=num, keyword=keyword if keyword else None)
print("\n生成的文本如下:\n")
print(text)
if __name__ == "__main__":
main()《跟着小王学Python·新手》
















