创建一个Python语言的名言生成器
任务:用户输入一个标签,根据该标签,Python程序必须能够逐个生成名言。如果程序无法找到任何具有给定标签的名言,则必须打印“未找到具有给定哈希标记的名言”。
解决方案 :
对于此任务,我们需要使用一个数据集。数据集必须包含名言和可以与每个名言相关联的标签。然后,程序可以搜索用户指定的标签的数据集,如果找到任何名言,它可以打印名言。我们可以在互联网上找到很多数据集,这些数据集由各个网站的开发人员上传,例如Github、Kaggle等。
在本教程中,我们将使用来自kaggle的数据集。以下是如何查找它的方法:
- 访问Google搜索并搜索“Quotes dataset”。
-
您可以找到不同的网站提供不同的数据集:
-
我们选择了Kaggle上的第一个数据集:
-
Kaggle是一个在线开发人员、机器学习爱好者和数据科学家社区,他们在项目中进行协作并分享自己的作品。正如您所观察到的,名言数据集是由社区中的一位开发人员贡献的,我们可以轻松地下载并用于我们的项目。
-
单击“下载”并等待其下载,它是一个大文件,可能需要一些时间。
-
向下滚动,您可以在kaggle中找到数据集的详细信息。现在,打开已下载的文件。
-
它是一个.json文件。使用文本文档打开.json文件。
JSON文件:
JSON代表“JavaScript对象表示法”。它是一种独立于语言的标准数据格式。它在各种数据应用程序中使用,特别是在Web应用程序和服务器之间进行数据交换时使用。它源自JavaScript,因此名称为 JSON。它使用易于阅读的文本来存储和传输数据。数据以属性值对的形式排列。可以将.json文件导入Excel以获取结构化表格格式。
以下是名言数据集中的两个名言: :
现在,如果我们尝试理解文件的基本表结构:
名称 | 名言 | 作者 | 标签 | 流行度 | 类别 |
---|---|---|---|---|---|
1 | 不要因为结束而哭泣,微笑吧,因为它曾经发生过 | Dr. Seuss | 归因于无来源,哭泣,经历,幸福,喜悦,生活,误归于Dr.Seuss,乐观,悲伤,微笑 | 0.15566615566615566 | 生活 |
2 | 我很自私、不耐烦,有点不安全。我会犯错,我失控,在某些时候难以掌控。但是,如果你不能应对我最坏的状态,那么你肯定不配拥有我最好的状态。 | Marilyn Monroe | 归因于无来源,最好,生活,爱情,错误,失控,真相,最坏 | 0.12912212912212911 | 生活 |
- 确保您编写代码的Python文件和包含数据集的Json文件在同一个文件夹中。
- 如果没有,请在代码中提供json文件的完整路径。
现在,我们将编写一个程序来读取json文件,使用用户指定的标签对其进行过滤,根据最大流行度对其进行排序,然后逐个打印最受欢迎的名言:
代码 :
输出 :
解释一下 :
- 第一行导入json模块,用于从文件中加载JSON数据。
- with语句以读取模式打开名言.json文件,并将其分配给变量file。编码参数设置为“utf-8”,以确保如果文件包含非ASCII字符,则正确读取文件。
- 使用json.load()函数解析来自文件的JSON数据并将其转换为Python对象。
- 使用input()函数提示用户输入标签。
- 创建一个名为dictionary的字典,用于存储具有用户输入的标签的名言以及它们的流行度得分。
- 循环迭代每个名言数据对象。如果名言具有用户输入的标签,则会将流行度得分和名言文本添加到dictionary对象中。
- 如果dictionary对象为空(即找不到具有指定标签的名言),则显示信息以通知用户。
- 如果dictionary对象不为空,则按降序对流行度得分进行排序,并逐个向用户显示排序后的名言。
- 在显示每个名言后,提示用户输入“Y”以显示下一个名言或输入“N”退出程序。如果用户输入“Y”,则继续循环到下一个名言。如果用户输入“N”,则中断循环,程序退出。