Python简介
python跨平台,python应用范围广(操作系统、web平台、3d动画、企业应用、云计算)
python有很多BIF内置函数(dir(builtins)查看python中所用BIF)
1 | dir(__builtins__) 纯小写的是内置函数 |
Python的安装(免安装版)
1、在官网下载地址,下载windows系统 下的zip安装包
2、解压安装在c盘
3、启动python
1 | >cd C:\python37 |
4、配置python环境变量
A.右键点击“我的电脑”,点击“属性”;
B.在弹出的界面中点击“高级系统设置”
C.在弹出的界面中点击“环境变量”;
D.在弹出的页面中进行环境变量的配置;
Idea下Python开发平台的搭建
\1. python的下载
https://www.python.org/downloads/
\2. idea下python插件的安装
点击File->Settings…->Plugins,在里面搜索python。
发现搜索并没有结果。我们点击search in repositories链接
\3. idea下的配置
File->New->Project,可以看到左边的项目类型中多了一个python。点击它
基础入门
变量和字符串
定义变量需要注意:
- 在使用变量之前,需要对其先赋值
- 变量名可以包括字母、数字、下划线,但是变量名不能以数字开头。
- 字母可以是大写或着小写,但是大小写是不同的。也就是说hu和Hu对于python来说是完全不同的两个名字
- 变量命名理论上是可以取任何合法的名字。但是尽量给变量取一个专业一点的名字
字符串
如果字符串出现单引号(’)或双引号(“)怎么办?
1.利用转义符号()对字符串中的引号进行转义;
1 | print('I\'m Jane') 打印出I'm Jane |
如果遇到要打印路径之类的比如C:\note,需要反斜杠对自身进行转义
但是如果对于一个字符串中有很多个反斜杠,可以使用原始字符串比如str=r’C:\note’
长字符串
如果想要得到一个跨域多行的字符串,就需要三重引号(’‘’)字符串
###Python的数据类型
‘数字’和数字代表不同的意义
整型(在版本3.0后和长整型表示一致)
浮点型(有小数点是浮点型,没有小数点是整型)
1 | print(15e10) #150000000000.0 |
布尔类型(可以当作整数看待)
类型转换
1 | b=int('340') #340 |
获取关于数据的类型的信息(type()、isinstance())
1 | print( isinstance('字符串', str)) #True |
注意:TypeError: isinstance() arg 2 must be a type or tuple of types,对str
进行了赋值,导致了字符串
这个字符串比较的时候报错
常用操作符
算术操作符大部分和c语言一致
**
是幂运算操作符 3**
2实际上是3^
2
比较操符
逻辑操作符(and or not)
1 | not 0 # True 0代表false |
分支和循环
elif 是else if的缩写
条件表达式(三元操作符)
1 | 语法: x if 条件 else y |
断言 assert
当assert这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常
1 | assert 3>4 |
一般用来在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作。
while循环
1 | while 条件: |
for循环(与c不太一样,更强大)
1 | for 目标 in 表达式 |
序列
列表、元组和字符串的共同点
- 都可以通过索引得到每一个元素
- 默认所引致总是从0开始
- 可以通过分片的方法得到一个范围内的元素的集合
- 有很多共同的操作符(重读操作符、拼接操作符、成员关系操作符)
1 | list()# [] 空列表 将对象转为列表 |
列表
创建列表
创建一个普通列表
1 | members=['字符串1','字符串2','字符串3'] |
创建一个混合列表
1 | mix=[1,'字符串1',3.2,[1,2,3]] |
创建一个空列表
1 | number=[] |
向列表列表添加元素
1 | mix=[1,'字符串1',3.2,[1,2,3]] |
从列表中获取元素
1 | mix[0] #1 |
从列表中删除元素
1 | mix=[1,'字符串1',3.2,[1,2,3,'数组二的元素']] |
列表分片slice
1 | print(mix[1:3])#['字符串1', 3.2] |
列表的一些常用操作符
可以比较大小,但是比较的列表内容是以数组第一个元素进行比较;
列表组合可以用+号连接,但是不能连接一个字符串等数据;
列表*次数,列表原有数据增加了次数的几个元素
列表类型内置函数
1 | dir(list) |
元组
元组和列表的不同:
元组内容是不能被修改的
1 | temp=()#空的元组 |
字符串
奇葩的内置方法
格式化
1 | '{0} love {1}.{2}'.format('I','baidu','com') |
1 | '{0:.1f}{1}'.format(27.698,'GB') |
1 | 格式化符号 |
函数
实参和形参
1 | def fun1(): |
关键字参数
1 | def sayWord(name,words): |
默认参数
1 | def sayWord(name='小白',words='世界和平'): |
收集参数(可变参数)
1 | def test(*params): |
1 | def test(*params,exp='关键字参数'): |
函数和过程
对于一般的编程语言来说函数是有返回值,过程是没有返回值的;
但是python只有函数没有过程
1 | def hello(): |
返回值
python动态确定返回类型
1 | def back(): |
变量的可见性
局部变量和(global)全局变量
在函数中对全局变量修改值时,系统会自创建一个新的同名的局部变量。
1 | def discount(price,rate): |
内嵌函数和闭包
内嵌函数
1 | def fun1(): |
闭包()
1 | def fun1(num1): #在内部函数的fun2的外部作用域时fun1的整个内部空间的变量x进行引用 |
lamda表达式
1 | def ds(x): |
lamda的作用:
- 写脚本时,使用lamda表达式可以省下定义函数过程。
- 对于一些比较抽象并且整个程序执行下来只需要带哦用两次的函数,有时候给函数起个名字也是头疼的问题,使用lamda就不需要考虑命名的问题
- 简化带的可读性
比较厉害的BIF内置函数
filter(过滤的要求,要被过滤的内容)过滤器
1 | list(filter(None,[1,0,False,True])) #[1, True] 过滤非True的内容 |
map映射
递归
什么是递归?
有调用函数自身的行为,有个正确的返回条件
例子:汉诺塔游戏、树结构的定义、谢尔宾斯基三角形
1 | 非递归方法 |
递归例子——斐波那契数列:
分治思想是递归的主要思想
1 | 迭代方法: |
递归例子——汉诺塔游戏
1 | def hanol(n,x,y,z): |
列表存储(对于大量数据的可以导入为一个数据包)
1 | #永久存储 写 |
字典(sadomasochism):
当索引不好用时 ,选用字典
创建和访问字典
1 |
Exception异常处理
python设计游戏
猜数字游戏
1 | import random |
打飞机
实现逻辑:
###