当前位置: 首页 > 编程日记 > 正文

小小的Python编程故事

640?wx_fmt=jpeg

现在Python的火热已经不是整个编程界的事情了,Python的火热已经蔓延到小学、大学课程,之前看新闻报道说青岛的小学生课程里都开始设置Python的课程了,大学里由原来必考的VB也改成了Python。一时大家都掀起了学习了Python的热潮,而接踵而来的各种课程书籍的推荐,但是接踵而来的推荐也不能说看到推荐就购买,要选择合适的自己的书籍或者课程观看哦~

640?wx_fmt=jpeg

今天就来为大家推荐一本适合孩子或者文科生所看的Python编程书籍!《小小的Python编程故事》,下面我们就来看一下书籍的内容是什么样的!

640?wx_fmt=png

《小小的Python编程故事》

作者:毛雪涛  


640?wx_fmt=png

扫码查看详情

这一天,小小的爷爷来到蛋糕店,他在厨房捣鼓了一阵,做出来一款小小从来没见过的奇怪 蛋糕。首先,这个蛋糕是三角形的,看起来表面没有使用奶油,但是却有五种颜色。奇怪的是, 爷爷说这个蛋糕要用吸管来吃。

 

 蛋糕模板:类的定义 


小小问爷爷:“这个奇怪的蛋糕叫什么名字呢?”爷爷说:“还没想好呢!反正是蛋糕的一种。” 聪明的小小觉得该这么描述这个没有名字的蛋糕:1.  不管怎么样,它是一个物体。2.  它具有一些特征(或者属性),比如,三角形、没奶油、五种颜色。3.  可以对它采取一些动作,或者执行一些“方法”,比如,可以吃它,还可以用吸管“喝” 它,当然还可以出售它。 

这个蛋糕虽然奇怪,但是销售却异常火爆,供不应求。小小拿出“蛋糕制造机”来帮忙,但 是“蛋糕制造机”只能按照蛋糕的模板来生产蛋糕。于是,小小先为这款奇怪的蛋糕创建一个模 板。打开 Python IDLE Shell,新建一个文件,保存到 C:\Workspace\Chapter19\Xcake.py,输入代 码如下:

#创建类 class Xcake:     	
name="古怪蛋糕"     	
colorNumber=5     	
color=['红','黄','蓝','绿','黑']     	
shape='三角形'     	
creamContent=0 	def eat(self): 	return '吃我啊!吃我啊!' 	def drink(self): 	return '喝我啊!喝我啊!' 	def sell(self): 	return '买我啊!买我啊!' 

这段代码创建了一个生产这种古怪蛋糕的模板,模板名称叫作 Xcake,在模板内部指明了这种蛋糕的名字、颜色、形状和奶油含量,还指明了使用这种蛋糕的三个方法:eat、drink 和sell。在 Python 中称这种模板为“类”,并使用关键字 class 来创建类。类中包含两部分内容:

  • 一系列的变量及其初始值,称这些变量为这类对象的“属性”。

  • 一系列函数的定义,称这些函数为这类对象的“方法”。 

 创建类以后,凡是根据这个类创造的东西,统统称为类的“实例”,也称为类的“对象”。Python 支持类和对象的所有概念和技术,是一种面向对象的语言。面向对象的编程,被亲切地称为 OOP, 其是英文“Object Oriented Programming”的缩写。不仅 Python,许多程序设计语言都使用 OOP 技术。表 19.1 中列出了 OOP 的一些基本概念。 

640?wx_fmt=png

这里暂不深入讲解这些概念,后面会有详细说明。可以在一个文件中定义多个类。在使用文 件中定义的类之前,需要使用 from…import…来引入类。 

 制造蛋糕:创建对象 

创建好了 Xcake 类后,就可以开动蛋糕制造机来快速生产这种奇怪的蛋糕了。运行 Xcake.py 程序,打开 Python IDLE Shell。这时虽然看起来好像什么也没有发生,但实际上已经在内存中加 载了 Xcake 类。接下来输入以下代码就可以创建一个 Xcake 的对象: 

>>> cake1=Xcake()

 这样一行代码,就创建了一个 cake1 对象,它具有 Xcake 类所定义的所有属性和方法。在 Python 中,可以使用对象名加点号(.)来引用对象的属性和方法。下面新建一个文件 19.1cakeObj.py, 以演示如何创建和使用对象。代码如下: 

#对象示例 	
from Xcake import Xcake  #引入类 	
cake1=Xcake()  #实例化	
print("这个蛋糕有:",cake1.colorNumber,"种颜色")  #使用对象的属性 	
print("蛋糕的颜色有:",cake1.color) 	
print("吃蛋糕时,它会说:",cake1.eat())   #使用对象的方法 	
print("出售时,它会说:",cake1.sell()) 

这段程序首先创建一个 Xcake 的实 例—cake1 对象。然后使用几个 print() 函数进行输出,在 print()的参数中调用了 对象的属性和方法。

如何制造蛋糕?构造方法 

蛋糕制造机是如何制造出一个蛋糕的呢?这解释起来有点复杂,不过小小觉得它的工作原 理有点像在类里面定义的一种特殊方法—构造方法。每当需要创建对象时,就会调用类的构造 方法,这时,在构造方法里创建的那些函数就会被执行。这些函数就会创建对象的属性。到底构造函数长什么样呢?还是通过小小的 Xcake 类来看一看吧。打开 Xcake.py 文件,在 文件末尾添加一个新的类,代码如下: 

#创建类 class XcakePlus:     	
#定义类变量,也称属性     name="古怪蛋糕加强版"     	
price=1 #单价          	
#定义构造方法     	
def __init__(self,size,qty):         	
self.size=size         	
self.qty=qty          	
#定义其他方法    	
def eat(self):         	
print('吃我啊!吃我啊!')     	
def sumPrice(self):  #计算总价         	
print("一共:",self.qty*self.price,"元")            	
def preview(self):         	
print("您要的蛋糕是:",self.name,",尺寸:",self.size,"号",self.qty,"个。") 

XcakePlus 类定义了 3 个属性和 4 个方法,其中名为__init__的方法,一看其名字就比较特殊,它的名字以两个连续的下画线开始和结束,而且中间必须是 init,这就是类的构造方法。本例中的这个构造方法有 3 个参数:

  • self—用于获取类的实例。它是必需的,且必须为第一个参数,名称随意,但习惯上使 用 self。

  • size—用于获取传入的整数,表示蛋糕的尺寸。

  • qty—用于获取传入的整数,表示购买的个数。 

函数体有两行代码,分别将传入的参数size和qty赋给类对象的属性。使用self.size和self.qty 表示对象的属性。在Python中,每个类只能有一个构造方法。如果类中没有自定义的构造方法,如前面的Xcake 类,Python 会使用默认的构造方法。默认构造方法是只有一个 self 参数的方法。值得注意的是,在定义类时,如果要在方法中使用对象的属性,则需要使用 self.size、self.qty、self.price 这样的形式。定义好 XcakePlus 类以后,就可以创建它的对象了。新建一个文件 19.2cakeObj.py,输入以 下代码: 

#对象示例2 from Xcake import XcakePlus      #引入类 	#创建对象 cake1=XcakePlus(12,2)     #实例化 	#直接使用类变量 	
print("品种:",XcakePlus.name) 	
print("单价:",XcakePlus.price) 	#展示对象的方法 	
cake1.preview() 	
cake1.sumPrice()

这段程序首先引入XcakePlus 类,然后依照构造方法创建对象cake1,传入两个参数12 和2。这时 cake1 对象的两个属性 size 和 pty 就分别获得了值 12 和 2。接下来展示了类变量的使用,直 接使用“类名.类变量名”的形式。然后展示了对象方法的使用,使用“对象名.方法名”的形式 来调用。

面向对象编程的好处是可以使用类来快速创建多个对象。例如,可以在 IDLE Shell 的提示 符后面继续创建多个古怪蛋糕加强版的实例: 

>>> cake1=XcakePlus(8,1) 	
>>> cake2=XcakePlus(10,2) 	
>>> cake3=XcakePlus(12,1) 	
>>> cake1.preview() 	
您要的蛋糕是: 古怪蛋糕加强版 ,尺寸:8 号 1 个。	
>>> cake2.preview() 	
您要的蛋糕是: 古怪蛋糕加强版 ,尺寸:10 号 2 个。	
>>> cake3.preview() 	
您要的蛋糕是: 古怪蛋糕加强版 ,尺寸:12 号 1 个。

是不是很简单!一眨眼,小小已经生产了大量的“古怪蛋糕加强版” ! 

以上内容来自《小小的Python编程故事》

640?wx_fmt=png

《小小的Python编程故事》

作者:毛雪涛  


640?wx_fmt=png

扫码购买


本书是写给孩子看的Python编程书,本书共包括54个章节,分为三个部分。

基础篇包含了Python编程环境的搭建、第一个Python程序的展示、程序的调试方法、异常的处理、Python的基本数据类型和运算符,还包括了基本程序控制结构、类的使用以及常见模块的使用。

实战篇包含了Python循环的应用、冒泡排序和选择排序等基础算法、文件操作、系统信息获取,还包括了图形用户界面编程、正则表达式、多线程程序设计,以及网络编程、数据库编程的基本实现。

提高篇包含了蒙特卡罗算法、欧几里得算法、递归算法、狄杰特斯拉算法、贪心算法、KNN算法以及并行计算的实现,可能会有一些难度,但对于那些喜欢计算科学的读者来说起到了启蒙的作用。

本书适合没有任何编程基础的人学习使用,尤其适合孩子、文科生等非计算机专业的人员使用。


640?wx_fmt=png

扫码或者点击阅读原文购买哦

640?戳这里,阅读原文


相关文章:

python 验证码识别示例(二) 复杂验证码识别

在这篇博文中手把手教你如何去分割验证,然后进行识别。 一:下载验证码 验证码分析,图片上有折线,验证码有数字,有英文字母大小写,分类的时候需要更多的样本,验证码的字母是彩色的,图…

★核心关注点_《信息系统项目管理师考试考点分析与真题详解》

★核心关注点_《信息系统项目管理师考试考点分析与真题详解》真诚感谢你选用《信息系统项目管理师考试考点分析与真题详解》作为高级项管的辅导用书。对于使用该书的读者们,在备考2012.5.26信息系统项目管理师考试之下午案例分析和论文写作考试时,以下一…

告别低分辨率网络,微软提出高分辨率深度神经网络HRNet | CVPR 2019

来源 | 微软研究院AI头条(ID:MSRAsia)作者简介:孙可,中国科学技术大学信息学院在读博士生,目前在微软亚洲研究院视觉计算组实习,导师是王井东和肖斌老师。他的研究兴趣包括人体姿态估计、语义分…

sudo提权实战讲解 对用户对组的权限配置分析

Linux是多用户多任务的操作系统, 共享该系统的用户往往不只一个。出于安全性考虑, 有必要通过useradd创建一些非root用户, 只让它们拥有不完全的权限; 如有必要,再来提升权限执行。 sudo就是来解决这个需求的: 这些非root用户不需要知道root的密码,就可以…

【Qt】在Ubuntu16.04中安装QSerialPort模块

1、问题描述 在pro中添加:QT serialport 编译时报错:Project ERROR Unknown module(s) in QT:serialport 2、解决方法 安装QSerialPort模块库 sudo apt-get install libqt5serialport5-dev

Velocity文档(3)

2019独角兽企业重金招聘Python工程师标准>>> velocity.properties 的一些配置项 velocimcro.library属性:指定自己的模板库,多个模板库以逗号分隔。默认情况下,velocity查找唯一的一个库:VM_global_library.vmvelocima…

Java 24岁!Google加持的Kotlin真能取代它?

作者 | 屠敏出品 | CSDN(ID:CSDNnews)1995 年 5 月 23 日,Sun 公司在 Sun world 会议上正式宣布了 Java 的到来,从此一代编程语言界的翘楚就此诞生。而在不断地迭代与适配中,今时今日,Java 以需…

三,ES6中需要注意的特性(重要)

-----书接上文,前文中我们总结了关于JS的组成部分以及如何快速开展学习JS,相信已经有很多朋友掌握到这些方法。接下来就从更深的ECMAScript开始说起。 1.什么是ES6? ECMAScript(European Computer Manufacturers Association) 6: 是JavaScript语言的下一…

【SVN】在阿里云上创建svn服务器

1、创建用户及相关设置 阿里云搭建ubuntu18.04工作台,默认只有root超级用户。为了安全起见,我们使用普通用户来创建svn: useradd hello // 创建用户hello mkdir -p /home/hello // 在hello用户的根目录 cd /home/hello chown hello . // 设…

【转】on delete cascade

关系表的级联更新: on update cascade on delete cascade 是级联删除的意思 意思是 当你更新或删除主键表时,那么外键表也会跟随一起更新或删除 CREATE TABLE Countries(CountryId INT PRIMARY KEY) INSERT INTO Countries (CountryId) VALUES (1) INSER…

倒计时1天!CTA核心技术及应用峰会报名通道即将关闭(附参会攻略)

全球智能化趋势当前,人工智能技术正蓬勃发展。为了直击开发者在机器学习与人工智能技术研究与落地过程中的痛点与瓶颈,深入解析机器学习和知识图谱技术在行业中的实践和落地。2019 年 5 月 26 - 27 日,由中国 IT 社区 CSDN 与数字经济人才发展…

【Qt】在QtCreator中使用Ctrl+Shift+f快捷键打开高级查找窗口失效的解决方法

1、问题描述 Win10操作系统环境下,在QtCreator中使用Ctrl+Shift+f快捷键打开高级查找窗口失效。 2、原因分析 Ctrl+Shift+f快捷键在各种输入法中,常用来做中文简体和繁体输入的切换。QtCreator中该快捷键失效的的原因,多半是因为和输入法的快捷键冲突。可以在输入法的快捷…

Python修行之字符串(一):连接、切割、大小写、排版

字符串:1.是由一个个字符组成有序的序列,是字符的集合2.字符串是不可变对象3.使用单引号、双引号、三引号引住的字符序列4.python3中、字符串就是unicode类型、在2中分两种一种unicode一种非unicode字符串元素访问--下标:1.字符串支持使用索引访问2.有序的字符集合&…

UI自动化测试随笔

昨天给开发的同事讲我们正在做的自动化测试,同事问了句:为什么API的测试不需要写代码了,而UI的测试还需要写那么多代码呢? 能不写代码么? 目前我们的自动化测试的现状: 目前主要覆盖两个部分:A…

【跃迁之路】【554天】程序员高效学习方法论探索系列(实验阶段311-2018.08.13)...

(跃迁之路)专栏 【跃迁之路】奖励金计划正式开始 从2018.7.1起,【跃迁之路】奖励金计划正式起航,从今以后,, 每月1日,我会将自己个人上月收入的1%计入【跃迁之路】奖励金池,积累到足够金额后,将…

TensorFlow 2.0来了,为什么他却说“深度学习框架之争,现在谈结果为时尚早”?...

记者 | 琥珀出品 | AI科技大本营(ID:rgznai100)半个多世纪前,浙江大学老校长竺可桢曾有两个非常经典的教育问题:“诸位在校,有两个问题应该自己问问,第一,到浙大来做什么?第二&#…

【FFmpeg】ffmpeg工具源码分析(一):main函数

ffmpeg工具经常用来转换、生成媒体文件,下面是它的源码分析(一):main函数 ffmpeg版本:4.2.1 int main(int argc, char **argv) {int i, ret;BenchmarkTimeStamps ti; # 用于基准测试init_dynload(); # 初始化动态库加载路径,只在win3

Android之传感器(一)

传感器的种类:1. 动作传感器加速度传感器、重力传感器和陀螺仪(判断手机姿态)等2. 位置传感器方向传感器和磁力传感器3. 环境传感器温度传感器 、压力传感器和亮度传感器 使用传感器的方法:1. 获取SensorManager对象SensorManage…

【Qt】Qt单例模式三种实现

1、饿汉式 在头文件中:将构造函数私有化,并创建静态函数instance来获取实例 class A : public QObject {Q_OBJECT public:static A* instance(QObject *parent = nullptr);private:explicit A(QObject *parent = nullptr); }

程序员敲代码时,戴着耳机究竟在听什么?

今天,某妹子突然凑到我的耳边轻声说:“我们公司的程序员,清一色的戴着耳机,你说他们是不是故意不想听我们提的需求?”我很方,因为我也喜欢戴耳机。(思考ing)思考了一秒钟后&#xff…

关于Oracle.ManagedDataAccess数据库表加字段后,必须重启的问题

关于Oracle.ManagedDataAccess数据库表加字段后,必须重启的问题,解决方法如下:在数据库连接字串中,增加一个参数:Metadata Poolingfalse如“Data Source(DESCRIPTION(ADDRESS_LIST(ADDRESS(PROTOCOLTCP)(HOST1.1.6.200…

配置导出MOSS2010列表数据到Excel并根据列表记录自动刷新数据

第一章 简介 场景描述 根据最近客户的需求,他们需要自动维护MOSS2010列表数据导出到Excel的数据实时同步,就是列表添加记录后,导出的Excel列表自动同步数据过来。 第二章 配置方法 1. 打开MOSS2010站点http://moss:8001的要导出的列表 2. 点【…

一个让Python代码运行更快的最佳方式!

作者 | Serdar Yegulalp译者 | 姜松浩,责编 | 屠敏转载自 CSDN(ID:CSDNnews)Python因其强大、灵活且易于使用等特性,而赢得了声誉。这些优点使其在各种各样的应用程序、工作流程和领域中得到了广泛应用。但是就语言的设…

《Python基础教程第二版》第五章-条件、循环和其他语句(一)

print和import print打印多个表达式,用逗号,隔开 print abc:, 42, nonono #输出在每个参数之间添加空格 print在结尾处加上逗号,,接下来的语句会与前一条语句打印在同一行 print hello, print word! #hello word! import从模块中导入函数 import module from module…

【Qt】QStackedWidget:将多个窗口控件放入堆中,每次只显示一个窗口控件

1、简介 QStackedWidget可以容纳多个窗口控件,每次只显示其中一个。例如:登录页面、各种功能页面等不同时显示的窗口,可以放入QStackedWidget中。 2、demo // 创建三个页面 QWidget *firstPageWidget = new QWidget; QWidget *secondPageWidget = new QWidget; QWidget *…

Android模仿iPhone View旋转刷新数据动画详解

因为小马很喜欢在不同的页面之间跳转时加点好玩的动画,今天无意间看到一个动画效果感觉不错,几种效果图如下,既然好玩就写在博客中,直接说就是:该效果类似于iPhone中View的切换动画效果,今天就只介绍上面展…

【SQL】sql语句LEFT JOIN(拼接表)详解

1、语法 SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_nametable2.column_name;2、说明 按照一定规则,将表table1和表table12拼接起来。下面以学生管理系统为例,学生管理系统数据库各表如下 课程表: 学生表 成绩…

找啊找啊找木偶,图灵奖得主G. Hinton第一篇论文曝光!

作者 | Geoffrey Hinton 译者 | 李倩编辑 | 一一出品 | AI科技大本营(ID:rgznai100)摘要针对在具有重叠结构的透明矩形中寻找木偶这一问题,Hinton大神想到使用松弛算法,通过从冲突局部解释网络中提取全局最佳图形的方式找木偶。介…

终于,「最近邻搜索」有通用方法了

作者:Kevin Hartnett 编译:Bing 如果你打算开一家咖啡馆,你一定想知道:“附近最近的一家咖啡馆在哪?”了解这些信息有助于应对商业竞争。 这种现象是计算机科学中广泛研究的问题,称为“最近邻搜索”。它的问…

tar自动打包指定文件夹中的文件到指定目录

这是我离开上一家公司,到XX人寿保险公司的第一个工作内容,很简单,可以减少每天重复的工作量。写一个脚本,将指定文件夹下的所有文件打包成以日期命名的格式并存放到其父目录中,自动检测该压缩包,保留时间为…