一、Python 介绍

python 的出生与应用

python 的创始人为吉多·范罗苏姆(Guido van Rossum)。1989 年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为 ABC 语言的一种继承。

目前 Python 主要应用领域:

云计算:云计算最火的语言, 典型应用 OpenStack

WEB 开发: 众多优秀的 WEB 框架,众多大型网站均为 Python 开发,Youtube, Dropbox, 豆瓣。。。, 典型 WEB 框架有 Django

科学运算、人工智能:典型库 NumPy, SciPy, Matplotlib, Enthought librarys,pandas

系统运维: 运维人员必备语言

金融:量化交易,金融分析,在金融工程领域,Python 不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的 Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于 c,c++,java,尤其擅长策略回测

图形 GUI: PyQT, WxPython,TkInter

二、计算机基础

cpu:

相当于人的大脑,运算与控制中心。

速度 飞机

内存:

暂时存储,供给 CPU 数据。

速度 高铁。成本高,断电即消失。

硬盘:

相当于电脑的数据库,存储着大量的数据,文件,音频文件。

速度 走。成本低

操作系统:

执行者,支配所有关系。windows,linux,mac…

python 流行的原因

1.大量第三方库

2.Diango

三、python 的历史

Python 崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。

python 2x 和 3x 在同一年诞生,2x 是 10 月,3 是 12 月

python 2x:源码混乱,重复代码较多,冗余。

python 3x: 源码规范,崇尚优美、清晰,简单

四、python 2x,python 3x 的区别

1.print 方法有区别

python 3x print(‘内容’)

python 2x print()或者 print ‘内容’

2.编码方式不一样

python 3x 默认编码:utf-8

python 2x 默认编码:ascii 只包含英文字母和特殊字符以及数字

不支持中文

解决方式:

在头部增加

  1. # -*- coding: utf-8 -*-

3.input 不同

python 2x: raw_input()

python 3x: input()

五、开发语言的分类

解释型:当程序运行时,将代码一行一行的解释成二进制,再运行。

优点:排错快,开发效率高,可以跨平台

缺点:执行效率相对低

典型:python

编译型:将代码一次性全部编译成二进制,然后运行。

缺点:排错慢,开发效率低,不能跨平台(操作系统)。

优点:执行效率高

典型:C

python 的种类

CPython 默认解释器,转换为字节码,再转换为 c 语言 010101…

IPython

PyPy 一次性全部转化成二进制,执行效率高。

Jython 把 Python 代码编译成 Java 字节码执行

IronPython

虽然解释器不同,但是写 python 代码的规则还是统一的。

六、运行第一个 python 程序

如果想要 windows 电脑同时有 2 个 python 环境,Python2.7 和 Python3.5

先安装 python2.7

1、下载安装包

https://www.python.org/downloads/

2、安装

默认安装路径:C:\python27

勾选添加环境变量

Day1 python介绍,变量,if,while - 图1

再安装 python3.5

选择自定义安装,勾选添加环境变量

Day1 python介绍,变量,if,while - 图2

安装路径设置为 C:\Python35

进入目录 C:\Python27

将 python.exe 更改为 python2.exe

打开 windows 命令行模式

输入 python2 就是 2.7 版本

输入 python 就是 3.5 版本

Day1 python介绍,变量,if,while - 图3

新建一个 test.py 文件,内容如下

  1. print('你好,世界')

使用命令行方式

我的代码路径在 E:\python_script\day1

进入目录,执行代码

Day1 python介绍,变量,if,while - 图4

使用 python2 执行

执行报错

Day1 python介绍,变量,if,while - 图5

因为默认 python2x 编码是 ascii,不支持中文

在第一行添加

  1. # -*- coding: utf-8 -*-

再次执行,就可以了

Day1 python介绍,变量,if,while - 图6

如果 python 安装完成之后,发现执行 python 有问题时

可以把所有 python 版本卸载,重新安装一次,确保环境变量已经删除,文件后缀是可以显示的。

Day1 python介绍,变量,if,while - 图7

七、变量

变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用。

Day1 python介绍,变量,if,while - 图8

变量定义的规则:

1,变量必须由数字,字母,下划线任意组合。

2,变量不能以数字开头。

3,变量不能是 python 中的关键字。(不用背)

[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’,’not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

4,变量要具有可描述性。

5,变量不能是中文。

6,变量不能太长。

7,官方推荐:

  1. #驼峰体
  2. AgeOfOldboy = 56
  3. NumberOfStudents = 100
  4. #下划线
  5. age_of_oldboy = 56
  6. number_of_students = 80

一般推荐使用第 2 种,也就是下划线的方式。

下面几个例子,判断变量名是否合法

  1. w__ = 22
  2. e_a_ = '太白'
  3. e$ = 'fdsa'
  4. -_ = '15'
  5. 2g = 33
  6. __ = '

3,4,5 行的变量,是不合法的,其他的都是合法的。

赋值计算

先计算等号右边的,把计算的值赋值给左边的

python 是解释型语言,代码是一行一行执行

后面的变量会覆盖前面的。

  1. age1 = 12
  2. age2 = age1
  3. age3 = age2
  4. age2 = 6
  5. print(age1,age2,age3)

执行输出

12 6 12

看一个图

Day1 python介绍,变量,if,while - 图9

age1~3 的值,存储在内存中。当 age2 等于 6 时,age2 值的指向就发生了变化,值为 6

常量

常量即指不变的量,如 pai 3.141592653…, 或在程序运行过程中不会改变的量

默认全部大写的变量,称之为常量。

  1. CITY_LIST = 'beijing'

注释

为什么有注释?

帮助你记起之前的代码,或者帮助别人看懂你的代码

不宜多,精就行

单行注释: #被注释内容

多行注释: ‘’’被注释内容’’’ 或者 “””被注释内容”””

  1. #定义一个变量
  2. name1 = "taibai"
  3. '''
  4. 虞美人·碧苔深锁长门路
  5. 清代:王国维
  6. 碧苔深锁长门路。总为蛾眉误。自来积毁骨能销。何况真红一点臂砂娇。
  7. 妾身但使分明在。肯把朱颜悔。从今不复梦承恩。且自簪花坐赏镜中人。
  8. '''

八、基础数据类型初始

int(整型)

在 32 位机器上,整数的位数为 32 位,取值范围为-231~231-1,即-2147483648~2147483647

在 64 位系统上,整数的位数为 64 位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807

long(长整型)

跟 C 语言不同,Python 的长整数没有指定位宽,即:Python 没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。

注意,自从 Python2.2 起,如果整数发生溢出,Python 会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母 L 也不会导致严重后果了。

注意:在 Python3 里不再有 long 类型了,全都是 int 长整型

字符串类型(str)

在 Python 中,加了引号的字符都被认为是字符串!

  1. msg = "My name is xiao,I'm 22 years old!"
  2. num = '12'

这种会出错

  1. msg = "My name is xiao,I"m 22 "years old!"

双引号,只看 2 头的,从左到右


一般 3 个引号的,用到多行的场景,有行号符的。

一行很少用 3 个引号的

  1. shi = '''
  2. 马汗踏成泥,朝驰几万蹄。
  3. 雪中行地角,火处宿天倪。
  4. 塞迥心常怯,乡遥梦亦迷。
  5. 那知故园月,也到铁关西。
  6. '''
  7. print(shi)

执行输出

马汗踏成泥,朝驰几万蹄。

雪中行地角,火处宿天倪。

塞迥心常怯,乡遥梦亦迷。

那知故园月,也到铁关西。

3 个单引号,没有赋值,是用来注释的

比如上面的唐诗《虞美人·碧苔深锁长门路》

字符串只能相加和相乘

相加

  1. n1 = '她的名字是'
  2. n2 = '南宫紫菱'
  3. n3 = n1 + n2
  4. print(n3)

执行输出

她的名字是南宫紫菱

相乘

  1. n1 = '我好爱你!'
  2. print(n1 * 3)

执行输出

我好爱你!我好爱你!我好爱你!

九、布尔值(True,False)

布尔类型很简单,就两个值 ,一个 True(真),一个 False(假), 主要用记逻辑判断

  1. print(1 > 2)

执行输出

False

返回 false

布尔值是不带引号的

  1. print(1 > 2 and 3 < 4 or 4 > 5)

执行输出

False

布尔值判断时,如果出现 false,结果返回 false

十、查看数据类型

使用 type()方法

  1. n1 = 'nan'
  2. n2 = False
  3. n3 = 'False'
  4. print(type(n1))
  5. print(type(n2))
  6. print(type(n3))

执行输出

十一、用户交互 input

input 出来的数据类型,都是字符串

  1. name = input('请输入你的名字: ')
  2. age = input('请输入你的年龄: ')
  3. hobby = input('请输入你的爱好: ')
  4. s = '我的名字是' + name + '\n我的年龄是' + age + '\n我的爱好是' + hobby
  5. print(s)

执行效果

Day1 python介绍,变量,if,while - 图10

十二、if 语句

第 1 种结构

  1. if 条件:
  2. 结果

举例

  1. if 3 > 2:
  2. print(666)

执行输出

666

第 2 种结构

  1. if 条件:
  2. 结果
  3. else:
  4. 结果

举例

  1. if 3 > 2:
  2. print(666)
  3. else:
  4. print(333)

执行输出

666

第 3 种结构

  1. if 条件 1:
  2. 结果 1
  3. elif 条件 2:
  4. 结果 2
  5. elif 条件 3:
  6. 结果 3

举例

  1. choice = input('请输入你猜的数字:')
  2. if choice == '2':
  3. print('我请你吃饭')
  4. elif choice == '6':
  5. print('免一周作业')
  6. elif choice == '3':
  7. print('一起去玩耍')

执行输出

第 4 种结构

  1. if 条件 1:
  2. 结果 1
  3. elif 条件 2:
  4. 结果 2
  5. elif 条件 3:
  6. 结果 3
  7. else:
  8. 结果 4

举例

  1. choice = input('请输入你猜的数字:')
  2. if choice == '2':
  3. print('我请你吃饭')
  4. elif choice == '6':
  5. print('免一周作业')
  6. elif choice == '3':
  7. print('一起去玩耍')
  8. else:
  9. print('输入错误')

执行输出

Day1 python介绍,变量,if,while - 图11

== 表示做比较 = 表示赋值

第 5 种结构

  1. if 条件:
  2. if 条件:
  3. 结果
  4. else:
  5. 结果
  6. else:
  7. 结果

只要需求存在,就可以一直嵌套 if

举例

  1. age = int(input('请猜我的年龄:'))
  2. if True:
  3. if age == 18:
  4. print('恭喜你猜对了')
  5. else:
  6. print('这都看不出来...')
  7. else:
  8. print('输入错误')

执行输出

Day1 python介绍,变量,if,while - 图12

字符串之间不能比较大小,只能比较相等

int —-> str str(12) 转换成字符串,使用 str()

str —-> int int(12) 全部由数字组成的字符串才能转化为数字

十三、while 循环

用来执行重复的代码

  1. while True:
  2. print('痒')
  3. print('凉凉')
  4. print('体面')
  5. print('社会摇')

执行输出

凉凉

体面

社会摇

while True 代表死循环

另外一个例子

  1. print(222)
  2. while True:
  3. print(111)
  4. print(333)
  5. print(444)

执行输出

222

111

333

111

333

….

444 永远不会执行

跳出循环的条件:

1.改变条件

2.breck

  1. 标志位 flag
  2. 1 打印到 100
  3. #标志位
  4. flag = True
  5. #初始值
  6. count = 1
  7. while flag:
  8. #第一次,打印初始值。之后打印自增值
  9. print(count)
  10. #循环一次,自增 1
  11. count = count + 1
  12. #当等于 100 时,循环终止
  13. if count == 100:
  14. #打印 100
  15. print(count)
  16. flag = False

执行输出

1

2

3

100

第 2 种写法

  1. #初始值
  2. count = 1
  3. while count < 101:
  4. #第一次,打印初始值。之后打印自增值
  5. print(count)
  6. #循环一次,自增 1
  7. count = count + 1

执行输出,效果同上

breck:结束循环
  1. while True:
  2. print(111)
  3. print(222)
  4. break
  5. print(333)

执行输出

111

222

遇到 breck,终止循环,下面的代码不执行

continue:结束本次循环,继续下一次循环。

continue 相当于见底了

  1. while True:
  2. print(111)
  3. print(222)
  4. continue
  5. print(333)

执行输出

111

222

….

333 永远不会执行,为什么呢?遇到 continue 时,下面代码不执行,继续执行下一次循环,由于循环无法终止,所以最后一行代码,始终不会执行。

使用 breck 方式,打印 1 到 100

  1. #初始值
  2. count = 1
  3. while True:
  4. #第一次,打印初始值。之后打印自增值
  5. print(count)
  6. #循环一次,自增 1
  7. count = count + 1
  8. if count == 101:
  9. break

执行输出 1 到 100

十四、相关练习题

1、使用 while 循环输入 1 2 3 4 5 6 8 9 10

2、求 1-100 的所有数的和

3、输出 1-100 内的所有奇数

4、输出 1-100 内的所有偶数

5、求 1-2+3-4+5 … 99 的所有数的和

6、用户登陆(三次机会重试)

习题分析:

1、使用 while 循环输入 1 2 3 4 5 6 8 9 10

观察题目,发现 1~10,少了一个数字 7

思路如下:

1.先输出 1~10

  1. #初始值
  2. count = 0
  3. while count < 10:
  4. count = count + 1
  5. print(count)

执行输出 1~10

2.遇到 7 的时候,不执行 print()就可以了

如果直接用 breck,那么循环就终止了。这个时候,需要用到 continue 了

最终代码如下:

  1. #初始值
  2. count = 0
  3. while count < 10:
  4. #自增 1
  5. count = count + 1
  6. #判断为 7 时,终止此次循环,继续下一次循环
  7. if count == 7:
  8. continue
  9. print(count)

执行输出

1

2

3

4

5

6

8

9

10

2、求 1-100 的所有数的和

思路如下:

1.先输出 1~100

  1. #初始值
  2. count = 0
  3. while count < 100:
  4. #自增 1
  5. count = count + 1
  6. print(count)

2.需要定义一个总和变量 the_sum,每次要向前推进加数字,就比如吃豆游戏一样

  1. #初始值
  2. count = 0
  3. #总和的初始值
  4. the_sum = 0
  5. while count < 100:
  6. #自增 1
  7. count = count + 1
  8. the_sum = the_sum + count
  9. print(the_sum)
  10. print(the_sum)

执行输出

1

3

6

5050

上面的代码,我把每次相加的结果给打印出来了。

0+1+2+3+….+100

计算过程是从左至右的,0+1=1,再计算 1+2=3,再计算 3+3=6….

解释一下代码执行过程

第一次 count=0,the_sum=0 执行到第 7 行时,count=1,那么 the_sum 结果 1,所以输出 1

第二次 count=1(因为 whlie 循环会迭代),执行到第 7 行时,count=2(1+1=2),那么 the_sum 的结果为 3。因为第一次 the_sum 的值为 1,所以这里为 1+2=3

第三次,count=2,执行到第 7 行时,count=3,那么 the_sum 的结果为 6(3+3=6)

所以最终结果为 4950+100=5050

3、输出 1-100 内的所有奇数

先来介绍求奇数和偶数的方法

用数字和 2 整除,取余 %

等于 1 为奇数

等于 0 为偶数

思路和第 2 题类似

1.先输出 1~100

  1. #初始值
  2. count = 0
  3. while count < 100:
  4. #自增 1
  5. count = count + 1
  6. print(count)

执行输出 1~100

2.用 count 和 2 整除取余,如果为 1,输出数字,否则不输出

  1. #初始值
  2. count = 0
  3. while count < 100:
  4. #自增 1
  5. count = count + 1
  6. #取余,和 2 整除
  7. yushu = count % 2
  8. #为 1 表示奇数
  9. if yushu == 1:
  10. print(count)

执行输出

1

3

5

99

4、输出 1-100 内的所有偶数

方法和第 3 题类似,把取余部分修改一下

  1. #初始值
  2. count = 0
  3. while count < 100:
  4. #自增 1
  5. count = count + 1
  6. #取余,和 2 整除
  7. yushu = count % 2
  8. #为 0 表示偶数
  9. if yushu == 0:
  10. print(count)

执行输出

2

4

6

100

5、求 1-2+3-4+5 … 99 的所有数的和

从这个公式可以发现出规律

为偶数的是做减法

为奇数的是做加法

思路:

在第二个题目基础上来做,第二个是 1 到 100 的求和

1.先把第 2 题的代码贴过来

2.在此基础上做一下稍微的改动,最终代码如下:

  1. # 初始值
  2. count = 0
  3. #计算最终值的初始值
  4. final_value = 0
  5. while count < 99:
  6. #自增 1
  7. count = count + 1
  8. #取余,和 2 整除
  9. yushu = count % 2
  10. # 为 1 表示奇数
  11. if yushu == 1:
  12. # 做加法运算
  13. final_value = final_value + count
  14. print(final_value)
  15. # 偶数
  16. else:
  17. # 做减法运算
  18. final_value = final_value - count
  19. print(final_value)
  20. print(final_value)

执行输出

1

-1

2

50

最终结果为 50

注意: 这里最后一个数字是 99,而不是 100,所以是 while count < 99

上面的代码,我把每次计算的结果给打印出来了。

0+1-2+3-4….+99

计算过程是从左至右的,0+1=1,再计算 1-2=-1,再计算-1+3=2….

解释一下代码执行过程

第一次 count=0,final_value=0,执行到第 7 行时,count=1。做取余计算 1 / 2,结果为 1。

if 判断等于 1,结果成立,所以为奇数。计算等式 final_value + count 也就是 0+1=1,输出 1

第二次 count=1,final_value=1,执行到第 7 行时,count=2。做取余计算 2 / 2,结果为 0。

if 判断等于 1,结果不成立,所以为偶数。计算等式 final_value - count 也就是 1-2=-1,输出-1

第三次 count=2,final_value=-1,执行到第 7 行时,count=3。做取余计算 3 / 2,结果为 1。

if 判断等于 1,结果成立,所以为奇数。计算等式 final_value + count 也就是-1+3=2,输出 2

所以最终结果为-49+99=50

6、用户登陆(三次机会重试)

思路

1.先来做简单的登录验证

  1. username = input('请输入用户名:')
  2. password = input('请输入密码:')
  3. if username == "xiao" and password == '123':
  4. print('ok')
  5. else:
  6. print('登录失败超过三次,请稍后重试!')

2.用 while 循环来执行输入框,可以无限次尝试登录

  1. while True:
  2. username = input('请输入用户名:')
  3. password = input('请输入密码:')
  4. if username == "xiao" and password == '123':
  5. print('ok')
  6. else:
  7. print('登录失败超过三次,请稍后重试!')

3.做一个变量用来记录登录失败次数,初始为 0,如果登录失败,次数加 1。达到 3 次,直接结束程序。

  1. #登录次数
  2. logins = 0
  3. while True:
  4. #判断登录次数
  5. if logins == 3:
  6. print('登录失败超过三次,请稍后重试!')
  7. break
  8. username = input('请输入用户名:')
  9. password = input('请输入密码:')
  10. #判断用户名和密码
  11. if username == "xiao" and password == '123':
  12. print('ok')
  13. break
  14. else:
  15. #次数加 1
  16. logins += 1
  17. print('登录失败!')

执行输出

Day1 python介绍,变量,if,while - 图13