diff --git a/Day01-15/01.初识Python.md b/Day01-15/01.初识Python.md index b688213..1d21ea0 100644 --- a/Day01-15/01.初识Python.md +++ b/Day01-15/01.初识Python.md @@ -5,7 +5,7 @@ #### Python的历史 1. 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。 -2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,除此之外还有PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,还有对列表、字典等核心数据类型,同时支持以模块为基础来构造应用程序。 +2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,还有对列表、字典等核心数据类型,同时支持以模块为基础来构造应用程序。 3. 1994年1月:Python 1.0正式发布。 4. 2000年10月16日:Python 2.0发布,增加了完整的[垃圾回收](https://zh.wikipedia.org/wiki/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)),提供了对[Unicode](https://zh.wikipedia.org/wiki/Unicode)的支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。 5. 2008年12月3日:Python 3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python 2.x版本,所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。 @@ -34,7 +34,9 @@ Python的缺点主要集中在以下几点。 目前Python在Web应用开发、云基础设施、DevOps、网络数据采集(爬虫)、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、自然语言处理、图像识别等一系列相关的职位。 -### 搭建编程环境 +### 安装Python解释器 + +想要开始Python编程之旅,首先得在自己使用的计算机上安装Python解释器环境,下面将以安装官方的Python解释器为例,讲解如何在不同的操作系统上安装Python环境。官方的Python解释器是用C语言实现的,也是使用最为广泛的Python解释器,通常称之为CPython。除此之外,Python解释器还有Java语言实现的Jython、C#语言实现的IronPython以及PyPy、Brython、Pyston等版本,我们暂时不对这些内容进行介绍,有兴趣的读者可以自行了解。 #### Windows环境 @@ -93,7 +95,7 @@ source .bash_profile macOS也自带了Python 2.x版本,可以通过[Python的官方网站](https://www.python.org)提供的安装文件(pkg文件)安装Python 3.x的版本。默认安装完成后,可以通过在终端执行`python`命令来启动2.x版本的Python解释器,启动3.x版本的Python解释器需要执行`python3`命令。 -### 从终端运行Python程序 +### 运行Python程序 #### 确认Python的版本 @@ -139,7 +141,7 @@ python hello.py python3 hello.py ``` -### 代码中的注释 +#### 代码中的注释 注释是编程语言的一个重要组成部分,用于在源代码中解释代码的作用从而增强程序的可读性和可维护性,当然也可以将源代码中不需要参与运行的代码段通过注释来去掉,这一点在调试程序的时候经常用到。注释在随源代码进入预处理器或编译时会被移除,不会在目标代码中保留也不会影响程序的执行结果。 @@ -162,7 +164,7 @@ print('hello', 'world', sep=', ', end='!') print('goodbye, world', end='!\n') ``` -### 其他工具介绍 +### Python开发工具 #### IDLE - 自带的集成开发工具 @@ -230,18 +232,18 @@ PyCharm的安装、配置和使用在[《玩转PyCharm》](../玩转PyCharm.md) ### 练习 -1. 在Python交互环境中查看下面的代码结果,并试着将这些内容翻译成中文。 +1. 在Python交互式环境中输入下面的代码并查看结果,请尝试将看到的内容翻译成中文。 ```Python import this ``` - > 说明:当前键入上面的命令后会在交互式环境中看到如下所示的输出,这段内容被称为“Python之禅”,里面讲述的道理不仅仅适用于Python,也适用于其他编程语言。 + > 说明:输入上面的代码,在Python的交互式环境中可以看到Tim Peter撰写的[“Python之禅”](../Python之禅.md),里面讲述的道理不仅仅适用于Python,也适用于其他编程语言。 > 2. 学习使用turtle在屏幕上绘制图形。 - > 说明:turtle是Python内置的一个非常有趣的模块,特别适用于让小朋友体会什么是编程,它最早是Logo语言的一部分,Logo语言是Wally Feurzig和Seymour Papert在1966发明的编程语言. + > 说明:turtle是Python内置的一个非常有趣的模块,特别适合对计算机程序设计进行初体验的小伙伴,它最早是Logo语言的一部分,Logo语言是Wally Feurzig和Seymour Papert在1966发明的编程语言。 ```Python import turtle diff --git a/Day01-15/02.语言元素.md b/Day01-15/02.语言元素.md index 8e1e1f7..b2911f8 100644 --- a/Day01-15/02.语言元素.md +++ b/Day01-15/02.语言元素.md @@ -96,6 +96,8 @@ print(type(d)) print(type(e)) ``` +> 说明:上面的代码中用到了Python中的内置函数,如果暂时不理解函数这个概念也不要紧,我们会在后续的内容中专门讲解Python中函数的使用。 + 在对变量类型进行转换时可以使用Python的内置函数。 - `int()`:将一个数值或字符串转换成整数,可以指定进制。 diff --git a/Day01-15/03.分支结构.md b/Day01-15/03.分支结构.md index 08f2307..fcd66f7 100644 --- a/Day01-15/03.分支结构.md +++ b/Day01-15/03.分支结构.md @@ -138,9 +138,9 @@ print(result) """ 百分制成绩转等级制成绩 90分以上 --> A -80分~89分 --> B -70分~79分 --> C -60分~69分 --> D +80分~89分 --> B +70分~79分 --> C +60分~69分 --> D 60分以下 --> E Version: 0.1 @@ -190,7 +190,7 @@ else: ```Python """ -输入月收入和五险一金计算个人所得税 +输入月收入和五险一金计算个人所得税(2019年以前的算法) Version: 0.1 Author: 骆昊 diff --git a/Day36-40/36-38.关系型数据库MySQL.md b/Day36-40/36-38.关系型数据库MySQL.md index 5effe50..50e78d5 100644 --- a/Day36-40/36-38.关系型数据库MySQL.md +++ b/Day36-40/36-38.关系型数据库MySQL.md @@ -1004,19 +1004,29 @@ drop view vw_student_score; 下面的存储过程实现了查询某门课程的最高分、最低分和平均分。 ```SQL +drop procedure if exists sp_score_by_cid; + delimiter $$ -create procedure sp_get_score(courseId int, - out maxScore decimal(4,1), - out minScore decimal(4,1), - out avgScore decimal(4,1)) +create procedure sp_score_by_cid( + courseId int, + out maxScore decimal(4,1), + out minScore decimal(4,1), + out avgScore decimal(4,1) +) begin - select max(score) into maxScore from tb_record where cid=courseId; - select min(score) into minScore from tb_record where cid=courseId; - select avg(score) into avgScore from tb_record where cid=courseId; + select max(score) into maxScore from tb_record + where cid=courseId; + select min(score) into minScore from tb_record + where cid=courseId; + select avg(score) into avgScore from tb_record + where cid=courseId; end $$ delimiter ; + +call sp_score_by_cid(1111, @a, @b, @c); +select @a, @b, @c; ``` > 说明:在定义存储过程时,因为可能需要书写多条SQL,而分隔这些SQL需要使用分号作为分隔符,如果这个时候,仍然用分号表示整段代码结束,那么定义存储过程的SQL就会出现错误,所以上面我们用`delimiter $$`将整段代码结束的标记定义为`$$`,那么代码中的分号将不再表示整段代码的结束,需要马上执行,整段代码在遇到`end $$`时才输入完成并执行。在定义完存储过程后,通过`delimiter ;`将结束符重新改回成分号。 @@ -1026,7 +1036,7 @@ delimiter ; 调用存储过程。 ```SQL -call sp_get_score(1111, @a, @b, @c); +call sp_score_by_cid(1111, @a, @b, @c); ``` 获取输出参数的值。 @@ -1038,7 +1048,7 @@ select @a as 最高分, @b as 最低分, @c as 平均分; 删除存储过程。 ```SQL -drop procedure sp_get_score; +drop procedure sp_score_by_cid; ``` 在存储过程中,我们可以定义变量、条件,可以使用分支和循环语句,可以通过游标操作查询结果,还可以使用事件调度器,这些内容我们暂时不在此处进行介绍。虽然我们说了很多存储过程的好处,但是在实际开发中,如果过度的使用存储过程,将大量复杂的运算放到存储过程中,也会导致占用数据库服务器的CPU资源,造成数据库服务器承受巨大的压力。为此,我们一般会将复杂的运算和处理交给应用服务器,因为很容易部署多台应用服务器来分摊这些压力。