Python 3.5从零开始学图书
人气:84

Python 3.5从零开始学

本书*后通过两个Python热门应用——数据分析和网络爬虫,介绍了Python在实际开发中的方法和技巧,旨在提升读者的开发技能,达成学以致用之目标。
  • 所属分类:图书 >计算机/网络>程序设计>其他  
  • 作者:[刘宇宙]
  • 产品参数:
  • 丛书名:--
  • 国际刊号:9787302475965
  • 出版社:清华大学出版社
  • 出版时间:2017-08
  • 印刷时间:2017-07-01
  • 版次:1
  • 开本:32开
  • 页数:--
  • 纸张:胶版纸
  • 包装:平装-胶订
  • 套装:

内容简介

本书专门针对Python新手量身定做,涵盖了Python 3 实际开发的重要知识点,内容包括:Python语言的类型和对象、操作符和表达式、编程结构和控制流、函数、序列、多线程、正则表达式、面向对象编程、文件操作、网络编程、邮件收发、数据库操作等,提供Python爬虫、数据处理项目范例,各章还安排了调试、问题解答、温故知新、牛九小试等内容,以帮助读者学会处理程序异常、解答学习困惑、巩固知识、学以致用。 本书通俗易懂、示例丰富、代码可读性及可操作性强。非常适合Python 3.x初学者、想学习和了解Python 3的程序员,也可作为Python网课、培训及大专院校教学用书。

编辑推荐

本书专门针对Python新手量身设计,涵盖了Python 3.5 实际开发的重要知识点。编者使用通俗易懂的描述和丰富的示例代码,并结合日常生活中的一些小事件,使本书读起来生动有趣,一些复杂的问题也以简单的形式展现出来,读者学起来不仅轻松,而且可以充分感受到Python的魅力。学编程必须动手才能见到成效,本书在设计上特别强调讲练结合,注重实践,不仅在讲解的过程中结合大量代码示例,同时适时穿插小项目演练,以锻炼读者的程序设计能力。各章安排了程序调试、问题解答、温故知新等主题,帮助读者发现程序错误,解答学习中的困惑,巩固所学知识。本书后通过两个Python热门应用——数据分析和网络爬虫,介绍了Python在实际开发中的方法和技巧,旨在提升读者的开发技能,达成学以致用之目标。

作者简介

刘宇宙,计算科学学学士,多年工作经验,先后供职于上海海鼎、上海云卯、上海宏力达,目前供职于上海透云科技码上加事业部,担任软件工程师,从事大数据研发。先后从事过卡系统的研发,云计算项目中IAAS系统的研发,大数据项目研发,物联网研发。对Java、Python有深入研究。Python技术爱好者,在CSDN发表原创Python博文多篇。

目录

目 录

第1章 进入Python 3.5的精彩世界 1

1.1 Python的起源 2

1.2 Python的应用场合 3

1.3 从2.7到3.5,Python的新特性 5

1.4 如何学习Python 6

1.5 Python环境构建 7

1.5.1 在Windows系统中安装Python 7

1.5.2 在Linux和UNIX系统中安装Python 14

1.5.3 在Mac OS系统中安装Python 17

1.5.4 其他版本 18

1.6 从hello word开始 18

1.7 调试 19

1.8 问题解答 20

1.9 温故知新,学以致用 21

第2章 开启Python之旅 22

2.1 认识程序 23

2.1.1 程序 23

2.1.2 调试 24

2.1.3 语法错误 24

2.1.4 运行错误 24

2.1.5 语义错误 25

2.2 数据类型 25

2.2.1 整型 25

2.2.2 浮点型 27

2.2.3 复数 28

2.2.4 数据类型转换 28

2.2.5 常量 29

2.3 变量和关键字 29

2.3.1 变量 29

2.3.2 变量名称 33

2.4 语句 34

2.5 表达式 35

2.6 运算符和操作对象 36

2.6.1 什么是运算符和操作对象 36

2.6.2 算术运算符 36

2.6.3 比较运算符 38

2.6.4 赋值运算符 39

2.6.5 位运算符 40

2.6.6 逻辑运算符 41

2.6.7 成员运算符 42

2.6.8 身份运算符 43

2.6.9 运算符优先级 43

2.7 字符串操作 45

2.8 注释 49

2.9 调试 50

2.10 问题解答 50

2.11 温故知新,学以致用 51

第3章 列表和元组 52

3.1 通用序列操作 53

3.1.1 索引 53

3.1.2 分片 54

3.1.3 序列相加 57

3.1.4 乘法 58

3.1.5 成员资格 59

3.1.6 长度、最小值和较大值 60

3.2 列表 60

3.2.1 更新列表 61

3.2.2 嵌套列表 65

3.2.3 列表方法 65

3.3 元组 74

3.3.1 tuple函数 75

3.3.2 元组的基本操作 75

3.3.3 元组内置函数 76

3.4 列表与元组的区别 77

3.5 调试 78

3.6 问题解答 79

3.7 温故知新,学以致用 79

第4章 字符串 81

4.1 字符串的基本操作 82

4.2 字符串格式化 83

4.2.1 字符串格式化符号 83

4.2.2 字符串格式化元组 85

4.3 字符串方法 87

4.3.1 find()方法 87

4.3.2 join()方法 88

4.3.3 lower()方法 89

4.3.4 upper()方法 90

4.3.5 swapcase()方法 91

4.3.6 replace()方法 91

4.3.7 split()方法 92

4.3.8 strip()方法 92

4.3.9 translate()方法 93

4.4 调试 94

4.5 问题解答 95

4.6 温故知新,学以致用 95

第5章 字典 96

5.1 字典的使用 97

5.2 创建和使用字典 97

5.2.1 dict函数 98

5.2.2 字典的基本操作 98

5.2.3 字典的格式化字符串 100

5.2.4 字典和列表的区别 100

5.3 字典方法 101

5.3.1 clear()方法 101

5.3.2 copy()方法 102

5.3.3 fromkeys()方法 103

5.3.4 get()方法 104

5.3.5 key in dict方法 105

5.3.6 items()方法 105

5.3.7 keys()方法 105

5.3.8 setdefault()方法 106

5.3.9 update()方法 107

5.3.10 values()方法 107

5.4 调试 108

5.5 问题解答 108

5.6 温故知新,学以致用 109

第6章 条件、循环和其他语句 110

6.1 使用文本编辑器 111

6.2 import的使用 113

6.2.1 import语句 113

6.2.2 使用逗号输出 116

6.3 别样的赋值 116

6.3.1 序列解包 116

6.3.2 链式赋值 118

6.3.3 增量赋值 118

6.4 语句块 119

6.5 条件语句 119

6.5.1 布尔变量的作用 120

6.5.2 if语句 121

6.5.3 else子句 122

6.5.4 elif子句 123

6.5.5 嵌套代码块 124

6.5.6 更多操作 124

6.5.7 断言 127

6.6 循环 128

6.6.1 while循环 128

6.6.2 for循环 129

6.6.3 循环遍历字典元素 131

6.6.4 迭代工具 132

6.6.5 跳出循环 134

6.6.6 循环中的else子句 136

6.7 pass语句 137

6.8 牛刀小试——猜字游戏编写 138

6.9 Python程序调试 140

6.10 问题解答 141

6.11 温故知新,学以致用 141

第7章 函数 142

7.1 调用函数 143

7.2 定义函数 145

7.3 函数的参数 147

7.3.1 必须参数 148

7.3.2 关键字参数 149

7.3.3 默认参数 149

7.3.4 可变参数 153

7.3.5 组合参数 155

7.4 执行流程 155

7.5 形参和实参 156

7.6 变量作用域 157

7.6.1 局部变量 157

7.6.2 全局变量 159

7.7 有返回值和无返回值函数 161

7.8 为什么要有函数 163

7.9 返回函数 163

7.10 递归函数 166

7.11 匿名函数 169

7.12 偏函数 171

7.13 牛刀小试——经典排序之快速排序实现 172

7.14 调试 173

7.15 问题解答 174

7.16 温故知新,学以致用 174

第8章 面向对象编程 176

8.1 理解面向对象 177

8.1.1 什么是面向对象编程 177

8.1.2 面向对象术语简介 177

8.2 类的定义与使用 178

8.2.1 类的定义 178

8.2.2 类的使用 178

8.3 深入类 179

8.3.1 类的构造方法 179

8.3.2 类的访问权限 184

8.4 继承 189

8.5 多态 192

8.6 封装 196

8.7 多重继承 197

8.8 获取对象信息 199

8.9 类的专有方法 202

8.10 牛刀小试——出行建议 207

8.11 调试 209

8.12 问题解答 209

8.13 温故知新,学以致用 210

第9章 异常 211

9.1 什么是异常 212

9.2 异常处理 212

9.3 抛出异常 213

9.4 捕捉多个异常 215

9.5 使用一个块捕捉多个异常 216

9.6 捕捉对象 217

9.7 全捕捉 217

9.8 异常中的else 218

9.9 自定义异常 219

9.10 finally子句 220

9.11 异常和函数 222

9.12 bug的由来 223

9.13 温故知新,学以致用 223

第10章 日期和时间 224

10.1 日期和时间 225

10.1.1 时间戳 225

10.1.2 时间格式化符号 225

10.1.3 struct_time元组 226

10.2 time模块 227

10.2.1 time()函数 227

10.2.2 localtime([secs])函数 227

10.2.3 gmtime([secs])函数 228

10.2.4 mktime(t)函数 228

10.2.5 asctime([t])函数 229

10.2.6 ctime([secs])函数 229

10.2.7 sleep(secs)函数 230

10.2.8 clock()函数 230

10.2.9 strftime(format[, t])函数 231

10.2.10 strptime(string[, format])函数 232

10.2.11 三种时间格式转化 232

10.3 datetime模块 232

10.4 日历模块 236

10.5 牛刀小试——时间大杂烩 237

10.6 调试 242

10.7 温故知新,学以致用 242

第11章 正则表达式 244

11.1 认识正则表达式 245

11.2 re模块 247

11.2.1 re.match函数 247

11.2.2 re.search方法 247

11.2.3 re.match与re.search的区别 248

11.3 贪婪模式和非贪婪模式 249

11.4 替换 250

11.5 编译 250

11.6 温故知新,学以致用 251

第12章 文件操作 252

12.1 打开文件 253

12.1.1 文件模式 254

12.1.2 缓冲 255

12.2 基本文件方法 255

12.2.1 读和写 256

12.2.2 读写行 258

12.2.3 关闭文件 260

12.2.4 文件重命名 261

12.2.5 删除文件 262

12.3 对文件内容进行迭代 262

12.3.1 按字节处理 262

12.3.2 按行操作 263

12.3.3 使用fileinput实现懒加载式迭代 264

12.3.4 文件迭代器 264

12.4 StringIO函数 264

12.5 序列化与反序列化 265

12.5.1 一般序列化与反序列化 266

12.5.2 JSON序列化与反序列化 267

12.6 调试 269

12.7 问题解答 269

12.8 温故知新,学以致用 270

第13章 多线程 271

13.1 线程和进程 272

13.1.1 进程 272

13.1.2 线程 272

13.1.3 多线程与多进程 272

13.2 使用线程 273

13.2.1 全局解释器锁 273

13.2.2 退出线程 274

13.2.3 Python的线程模块 274

13.3 _thread模块 274

13.4 threading模块 277

13.5 线程同步 282

13.6 线程优先级队列 284

13.7 线程与进程比较 287

13.7.1 线程切换 287

13.7.2 计算密集型与IO密集型 288

13.7.3 异步IO 288

13.8 调试 289

13.9 问题解答 289

13.10 温故知新,学以致用 290

第14章 发送和接收电子邮件 291

14.1 电子邮件介绍 292

14.2 发送邮件 293

14.2.1 SMTP发送邮件 293

14.2.2 发送HTML格式的邮件 296

14.2.3 发送带附件的邮件 297

14.2.4 发送图片 298

14.2.5 同时支持HTML和Plain格式 300

14.2.6 加密SMTP 301

14.3 POP3接收邮件 302

14.3.1 POP3下载邮件 302

14.3.2 解析邮件 303

14.4 调试 305

14.5 问题解答 305

14.6 温故知新,学以致用 306

第15章 网络编程 307

15.1 网络编程初识 308

15.2 TCP/IP简介 308

15.3 网络设计模块 309

15.3.1 Socket简介 309

15.3.2 socket模块 309

15.3.3 socket对象(内建)方法 311

15.4 TCP编程 312

15.4.1 客户端 312

15.4.2 服务器 315

15.5 UDP编程 319

15.6 urllib模块 322

15.6.1 GET请求 322

15.6.2 POST请求 323

15.7 调试 324

15.8 问题解答 325

15.9 温故知新,学以致用 325

第16章 操作数据库 326

16.1 数据库介绍 327

16.2 Python数据库API 327

16.2.1 全局变量 328

16.2.2 异常 328

16.2.3 连接和游标 329

16.2.4 类型 330

16.3 数据库操作 331

16.3.1 数据库连接 331

16.3.2 创建数据库表 332

16.3.3 数据库插入 333

16.3.4 数据库查询 334

16.3.5 数据库更新 335

16.3.6 数据库删除 337

16.4 事务 338

16.5 调试 339

16.6 问题解答 339

16.7 温故知新,学以致用 340

第17章 项目实战——爬虫 341

17.1 了解爬虫 342

17.2 爬虫的原理 342

17.3 爬虫常用的几种技巧 343

17.3.1 基本方法 343

17.3.2 使用服务器 343

17.3.3 cookie处理 344

17.3.4 伪装成浏览器 344

17.3.5 登录 345

17.4 爬虫示例——抓取豆瓣电影Top250影评数据 345

17.4.1 确定URL格式 346

17.4.2 页面抓取 346

17.4.3 提取相关信息 347

17.4.4 写入文件 348

17.4.5 完善代码 348

17.5 本章小结 351

第18章 项目实战——数据分析 352

18.1 数据持久化 353

18.2 模块化 357

18.2.1 数据库操作模块化 357

18.2.2 文件生成模块化 360

18.2.3 邮件发送模块化 361

18.3 数据分析的

在线预览

第2章 开启Python之旅本章主要介绍Python的基础知识,为后续章节学习相关内容做铺垫。2.1 认识程序旅行前,我们要先熟悉地名,知道去哪里旅行,将会经过哪里。学习编程语言也一样,在学习之前要先了解程序、调试、语法错误、运行错误、语义错误等知识。2.1.1 程序我们都知道,出门旅行肯定要选择交通工具,现在常用的交通工具有飞机、火车、轮船、汽车等,我们会根据自己的喜好和一些其他因素选择对应的交通工具。编程语言也一样,我们选择一门编程语言就相当于选择一种交通工具,那么,编程语言的“交通”工具是什么呢?是程序。程序是指根据语言提供的指令按照一定逻辑顺序对获得的数据进行运算,并最终返回给我们的指令和数据的组合。在这里,运算的含义是广泛的,既包括数学计算之类的操作(如加减乘除),又包括寻找和替换字符串之类的操作。数据依据不同的需要组成不同的形式,处理后的数据也可能以另一种方式体现。程序是用语言写成的。语言分高级语言和低级语言。低级语言有时叫机器语言或汇编语言。计算机真正“认识”并能够执行的代码,在我们看来是一串0和1组成的二进制数字,这些数字代表指令和数据。早期的计算机科学家就是用这些枯燥乏味的数字编程。低级语言的出现是计算机程序语言的一大进步,它用英文单词或单词的缩写代表计算机执行的指令,使编程的效率和程序的可读性都有了很大提高,但它仍然和机器硬件关联紧密,不符合人类的语言和思维习惯,而且要想把用低级语言写的程序移植到其他平台,就必须重写。高级语言的出现是程序语言发展的必然结果,也是计算机语言向人类的自然语言和思维方式逐步靠近和模拟的结果。由于高级语言是对人类逻辑思维的描述,用高级语言写程序会感到比较自然,读起来也比较容易,因此现在大部分程序都是用高级语言写的。高级语言设计的目的是让程序按照人类的思维和语言习惯书写,是面向人的,而不是面向机器。我们用着方便,机器却无法读懂,更谈不上运行。所以,用高级语言写的程序必须经过“翻译”程序的处理,将其转换成机器可执行的代码,才能运行在计算机上。如果想把高级语言写的程序移植到其他的平台,只需在它的基础上做少量更改就可以了。高级语言翻译成机器代码有两种方法,即解释和编译。解释型语言是边读源程序边执行。高级语言就是源代码。解释器每次会读入一段源代码,并执行它,接着再读入并执行,如此重复,直到结束,图2-1显示了解释器的结构。这个有点类似在乡村里搭乘公交,只要碰到路上有人等公交,就停下来载人。编译型语言是将源代码完整的编译成目标代码后才能执行,以后在执行时不需要再编译。图2-2显示了一个编译器的结构,这个有点类似我们乘坐的直达车,所有要乘车的人都从起点上车,中途不再搭载其他乘客。 图2-1 解释型语言的执行方式 图2-2 编译型语言的执行方式2.1.2 调试每当远游时,司机肯定要做几件事情,如检查发动机是否正常、检查油箱、检查各项安全系统和液压系统等,为的是尽可能减少在路途中发生意外情况。我们编程也是一样的,需要经常做检查。有一些问题编译器会帮助我们检查出来,问题查出后,简单的可以直接解决,对于稍微复杂的,需要通过调试来解决。程序是很容易出错的。程序错误被称为bug,查找bug的过程称为调试(debugging)。我们在第1章中已经介绍过一个很简单的调试示例。2.1.3 语法错误在生活中有时会碰到这样的情况,你本应买今天去某地的火车票,已经买好了,但当进站检票时,系统告诉你票不是今天的,这时你才发现购买车票时输错了日期。程序中这种错误比生活中出现的次数多很多,称为语法错误(syntax errors)。Python程序在语法正确的情况下才能运行,否则解释器会显示一条错误信息。语法指的是程序的结构和此结构的规则。比如第1章的('Hello,world!'),括号中的单引号是成对的,执行时才能正确执行。如果输入('Hello,world!)或(Hello,world!')就会报错,这属于语法错误。我们在阅读文章或听人讲话时,可以容忍大多数语法错误,不过Python并不如此宽容。程序中只要出现一处语法错误,Python就会显示错误信息并退出,从而无法通过编译。就如我们进站,一旦票不满足进站要求,就无法进入一样。在编程生涯的开始阶段,可能每踏出一步都会碰到大量语法方面的错误,随着经验的增加,犯错会减少,踩过坑后,后面遇到类似的坑就能快速应对了。2.1.4 运行错误我们可能在奔跑的交通工具内愉悦地欣赏着远途的风景,但此时交通工具突然慢慢停下来了,并且司机对大家宣布说,交通工具抛锚了。例如,出现轮胎破损、没油了、发动机坏了、撞车事故等。在Python中经常会遇到类似的错误,称之为运行时错误(runtime errors)。即使是看起来无缺的程序,在运行的过程中也会出现错误。有人说,计算机不是善于计算吗?确实如此。不过错的不是计算机,而是我们人类。计算机说到底是人类设计的,是我们所用的工具,和电视机、汽车从本质上来说是一样的。鉴于现在计算机软硬件的理论水平、工业制造水平、使用者的水平等一些内在、外在的因素,出现错误并不稀奇,且程序越复杂,出现异常的概率越大。异常的种类很多,如内存用尽、除数为零的除法等都可能导致异常。Python为了把错误的影响降至低,提供了专门的异常处理语句。运行时错误一般在代码量偏多时才容易遇到。2.1.5 语义错误经常乘坐交通工具,难免有乘错车的情况出现,比如你本应该乘坐801路车,却坐上了802路车,结果到达了不同的地方。在Python中经常会发生类似的问题,此类问题称为语义错误(semantic errors)。程序即使有语义错误,也能正常运行,不会产生任何错误信息,但得到的结果和我们预料的不一致。发生这种错误一般是我们对语句的运行机制了解得不够透彻,自以为它应该如此运行,实际上却不是这样。还有可能是你解决问题的思路本身就是错的,写的程序当然是错的。查找语义错误并不像我们坐错了车那么容易,它可能需要你根据结果进行推理,不过推理的过程没有那么简单易行,需要查看程序输出,并尝试弄明白到底做了什么。2.2 数据类型计算机是可以做数学计算的机器,计算机程序理所当然可以处理各种数值。计算机能处理的远不止数值,还有文本、图形、音频、视频、网页等各种各样的数据,不同的数据需要定义不同的数据类型。Python 3中有6种标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。本节首先讲解Number数值类型,其他5种数据类型在后续章节介绍。Python 3支持3种不同的数值类型:整型(int)、浮点型(float)、复数(complex)。2.2.1 整型int通常被称为整型或整数,是正、负整数,不带小数点。在Python 3中,整型没有限制大小,可以当作long类型使用,所以Python 3没有Python 2的long类型。例如,公司组织旅游,大家坐上了大巴准备出发,现在需要统计有多少人在车上,boss吩咐小萌清点一下人数,小萌花了两分钟逐个点了一遍,总计51人。小萌在交互模式下输入:>>> 5151这里使用的就是整形。到服务区后,大家休息了一下,再次准备出发时,boss又吩咐小萌清点一下人数。小萌苦笑一下,看来又得花两分钟清点人数了,为什么不叫一个人帮忙从车的另一头清点呢?于是小萌叫小智帮忙从另一头清点一下人数。一分钟后,小萌和小智在车中间碰上了,小智告诉小萌他的计数是25人,小萌在交互模式下输入:>>> 25 2550小萌准备把数字报告给boss,突然想到上次报告的是51人,这次是50人,数字不同啊,还差1人,小萌在交互模式下输入:>>> 51-501怎么少了一人呢?小萌突然慌了,然后仔细一想,原来是把自己忘加上了,于是再次输入:>>> 25 25 151这次没问题了。于是小萌给了boss和上次一样的答案。boss示意司机可以发车了,又突然叫停,看天气挺热的,大家路上可能会口渴,于是吩咐小萌去服务区给每人买两瓶水,再买一大包糖给大家在路上补充能量。每人两瓶水,一共要买多少瓶呢?小萌在交互模式下输入:>>> 512102一共要买102瓶水,这么多,于是小萌让小智帮忙一起去提水。水和糖都买回来了,水好分,给每人两瓶就是,这一大包糖该怎么给大家呢?看包装袋上有总颗数,一共有153颗,每人多少颗呢?小萌在交互模式下输入:>>> 153/513.0好了,给每人发3颗糖就可以了。于是小萌高高兴兴发糖去了,小智也帮忙一起发,每人给3颗。糖终于发完了,小萌很惬意,坐下来补充能量。小萌突然想到了什么,有153颗糖,分给51人,每人3颗糖没错,但计算出来的结果怎么是3.0呢?假如有155颗糖,计算结果会是怎样的呢?输入以下数据:>>> 155/513.0392156862745097如果按这个结果分,就没有办法分了。这是怎么回事呢?原因是:在整数除法中,除法(/)计算结果是浮点数,即使两个整数恰好整除,结果也是浮点数。如果只想得到整数的结果,丢弃可能的分数部分,可以使用地板除(//),整数的地板除(//)永远是整数,即使除不尽。更改前面输入的数据:>>> 153//513这时就不是浮点数了。再看看155颗糖的结果:>>> 155//513153和155除以51都是3,这个就不对了。原来还有一个余数。因为地板除(//)只取结果的整数部分,所以Python提供了一个余数运算,可以得到两个整数相除的余数,看看153和155对51的取余:>>> 153%510>>> 155%512这次的结果就是想要的了。假如有155颗糖,就会多出2颗。小萌细细想着,嘴角泛起一丝自然的微笑,小智也发完糖了,过来向小萌汇报,看见小萌的表情,小智心里顿时暖暖的,无须报告了。2.2.2 浮点型浮点型由整数部分与小数部分组成,也可以使用科学计数法表示。比如,小萌还在细想中,boss突然打断了她的思维,问她总共花了多少钱。小萌理了一下思绪,每瓶水3.3元,一共102瓶,总共多少钱呢?输入如下:>>> 3.3102336.59999999999997结果怎么这么长?小萌看傻了,不过冷静一看,原来是:整数和浮点数在计算机内部存储的方式不同,整数运算永远是的,而浮点数运算可能会有四舍五入的误差。“boss,一共336.6元”。“好的,加上买糖的钱了吗”?小萌暗骂自己,瞧我这脑筋。再计算一次,每瓶水3.3元,一共102瓶,再加上一包糖15.5元,输入如下:>>> 3.3102 15.5352.09999999999997这结果好像很凌乱,应该这么输入:>>> 336.6 15.5352.1这个结果就好看多了。报告给boss,一共花费352.1元。小萌又开始思考了,浮点数相乘结果这么怪,浮点数的除法是怎样的呢?想到了就实践,输入如下:>>> 153/51.03.0这个结果和153除以51的结果是一样的,如果155除以51.0呢?输入如下:>>> 155/51.03.0392156862745097结果和155除以51也是一样的。那做地板除和取余又是怎样的呢?输入如下:>>> 155//51.03.0>>> 155%51.02.0可以看出,得到的结果都是浮点型的。2.2.3 复数复数由实数部分和虚数部分构成,可以用a bj或complex(a,b)表示,复数的实部a和虚部b都是浮点型。Python支持复数,不过Python的复数我们当前阶段使用或接触的比较少,此处就不再具体讲解,读者有一个概念即可,有兴趣可以自行查阅相关资料。2.2.4 数据类型转换有时我们要对数据内置的类型进行转换,只需要将数据类型作为函数名即可。数据的类型转换时有如下4个函数可以使用:? int(x) 将x转换为一个整数。? float(x) 将x转换为一个浮点数。? complex(x) 将x转换为一个复数,实数部分为 x,虚数部分为 0。? complex(x, y) 将x和y转换为一个复数,实数部分为x,虚数部分为y。x和y是数字表达式。比如,小萌去购物,计算出应付金额是352.1元,超市老板为免除找零的麻烦,让小萌支付352元。Python中的转换可以如下执行:>>> int(352.1)352很容易就得到了转换后的结果。但是金额的操作必须用浮点数进行记账,这个容易,用float函数就行了。输入如下:>>> float(352.1)352.1这样就得到了浮点型数据。结果跟输入的一样,这下怎么办呢?把int函数放入float函数中是否可以呢?尝试一下:>>> float(int(352.1))352.0这里先把352.1取整,得到整数352,再用float将352转换成浮点数352.0,这样就得到我们需要的结果了。虽然输入的字符看起来有点复杂,但是还是得到结果了。这其实是函数的嵌套,后面会进行具体介绍,此处做相关了解即可。2.2.5 常量所谓常量,就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量。Python中有两个比较常见的常量,即PI和E。? PI:数学常量pi(圆周率,一般以π表示)。? E:数学常量e,即自然常数。这两个常量将会在后续章节中使用,具体的用法在使用中体现。2.3 变量和关键字编程语言最强大的功能之一是操纵变量。变量(variable)是一个需要熟知的概念,如果你觉得数学让你抓狂,别担心,Python中的变量很好理解。变量基本上代表某个值的名字。2.3.1 变量变量指向各种类型值的名字,以后再用到这个值时,直接引用名字即可,不用再写具体的值。在Python中,变量的使用环境非常宽松,没有明显的变量声明,而且类型不是固定的。你可以把一个整数赋值给变量,如果觉得不合适,把字符串赋给变量也可以。在Python中,等号(=)是赋值语句,可以把任意数据类型赋值给变量。如果要定义一个名为xiaohong的变量,该怎么操作呢?输入如下:>>> xiaohong='XiaoHong'>>>字符串必须以引号标记开始,并以引号标记结束。此操作解释:xiaohong是我们创建的变量,=是赋值语句,XiaoHong是变量值,需要用引号标记。整句话的意思为:创建变量xiaohong并赋值为XiaoHong。小萌疑惑了,怎么前面输入后按回车键就能输出内容,这里怎么跳到输入提示状态呢?别急,还记得前面讲的print()吗?print()是输出函数,看看这里,没有使用输出函数,屏幕上当然不会输出内容了。要输出内容应该怎么操作呢?我们尝试一下:>>> print(xiaohong)XiaoHong不错,尝试成功了。但为什么小萌输入的是print(xiaohong),结果却输出XiaoHong呢?这就是变量的好处,可以只定义一个变量,比如xiaohong,把一个值赋给这个变量,比如XiaoHong,这样当我们输出xiaohong时,实际上输出的是XiaoHong。在使用变量前需要对其赋值。没有值的变量是没有意义的,编译器也不会编译通过。例如,定义一个变量为abc,不赋任何值,输入及结果如下:>>> abcTraceback (most recent call last): File "", line 1, in abcNameError: name 'abc' is not defined同一个变量可以反复赋值,而且可以是不同类型的变量,输入如下:>>> a = 123 123>>> a='ABC'>>> print(a)ABC这种变量本身类型不固定的语言称为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值时类型不匹配就会报错。和静态语言相比,动态语言更灵活。当不能确定变量或数据的类型时,可以借助解释器内置的函数type进行确认。在交互模式下可以如下输入:>>> type('Hello,world!')测试得到输入的结果类型是字符串类型(str)。>>> type(100)测试得到输入的结果类型是整型(int)。>>> type(3.0)测试得到输入的结果类型是浮点型(float)。>>> a='test type'>>> type(a)测试得到输入的结果类型是字符串类型(str)。>>> b=100>>> type(b)测试得到输入的结果类型是整型(int)。>>> c=3.0>>> type(c)测试得到输入的结果类型是浮点型(float)。只要是用双引号或单引号括起来的值,都属于字符串。交互模式下输入:>>> type('test single quotes')>>> type("test double quote")>>> type("100")>>> type("3.0")>>> b=3>>> type(b)>>> b=100>>> type(b)>>> c=3.0>>> type(c)测试得到输入的结果类型都是字符串类型(str)。注意不要把赋值语句的等号等同于数学中的等号。比如下面的代码:a = 100a = a 200小萌一脸疑问,a = a 200是什么等式啊?读书时不知道在这个等式上花费了多少脑细胞,可别再拿这个骗我了,我可是读过小学的。小萌啊小萌,计算机可不是人脑,也不需要遵循学校的知识,计算机有计算机的思考方式。在编程语言中,赋值语句先计算右侧的表达式a 200,得到结果300,再赋给变量a。由于a之前的值是100,重新赋值后,a的值变成300。我们通过交互模式验证,输入如下:>>> a=100>>> a=a 200>>> print(a)300和我们所描述的结果一致。理解变量在计算机内存中的表示也非常重要。当我们输入如下:>>> a='ABC'这时,Python解释器做了两件事情:(1)在内存中创建了一个'ABC'字符串。(2)在内存中创建了一个名为a的变量,并把它指向'ABC'。也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:>>> a='ABC'>>> b=a>>> a='XYZ'>>> print(b)一行输出变量b的内容到底是'ABC'还是'XYZ'呢?如果从数学意义上理解,就会错误地得出b和a相同,应该是'XYZ'。实际上,b的值是'ABC'。我们一行一行执行代码,就可以看到到底发生了什么事。执行a = 'ABC',解释器创建了字符串'ABC'和变量a,并把a指向'ABC',如图2-3所示。 图2-3 a指向'ABC'执行b = a,解释器创建了变量b,并把b指向a指向的字符串'ABC',如图2-4所示。 图2-4 a、b指向'ABC'执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b没有更改,如图2-5所示。 图2-5 a指向'XYZ',b不变输出变量b的结果自然是'ABC'了。2.3.2 变量名称程序常常选择有意义的名称作为变量名,以此标记变量的用途。变量名是由数字或字符组成的任意长度的字符串,必须以字母开头。使用大写字母是合法的,但变量名建议使用小写字母开头。Python是区分大小写的。举个例子来说,Name和name是两个不同的变量名。交互模式中输入如下:>>> name='study python is happy'>>> Name='I aggree with you'>>> print(name)study python is happy>>> print(Name)I aggree with you下划线“_”可以出现在变量名中,经常用于连接多个词组,如happy_study, do_it_with_ more_practice。交互模式输入如下:>>> happy_study='stay hungry stay foolish'>>> print(happy_study)stay hungry stay foolish如果给变量取非法的名称,解释器就会显示语法错误。请看下面的示例:>>> 2wrongtest='just for test'SyntaxError: invalid syntax该示例提示语法错误,错误信息为无效的语法,原因为不是以字母开头的。>>> xiaoming@me='surprised'SyntaxError: can't assign to operator该示例提示语法错误,错误信息为不能做指定操作,原因是包含一个非法字符@。Python不允许使用关键字作为变量名,请看下面的例子:>>> from='from'SyntaxError: invalid syntaxfrom是Python的一个关键字,因此出现错误。Python 3中共有33个关键字,都不能作为变量名来使用。False None True and as assert breakclass continue def del elif else exceptfinally for from global if import innonlocal lambda is not or pass raisereturn try while with yield2.4 语 句语句是Python解释器可以运行的一个代码单元,也可以理解为可以执行的命令。我们目前已经使用了两种语句:print打印语句和赋值语句。赋值语句有两个作用:一是建立新的变量,二是将值赋予变量。任何变量在使用时都必须赋值,否则会被视为不存在的变量。看了上百字,也没明白什么是语句,小萌暗自抱怨到。于是她随手在交互模式下输入 如下:>>> advice='boss,we want have a lunch'刚输完一句,小萌就停下了,等等,刚才输入的不就是语句吗?前面都做过不少示例了,看看还用过什么语句。在交互模式下写的及时个程序不就是print语句吗?对了,还可以知道这个语句中advice的类型是什么样的。小萌想完,在交互模式下输入如下:>>> type(advice)这个语句中advice的类型是字符串(str)类型。还有什么类型的赋值语句呢?对了,前面还学习了整型和浮点型,交互模式输入:>>> money=99999999>>> type(money)>>> spend=1.11111111>>> type(spend)不错,把之前学习的温习了一下。于是小萌又在交互模式下输入如下:>>> so happySyntaxError: invalid syntax哎呀,怎么又犯糊涂了,变量是一定要赋值的。于是重新输入:>>> print('so happy,it is a perfect forenoon')so happy,it is a perfect forenoon小萌突然感觉有人站在自己旁边,原来是小智。小智盯着交互模式输入界面,突然说道:&ldq

网友评论(不代表本站观点)

来自无昵称**的评论:

挺好的 对初学者帮助很大 我居然全看懂了

2017-11-21 08:29:53
来自lu小蚂**的评论:

还不错,挺好的,没毛病

2017-11-22 14:37:38
来自寒豫威**的评论:

适合对python不懂的人从头学起

2017-11-23 20:05:46
来自詹姆斯**的评论:

还行,不是很推荐,实用性不强

2017-11-14 22:40:06
来自无昵称**的评论:

这本书可以,适合初学者学习

2017-11-15 19:13:16
来自无昵称**的评论:

书没有收到,快递联系不上,客服反应超级慢!差评,退款。

2017-11-17 14:28:14
来自johnree**的评论:

适合没有编程基础的人,讲的很基础

2017-11-19 08:28:38
来自英***y(**的评论:

快递还是很快的,我在成都,9月29号晚上买的,不知道为什么从天津发货,预计10月1号到,10月1号还真的到了

2017-10-02 19:59:15
来自无昵称**的评论:

对我的人格提升非常大

2017-11-10 15:48:28
来自黑色罂**的评论:

讲的很清楚,入门很简单

2017-11-11 21:45:28
来自poiu198**的评论:

书是基础的python读物,适合初学者,关键在于是3.5版,免去了用3.x看2.书的混乱

2017-11-12 16:12:12
来自无昵称**的评论:

有趣,好学,实用,轻松学习python的好书。

2017-08-17 16:27:03
来自wx00098**的评论:

书的内容通俗易懂,是本值得学习的书!

2017-08-18 08:49:40
来自幸福快**的评论:

书不错。快递像蜗牛。五天才到

2017-08-26 12:06:37
来自天行阁5**的评论:

书很先进,不过书里面有很多错误,希望下次能够改正

2017-09-02 01:26:27
来自无昵称**的评论:

真的很不错

2017-09-11 17:15:48
来自无昵称**的评论:

当当的包装如果再好点就好了,,就一个袋太薄了

2017-09-15 21:00:31
来自匿名用**的评论:

科普一下没坏处

2017-09-21 08:22:06
来自褚晨雷**的评论:

第一次评论,写得很深动,浅显易懂,好评!

2017-09-24 17:42:50
来自无昵称**的评论:

先看看,主要用来入门

2017-09-26 22:18:44
来自无昵称**的评论:

内容通俗易懂,不错

2017-09-27 09:35:50
来自无昵称**的评论:

书纸张有点差

2017-10-04 21:00:29
来自无昵称**的评论:

很棒的!有引导性

2017-10-15 14:50:47
来自baobaoy**的评论:

初学者不错

2017-10-23 18:00:49
来自无昵称**的评论:

还行吧拜拜

2017-11-01 19:25:24
来自匿名用**的评论:

学习下python

2017-11-02 20:47:16
来自无昵称**的评论:

买回来几天,已经快看了三分之一,入门不错

2017-11-03 13:20:51
来自铂金会**的评论:

真的真的就是非常基础的东西,估计是别人的教材

2017-10-05 23:28:08
来自pojos**的评论:

刚刚收到货,还没有看,目前各方面比较满意。后期再添加评论。

2017-09-18 10:47:46
来自wx003ab**的评论:

本书内容全面,值得拥有,让我们玩一场Python的游戏!

2017-09-27 10:07:31
来自halelai**的评论:

这本书比某本销量大,绿皮的,外国人写的强大多了。特别是对于没有学过编程的我来说,这本才是0基础入门的首选!那本书对于布尔变量只提及true false(原谅我真的是新手),但这本书把另外一些None,0,“”()都说明了。其他一些相关基础也是这本书提得比较充足。

2017-10-24 17:00:04
来自wx00792**的评论:

基于Python最新版本。里面不但示例很多,而且讲解也很详细,能帮助新人很好的巩固基础。

2017-08-18 22:24:36
来自无昵称**的评论:

看这本书的内容简介就很好,试读部分讲解详细,最最主要是3.5版本,值得推荐。。。

2017-08-17 16:04:28
来自无昵称**的评论:

书里内容非常好,浅显易懂,适合初学者,以及业内人士做为参考书

2017-08-11 16:32:41
来自无昵称**的评论:

书的版面我喜欢,很简洁,不花哨,内容还没看,以后补上

2017-08-22 09:37:37
登录后即可发表评论

免责声明

更多相关图书
在线咨询