访问量: 121 次浏览

大多数人都熟悉编程世界中的 Python 语言, 学习 Python 并构建项目对于开发人员来说始终是一种奇妙的体验。 这种语言在当今时代确实值得大肆宣传, 如果它能解决很多现实世界的问题, 那么为什么不选择它呢。 每个程序员的旅程都是从学习任何编程语言的基础知识开始, 一旦继续前进, 就会意识到使用相同语言构建项目的重要性。 他们变得好奇, 想知道某些应用程序是如何工作的, 并且试图通过构建一些很酷的项目来获得一些实际经验来扩展知识储备量。 如果您是一名开发人员, 那么学习一种语言的语法是不够的, 重要的是要知道如何应用一种语言的概念来出色地解决一些现实世界的问题或挑战。
Python 是一种非常强大的语言, 优势之一是易于学习, 可以利用这种语言构建很多很酷的项目。 所以不要只停留在理论概念上, 一旦了解了这门语言的基础知识, 就可以继续探索, 找到一些好的项目来从事, 并获得一些实际经验。 在编程中,请始终记住, 获得实践经验是增强知识的最佳方式。 本文将讨论一些可以作为中级 Python 开发人员从事的项目。 这些项目不太难也不太容易, 构建这些项目时会遇到一些挑战, 相信大家会非常喜欢解决这些问题。 本文将项目分为三类,具体如下:
项目细节:大家熟悉 bit.ly 和 TinyURL 等工具吗? 这些工具缩短了 URL 并使其易于记忆。 长 URL 中充满了困难的字符, 而且很难记住。 这些服务减少 URL 中的字符或字母, 并向用户返回一个新的缩短 URL。 例如:https://practice.geeksforgeeks.org/explore/?category%5B%5D=Arrays&page=1 可以转换为https://tinyurl.com/y92ysnmb, 所以这里的目标是构建类似的应用程序。
技术细节:此应用程序的主要目标是缩短 URL, 当用户访问缩短的 URL时, 必须将其重定向到原始 URL。 要为缩短的 URL 生成字符, 可以使用随机模块和字符串模块的组合。 需要将原始 URL 和缩短的 URL 保存在数据库中, 因此每当用户访问缩短的 URL 时(几天、几个月甚至几年后), 应用程序都会检查数据库, 如果 URL 存在, 则会重定向到原始 URL, 否则会重定向到 404 页面。
附加挑战:通过为用户添加自定义 URL 选项的功能, 可使此工具更易于用户使用, 用户更容易记住自己生成的自定义 URL。
实际生活案例:
项目细节:通常我们一整天都有很多想法, 这是人类的共同天性, 我们很容易因为繁忙的日程或其他原因而忘记某些事情(甚至是重要的想法)。 为了便于记忆, 可制作一个在线记录想法的应用程序。 使用 Python,可以构建一个 PinYourNote 应用程序, 用户可以在其中列出想要记住的所有内容, 并且该列表可以从任何地方访问(因其是在数字平台上)。
技术细节:该项目的主要目的是让用户保存他们的想法。 每个用户都有自己的私人笔记, 要创建私人笔记, 需要创建带有身份验证的帐户创建功能。 可使用 Django 框架, 该框架带有身份验证系统, 但如果您使用的是 bottle 或 flask, 则必须自己实现用户身份验证。
除此外, 还可以添加允许用户对笔记进行分类的功能。 通过这种方式, 用户可以将笔记划分为不同的类别。 例如,用户可以为编程语言创建一个部分, 一个用于数据结构和算法, 另一个用于数据库。
如果使用此应用程序的数据库来存储信息, 那么如果选择 MySQL 数据库或 PostgreSQL 数据库的 psycopg2 模块, 则可以使用 MySQLdb 模块, 同时也可以使用其他模块, 但这取决于为应用程序选择的数据库。
附加挑战:很多时候, 我们忘记了已经在某个地方创建了重要的笔记, 而这一次希望有人能提醒这些笔记。 因此,可在此应用程序中添加提醒功能。 此功能将允许用户设置提醒的时间, 我们将会通过电子邮件收到有关备注的通知。
实际生活案例:
项目细节:Quiz(测验)有助于测试知识、识别错误和纠正错误。 参加在线测试是完全理解概念的最佳方式。 使用 Python,可创建 Quiz 应用程序, 为用户列出一系列问题, 并允许用户回答这些问题, 将 Quiz 应用程序视为一种问卷。
技术细节:主要目标是设置测验(一系列问题), 并需要回答这些问题。 该应用程序将显示最终分数和问题的正确答案。 在这里,需要考虑管理员用户, 因为只有管理员才能创建测验或为其他用户(将参加测验的用户)设置问题。
与此同时,需要实现帐户创建功能, 以保存个人分数记录 。管理员用户只需上传一个文本文件, 就可以创建包含问题和答案的测试, 也可以为文本文件选择任何格式, 但应用程序应将此文件转换为测验。 在数据库中,需要存储每个用户的问题、可能的答案、正确答案和分数。 如果选择 MySQL 数据库或 PostgreSQL 数据库的 psycopg2 模块, 则可以使用 MySQLdb 模块, 也可以使用其他模块, 但这取决于为应用程序选择的数据库。
附加挑战:添加一个功能, 允许用户在测验中添加计时器。 测验的创建者(管理员用户)可以确定, 用户在测验中每个问题上应该花费多少秒或分钟, 还可以添加测验共享功能, 用户可以在其他平台上共享有趣的测验。
实际生活案例:
项目细节:没有播放器就无法播放音频文件的内容。 音频文件是数字文件, 可通过使用 Python 构建工具 MP3 播放器来展示技能。 需要构建一个模拟物理 MP3 播放器的软件。 使用该软件, 用户可以在桌面、笔记本电脑或电脑上播放 MP3 文件。
技术细节:目标是建立一个 MP3 软件, 允许用户播放 MP3 和其他数字音频文件。 需要专注于构建一个漂亮的用户界面, 以更好地吸引用户。 界面将列出可用的 MP3 文件, 用户还可以选择列出非 MP3 的其他数字音频文件。 此外,用户应该能够看到正在播放的文件的信息, 其中可以包括一些信息,示例如下:
要处理 MP3 文件和其他数字音频文件, 可以使用 Python 中的 pygame、pymedia 和 simpleaudio 库。 这些库允许在几行代码中处理多媒体文件, 还可以添加允许用户创建播放列表的功能。 要存储创建的播放列表的信息, 可以使用 SQLite 数据库的 sqlite3 模块。
附加挑战:添加一个功能, 允许用户重复当前正在播放的文件, 甚至打乱要播放的文件列表, 还可以包括一个功能, 允许用户增加和降低音频文件的播放速度。
实际生活案例:
项目细节:通常我们在日常生活中使用警报器, 目的是以音频或视觉方式提醒某些特定情况。 使用 Python, 需要构建一个报警软件, 允许用户设置特定条件的时间, 当条件满足时, 它应该发出音频信号。 该工具将在用户的笔记本电脑或桌面设备上工作。
技术细节:在该项目中, 需要主要关注警报的定时和音频信号, 因为主要目标是在一天中的特定时间激活音频信号, 添加允许用户创建、编辑和删除报警的功能。 此外,界面应显示所有活动和非活动报警。 对于音频信号或提醒, 需要在软件中设置音调, 可以使用 pygame 库播放音频, 还需要将报警信息保存在数据库中, 例如报警日期、时间和音调位置等。
附加挑战:添加允许用户设置重复报警的功能。 使用此功能, 用户将能够设置警报, 该警报将在一周中某一天的某一时间响起, 并且每周都会响起。 例如,可以在每周六上午11:00设置警报, 也可以在此应用程序中添加打盹功能等。
实际生活案例:
项目细节:当我们访问 URL 或网站时, 大多数时候都会在浏览器上获取所需的信息。 有时网站可能会关闭, 并且会在浏览器中显示一些错误消息, 这可能是由于某些服务器问题造成的。 在这里,可展示一些技能并构建 Site Connectivity Checker(网站连接检查器)。 网站连接检查器提供网站的状态, 并访问 URL。 它定期访问 URL 并返回每次访问的结果。 可以使用此工具从一个页面监视多个网站, 而不是手动访问 URL 来检查网站状态。
技术细节:主要目标是检查网站的状态。 要实现此功能, 可以使用 TCP 或 ICMP 进行连接。 Python 中的套接字程序设计将帮助建立连接。 使用 Python 中的套接字模块, 若要了解有关套接字程序设计的更多信息, 请访问链接 PythonSocket 或 Python 网络编程。 用户应该能够从要检查的站点列表中添加和删除站点, 可使用 docopt、click 或 argparse 框架为这些功能添加命令。 请记住,用户应该能够启动、停止工具并确定间隔时间, 还需要保存检查的文件列表, 为此,可使用 SQLite 数据库的 sqlite3 模块。
附加挑战:用户需要不断检查命令行以检查站点的状态。 为了避免这种情况, 可以添加通知功能(例如后台播放的声音), 以在站点状态发生变化时提醒用户。 保持数据库中站点的先前状态, 因为这是该工具可以在状态发生变化时判断的唯一方法。
实际生活案例:
项目细节:很多时候需要根据某些约定重命名目录中的文件。 例如,File001.jpg、File002.jpg、File003.jpg 等等。 手动执行此任务可能会重复且乏味。 为了避免这种手动操作, 可以创建一个工具来重命名大量文件。
技术细节:主要目标是创建一个工具, 在几秒钟内无错误地重命名文件。 要重命名目标文件, 可以使用 Python 中可用的 os、sys 和 shutil 库。 用户应该能够通过自己选择的命名约定来重命名目录中的所有文件。 如果了解正则表达式的工作原理, 正则表达式模块将帮助匹配所需的命名模式。 如果用户将命名约定(如 myfiles)作为命令的一部分传递, 则该工具应将文件重命名为 myfiles123, 其中 123 是一个数字。
附加挑战:实现一个功能, 允许用户仅选择特定数量的文件进行重命名, 而不是选择所有文件。 对于此功能, 该工具将根据用户的要求, 根据字母顺序、文件创建时间或文件大小对文件进行排序。
实际生活案例: