第一节 Python概述
1. 什么是Python
Python是一种 解释型、面向对象、动态数据类型 的高级程序设计语言。由Guido van Rossum与1989年发明,第一个公开发行版本发行于1991年。像Perl语言一样,Python源代码同样遵循GPL(GNU General Public Licence)协议。
2. 简介
1.Python是一种解释型语言:开发过程中没有了编译这个环节,类似于PHP和Perl语言;
2.Python是一种交互式语言:可以在一个Python提示符,直接互动执行程序;
3.Python是面向对象语言:Python支持面向对象的风格或代码封装在对象的编程技术;
4.Python是初学者的语言:支持广泛的应用程序开发,从简单的文字处理到WWW浏览器再到游戏
3. 发展历史
Python是由Guido van Rossum在20世纪八十年代末九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。Python本身是由诸多其他语言发展而来的,其中包括:ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell和其他的脚本语言等。目前Python是由一个核心开发团队在维护,Guido van Rossum仍占据着至关重要的作用,指导其进展。
4. Python的特点
1. Python的优点
1.易于学习:它具有相对较少的关键字,结构简单,和一个明确的语法;
2.易于阅读:代码定义更加清晰;
3.易于维护:Python的成功在于它的源码是相当容易维护的;
4.一个广泛的标准库:具有丰富的库,跨平台,在UNIX、Windows和Macintosh兼容很好;
5.互动模式:互动模式的支持,可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片段;
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台;
7.可扩展:如果需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C/C++完成那部分的程序,然后从你的Python程序中调用;
8.数据库:Python提供所有主要的商业数据的接口;
9.GUI编程:Python支持GUI可以创建和移植到许多系统调用;
10.可嵌入:可以将Python嵌入到C/C++程序中,让用户获得“脚本化”的能力;
2. Python的缺点
1.运行速度慢:和C程序相比Python程序非常慢,因为Python是解释型语言,代码在执行时会一行一行地翻译成CPU能理解的机器语言,翻译过程非常耗时间,而C语言之间把所有代码编译成CPU可以理解的机器语言;
2.代码不能加密:如果要发布Python程序,实际上就是发布源代码,而C语言不用发布源代码,只需把编译后的机器语言(也就是windows系统上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以编译型语言都没有这个问题,但解释型语言都必须把源代码发布出去。
第二节 数据的存储
计算机的原始作用就是“存储数据”和“计算数据”,但是数据存储在哪?数据存储在内存里。但是数据又是怎么存储在内存里的呢?其实内存中存储的都是二进制数据,比如(10)10=(1010)2,其实抽象起来就是,一个具有两种状态的开关表示“一位”,开和关用0和1表示,把八个开关放在同一个房间里,这个房间称为“一个字节”,则每个房间的门牌号就可以看作是“存储地址”,把无数个房间堆叠起来组成一个摩天大厦,则这个摩天大厦就是“内存”。
1. 数据存储:计算机存储数据,先开辟内存空间,再存储数据。计算机开辟内存的最小单位是字节。在存储数据时,用最高位表示“符号”,其中1表示“负数”,0表示“正数”,详细可参考《计算机组成原理》课程,或自行百度。
第三节 Python程序的编辑模式
- 交互模式:在命令行编辑一行运行一行
- 命令行模式:运用编辑工具编辑代码,并以“.py”作为后缀名,然后打开命令行>C:(转到C盘)–>dir(查看当前目录下的所有文件)–>cd Desktop–>python XXX.py(执行文件)
第四节 Python的数据类型
1.具体数据类型
- None(空):
- Number(数字):
- 整数:Python可以处理任意大小的整数,当然也包括负整数,在程序中的表示和数学的写法一样;
- 浮点数(小数):浮点数由整数部分和小数部分组成,在运算的过程中可能会有“四舍五入”的误差
- 复数:由实部(由a表示)和虚部(由b表示)构成,a+bi,其种“i”表示虚数单位
1 # 比较两个数的大小
2 a1 = 100
3 a2 = 9
4 print((a1>a2)-(a1<a2))
5 # 返回1,因为a1>a2=true=1,a1<a2=false=0,所以1-0 = 1
6 print(abs(a1)) #求a1的绝对值
7 print(max(1,2,3,4,5,6)) #求出数列中的最大值
8 print(min(1,2,3,4,5,6)) #求出数列中的最小值
9 print(pow(2, 6)) #求出2的5次方:2^5
10 print(round(3.35, 2)) #浮点数 保留2位小数的四舍五入
11
12 import math #导入 数学 库
13 print(math.ceil(121.34)) #向上取整 122
14 print(math.floor(121.34)) #向下取整 121
15
16 print(math.modf(23.15)) #返回整数部分和小数部分 (小数部分-浮点型, 整数部分-浮点型)
17
18 print(math.sqrt(16)) #返回4 开平方
19
20 #随机数
21 import random
22 print(random.chioce([1,5,9,3,8,7,6])) #从这些数中随机选取一个数,序列中,可以有字符串等其他类型的数据
23 print(random.chioce(range(5))) #表示从“0,1,2,3,4”中任选一个数
24 print(random.choice("hello world!")) #"hello world!"=['h','e','l','l','o',' ','w','o','r','l','d','!']
25 print(random.randrange(1, 100, 2)) #randrange([start,] stop[, step]) 生成1~100的奇数,[]内的表示可有可无,start默认为0,step默认为1
26 print(random.random()) #随机产生一个[0,1)的浮点数,不能传值
27 print(random.uniform(3,9)) #随机生成一个[3,9]之间的实数
- String(字符串):
- Boolean(布尔):
- List(列表):
1 list = [1,2,3,4,5]
2 random.shuffle(list) #将列表随机排序
3 print(list) #
- Turple(元组):
- Dict(字典):
- Set(集合):
2.标识符
- 定义:一串具有特殊规则的字符串
- 规则:
- 只能由数字、字母、下划线组成;
- 开头不能是数字;
- 不能是Python的关键字
1 # 查看关键字
2 import keyword
3 print(keyword.kwlist)
- 区分大小写
- 见名知意
- 起名遵循驼峰原则
- 作用:给变量、函数等命名
- 注意:在Python3中,非ASCII标识符也是允许的
3.变量和常量
1. 变量:
- 概述:
- 程序可操作的存储空间的名称;
- 程序运行期间能改变的数据;
- 每个变量特有的类型。
- 作用:将不同类型的数据存储到内存;
- 定义变量方式:变量名 = 初始值(为了确定变量的类型);
- 数据的存储:变量名 = 数据值,注意:在变量使用之前必须先定义,否则会报错;
- 删除变量:del 变量名,注意变量删除后,变量将不能再引用(相当于没有定义该变量);
1 # 交互式定义变量
2 num1, num2 = 36, 48
2. 常量:程序运行期间不能改变的数据
第五节 运算符和基本语句
表达式:由变量、常量和运算符组成的式子
阅读表达式:功能(进行相关符号的运算,不会改变变量的值)、值(运算结果)
1. 运算符
- 算术运算符:+、-、*、/、%(取余,模)、**(求幂)、//(整除-取整)、++(自增)、- -(自减)
- 关系运算符:==、!=、>、<、>=、<=
- 赋值运算符:=
- 格式:变量 = 表达式
- 功能:计算了“=”右侧表达式的值,并赋值给左侧
4. 复合赋值运算符:+=、-=、*=、/=、%=、**=、//=
5. 位运算符:把其他进制的数转换为二进制进行位运算的运算符,其中包括:
- &(按位与:两者为1,才为1,否则为0);
- |(按位或:两者为0,才为0,否则为1);
- ^(按位异或,两者相同为0,不同为1);
- ~(按位非:取反);
- <<n(左移运算符):二进制数的各位,都向左移动n为,移出的高位舍弃,空白的低位补0
- >>n(右移运算符):二进制数的各位,都向右移动n为,移出的低位舍弃,空白的高位补0
6. 逻辑运算符:and(逻辑与:全都为真才为真)、or(逻辑或:全都为假才为假)、not(逻辑非:取反);逻辑运算符有短路原则,比如说逻辑与,当确定一个为假,则全部为假
7.成员运算符:in(如果在指定的序列中找到值返回True,否则返回False)、not in(如果在指定的序列中没有找到值返回True,否则返回False)
8.身份运算符:is(判断两个标识符是不是引用同一个对象)、is not(判断两个标识符是不是引用不同的一个对象)
运算符的优先级:**(求幂); ~、+(正号)、-(负号); *、/、%、//; +(加)、-(减); >>、<<; &、|、^(异或); <=、<、>、>=; ==、!=、=、%=、+=、-=、//=;is、is not、in、not in、not、 or 、and
1 # 运用逻辑运算符,实现从控制台输入一个年份,判断是否是闰年
2 # 普通闰年:能被4整除但不能被100整除的年份为普通闰年。
3 # 世纪闰年:能被400整除的为世纪闰年。
4 year = int(input("请输入年份:"))
5
6 if year % 4 ==0 and year % 100 !=0:
7 print(year,"是普通闰年!")
8 elif year % 400 == 0:
9 print(year,"是世纪闰年!")
10 else:
11 print(year,"是平年!")
2. if条件语句
当程序执行到 if 语句时,首先计算“表达式”的值,值为真,执行 if 下的语句;值为假,执行else下的语句,如果没有else,跳出 if 语句,继续执行下面语句。
1 # if条件语句的格式
2 if 表达式:
3 执行语句/pass(占行符,什么也不执行)
4 else if 表达式:
5 执行语句/pass(占行符,什么也不执行)
6 else:
7 执行语句/pass(占行符,什么也不执行)
何为真假:假:0、0.0、’’(空)、None、False等,除此之外为真
1 # 从控制台中输入一个三位数,判断,如果该数为“水仙花数(如:153=1^3+5^3+3^3)”,就打印输出“是水仙花数”,否则打印“非水仙花数”
2 sh = int(input("请输入一个三位数:"))
3 a = sh // 100 #百位
4 b = sh % 100 //10 #十位
5 c = sh % 100 % 10 #个位
6 # print(a, b, c)
7 res = a**3+b**3+c**3
8 if res == sh:
9 print("该数是水仙花数", res, "=", a, "^3+", b, "^3+", c, "^3")
10 else:
11 print("该数非水仙花数", res, "!=", a, "^3+", b, "^3+", c, "^3")