百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

推荐:一个适合于Python新手的入门练手项目

bigegpt 2024-08-19 12:10 2 浏览

随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python

有个Python入门练手项目,一直没有和大家推荐过,这个开源项目还是一本书,这本书最大的特点在于每个章节都是由一位该领域的开源大牛编写的,每章包含一个程序实现,这些程序的代码都在500行以内,故而这本书叫——《500 Lines or Less》



这本书在 GitHub 上的名称为 500lines,目前已经获得 20344 个 Star,4697 个Fork

虽说本书是关于Python入门,但实际上并非所有代码都是用Python编写的,里面也有一些项目采用Ruby、C、JavaScript等编写,实际上这本书的重点不在于编程语言,更侧重于程序员在编写代码时所作出的设计决策和权衡:

  • 为什么使用这些特定接口将应用程序划分为特定的模块?
  • 为什么这里使用继承,那里使用封装?
  • 如何预测程序可能需要扩展的地方,以及如何让程序员轻松实现



书中一共有22个项目,下面介绍一下,这本书都有哪些项目:


1、Blockcode: A visual programming toolkit(可视化编程)


该项目主要通过龟图(turtle graphics)实现块语言,通过简单拖放创建图案,整个过程通过常用的Html、CSS和JavaScript来实现(每一个块由html元素组成,CSS用于设置样式,JavaScript时间处理器进行拖拽并修改参数)。属于图片编程的一种


2、A Continuous Integration System(持续集成系统)

持续集成(CI)系统是Python编写的用于测试新代码的专用系统。该项目使用Git作为测试代码的存储库。但它只使用标准的源代码管理调用,如果你不熟悉Git但熟悉其他版本控制系统(VCS),如svn或Mercurial,也是可以正常使用。该系统有三大主要功能:获取更改后代码、自动测试代码、生成测试报告


3、Clustering by Consensus(分布式系统)


分布式系统 paxos原理与实现,并采用一些技巧帮助你尽可能的减少和查找、修复漏洞以及特别的开发调试技巧。


4、Contingent: A Fully Dynamic Build System(文档系统)


使用python构建一个文档系统


5、A Web Crawler With asyncio Coroutines(爬虫)


几百行代码实现一个简单的Web爬虫程序


6、Dagoba: an in-memory graph database(图形数据库)


这个项目主要讲述如何通过JavaScript构建一个图形数据库


7、DBDB: Dog Bed Database(key-value的非关系型数据库)


DBDB(Dog Bed Database)是一个Python库,它实现了一个简单的key-value的非关系型数据库,旨在保护计算机出现崩溃或者报错时的数据。


8、A Flow Shop Scheduler


Flow Shop 调度问题,通过Python的一些功能特性,用少量的代码,从局部最优解找全局最优解


9、Making Your Own Image Filters


通过Processing(一种用Java构建的编程语言和开发环境)创建一个图像过滤器


10、A Python Interpreter Written in Python(Python解释器)


Byterun是一个用Python实现的Python解释器,这个项目主要是帮助你搞清楚这个解释器的结构


11、A 3D Modeller


用 Python 实现一个3D设计,显示到屏幕,可以交互。


12、a-simple-object-model(对象模型)


本章探讨了一系列非常简单的对象模型的实现。码适用于Python 2.7和3.4,为了更好理解,还介绍了对象模型测试。


13、Optical Character Recognition (OCR)


AI的一个众所周知的应用是光学字符识别(OCR)。OCR系统是一种软件,该项目将使用神经网络(ANN)搭建一个OCR系统


14、A Pedometer in the Real World(计步器)


教你如何使用Ruby建立一个基本的计步器,并在代码中添加一个Web层,为用户提供一个友好UI界面


15、The Same-Origin Policy(SOP)


SOP是每个现代浏览器安全机制的重要组成部分。该项目使用Alloy(一种用于建模和分析软件设计的语言),构建一个SOP模型


16、A Rejection Sampler(决策取样器)


该项目将对采样、多项分布、随机分布等名词,通过Python编程方式来实现。


17、Web Spreadsheet(Web 电子表格)


该项目仅仅用了99行 HTML、CSS 和 JS 代码就写出一个Web 的电子表格


18、Static Analysis(静态分析)


通过Julia代码编写静态分析工具,一种基于类型的静态分析工具,一种是基于变量的静态分析工具。


19、A Template Engine(模板引擎)


任何Web应用程序中的一个重要阶段是生成要提供给浏览器的HTML。本项目通过Python构建一个简单的模板引擎,解析 html 中的静态变量和简单的语句


20、A Simple Web Server(Web服务器)


利用Python搭建一个简单的 Web 服务器


21、An Event-Driven Web Framework

在Common Lisp中构建一个Web框架,解决游戏中交互的问题

22、An Archaeology-Inspired Database

488行Clojure源代码构建数据库,其中73行是空白行,55行是文档字符串。

写在最后

如果你对这本书感兴趣,可以通过官方链接免费阅读,也可以购买原版平装书籍或者PDF版本,你还可以直接在GitHub上获取这22个项目的源码,地址如下:

在线阅读地址:http://aosabook.org/en/index.htmlGitHub地址:https://github.com/aosabook/500lines

为了让国内的开发者能够更好理解阅读,有人已经在GitHub上开源了500 line or less 中文翻译版本——「500LineorLess_CN」

中文版Github地址(待完成):https://github.com/HT524/500LineorLess_CN

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...