第一节 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程序的编辑模式

  1. 交互模式:在命令行编辑一行运行一行
  2. 命令行模式:运用编辑工具编辑代码,并以“.py”作为后缀名,然后打开命令行>C:(转到C盘)–>dir(查看当前目录下的所有文件)–>cd Desktop–>python XXX.py(执行文件)

第四节 Python的数据类型

1.具体数据类型

  1. None(空):
  2. 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]之间的实数
  1. String(字符串):
  2. Boolean(布尔):
  3. List(列表):
1 list = [1,2,3,4,5]
2 random.shuffle(list)    #将列表随机排序
3 print(list)    #
  1. Turple(元组):
  2. Dict(字典):
  3. Set(集合):

2.标识符

  1. 定义:一串具有特殊规则的字符串
  2. 规则:
  • 只能由数字、字母、下划线组成;
  • 开头不能是数字;
  • 不能是Python的关键字
1 # 查看关键字
2 import keyword
3 print(keyword.kwlist)
  • 区分大小写
  • 见名知意
  • 起名遵循驼峰原则
  1. 作用:给变量、函数等命名
  2. 注意:在Python3中,非ASCII标识符也是允许的

3.变量和常量

1. 变量:

  1. 概述:
  • 程序可操作的存储空间的名称;
  • 程序运行期间能改变的数据;
  • 每个变量特有的类型。
  1. 作用:将不同类型的数据存储到内存;
  2. 定义变量方式:变量名 = 初始值(为了确定变量的类型)
  3. 数据的存储:变量名 = 数据值,注意:在变量使用之前必须先定义,否则会报错;
  4. 删除变量:del 变量名,注意变量删除后,变量将不能再引用(相当于没有定义该变量);
1 # 交互式定义变量
2 num1, num2 = 36, 48

2. 常量:程序运行期间不能改变的数据

第五节 运算符和基本语句

表达式:由变量、常量和运算符组成的式子
阅读表达式:功能(进行相关符号的运算,不会改变变量的值)、值(运算结果)

1. 运算符

  1. 算术运算符:+、-、*、/、%(取余,模)、**(求幂)、//(整除-取整)、++(自增)、- -(自减)
  2. 关系运算符:==、!=、>、<、>=、<=
  3. 赋值运算符:=
  • 格式:变量 = 表达式
  • 功能:计算了“=”右侧表达式的值,并赋值给左侧

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")