1.变量
变量名,变量类型,变量值
变量都是存储在内存中的
以酒店房间为例
变量 = 酒店的房间
变量名 = 房间号
变量类型 = 酒店的总统房、经济房
变量值 = 房间里入住的人
2.注释
单行注释 #
多行注释 ''' 代码 '''
3.变量的类型
整型,浮点型,字符串,布尔型,空值
整型:整数 age=18
浮点型:小数 pi = 3.14
字符串:带有单引号,或者双引号的 str = '13' 这也是字符串
制表符: \t 空格 \n换行, 如果要输出制表符在前面加r name=r'zx\nd'
布尔类型:只有两个值 true false
可以进行 and or not 运算
空值:只用None表示
4.数据类型转换
type() 查看数据类型
转换为整型 int()
注意:并不是所有的任意值都可以转换,必须是形态一致才可以转换
例如:'hello' 这样的肯定是不能转换成整型的
转换为浮点型 float()
转换为布尔类型 bool() 空字符串,0,None会转换为false, 其他的都会转换为true
注意:空值(" ")转换为布尔,为true
转换为字符串 str()
5.运算符
python支持4种运算符: 算术运算符 赋值运算符 比较运算符 逻辑运算符
一.算术运算符
加 (+)减(-)乘(*)除(/ 或者 //) a的b次方 (a**b)
除 / 当除不开时,保留后面的小数
// 当除不开时,不保留后面的小数
二.关系运算符
关系运算符得到的结果都为布尔值
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
三.赋值运算符
= 简单的赋值运算符
+= 加法赋值运算符
-= 减法赋值运算符
*= 乘法赋值运算符
/= 除法赋值运算符
%= 取余赋值运算符
**= 幂赋值运算符
//= 取整除赋值运算符
四.逻辑运算符
与(and),或(or),非(not)
与 and 两边为true 才为true
或 or 两边只要有true,就为true
非not ,取反
6.容器
概念:日常生活中需要很多瓶瓶罐罐的来装我们的各种物品,在程序里,我们可以把数据看做我们的物品,也可以用一些容器装起来
一,列表(最常用的容器)
列表相当于其他语言里的数组
a=[1,2,3,'hello',3.14,False]
类型为:list
列表是有序的集合,所以就有了索引的概念,索引就是列表里元素的下标,从0开始
1.所以就可以取出列表里的元素 a[3]
2.修改列表里的值 a[3]='张三'
3.对列表取数据时,可以部分取,也叫做切片,可以正向切片,也可以逆向切片
正向切片 a[2:4] 逆向切片 a[-4:-2]
4.对列表,添加元素,而且是添加到列表的最后 a.append('xxx')
如果不想在列表的最后添加,想在具体的位置添加 a.insert(3,'zzz') 前面是要添加的位置,后面是要添加的值
5.删除列表里的元素 a.remove('xxx')
如果删除元素时,不知道值,只知道位置,可以通过 del a[4] 或者 a.pop(5)
6.获取列表的长度, len(a)
二.元组(不常用)
与列表相同之处:元组数据结构与列表类似,其中元素可以有不同的类型
与列表不同之处:元组中的元素是不可改变的,一旦初始化之后,就不能再修改
使用 :使用场景,让别人用,但是不能进行修改,就可以定义成元组
1.元组的定义
tuple=()
2.元组也可以取值
3.元组也可以进行切片取值
4.不能进行添加元素,删除元素
5.元组可以获取长度 len(tuple)
三.字典,在其他语言相当于 相关数组
概念:字典(dict)在其他语言中被称为哈希映射(hash map)或者 相关数组
字典是一种大小可变的键值对集,其中的键(key)和值(value)都是python对象
字典用在需要高速查找的地方
使用
1.定义字典
a={'name':'xxx','age':14,'hobby':'篮球'}
注意:字典的键是不允许重复的,值可以重复
2.获取字典里的值
a['name']
四.集合(不常用)
概念:集合是一种无序集,它是一组键的集合,不存储值,并且不能有重复
所以集合的作用,就会起到一个去重的作用
还可以求两个集合的不同部分,相同部分,两个集合的所有值
使用
1.定义集合
a={1,2,3,'xxx'}
b=set([1,2,3,'xxx'])
a={1,2,3,4,5,6}
b={4,5,6,7,8,9}
print(a-b) #集合的差集 {1, 2, 3}
print(a|b) #集合的并集 {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(a&b) #集合的交集 {4, 5, 6}
print(a^b) #集合的对称差 {1, 2, 3, 7, 8, 9}
编程的解构:顺序解构,选择解构,循环解构
7. if解构
if 判断条件:
执行语句
elif多条件判断
if cunkuan>100:
print('宝马')
elif cunkuan>50:
print('丰田')
elif cunkuan>20:
print('二手车')
else:
print('破自行车')
嵌套if结构
#嵌套if结构
cunkuan=100
zizhu=20
if cunkuan>=100:
print('宝马')
if zizhu>50:
print('买一辆宝马740')
elif zizhu>30:
print('买一辆宝马520')
elif zizhu>20:
print('买一辆宝马320')
else:
print('还是去二手车市场把')
elif cunkuan>50:
print('丰田')
elif cunkuan>20:
print('二手车')
else:
print('破自行车')
8.循环
一.for循环
for i in range(100):
print(xxx)
continue : 结束本次循环,直接 开始下一次循环
break :提前结束整个循环
二.while循环
n=0
while n<10:
n=n+1
if n%2==0:
continue
print(n)
三.无限循环
import time
i=0
while 1==1:
print(i)
i=i+1
time.sleep(2)
9.函数
函数其实就是方法
def 函数名():
函数题
return
函数名() 函数的调用
函数的传参有4种形式
第一种顺序传参
def show(name,age,sex,hobby):
print('我叫:',name,'年龄:',age,'性别:',sex,'爱好:',hobby)
#顺序传参
show('张三',20,'女','唱歌')
第二种关键词传参
#关键词传参
#注意,前面使用了关键词传参,后面再用顺序传参,就会出现错误 #所以就要统一,要么都使用关键词传参,要么都使用顺序传参
def show(name,age,sex,hobby):
print('我叫:',name,'年龄:',age,'性别:',sex,'爱好:',hobby)
show('张五',20,hobby='唱歌',sex='男')
第三种默认传参
注意:默认参数要放在末尾
def show(name,sex,hobby,age=20):
print('我叫:',name,'年龄:',age,'性别:',sex,'爱好:',hobby)
show(name='张三',sex='男',hobby='跳舞',age=31)
第四种不定长参数
#不定长参数
def add(*args):
sum=0
for i in args:
sum=sum+i
return sum
result=add(3,345,567,4,5,676)
print(result)
函数还有很多内置函数,需要用到的时候可以再查资料
10.模块
概念:模块是Python中的最高级别组织单元,它将程序代码和数据封装起来以便重用,
作用:1.代码重用 2.实现共享服务和数据
import random
result=random.random()
result1=random.choice(['张三','李四','王五','赵柳'])
print(result1)
引入模块
可以引入模块的某个方法
还可以引入某个模块的多个方法
还可以引入某个模块的所有方法
还可以自己定义函数,来引入
from random import choice
from random import choice,random
from random import * #引入random里面的所有方法
print(choice([1,2,3,4,5,6]))
print(random())
非常实用的模块
from urllib import request #这个是用来做爬虫的
import os #用来控制操作系统的
import webbrowser #用来控制浏览器的
#爬虫
url='http://www.baidu.com'
data=request.urlopen(url).read()
print(data.decode())
#打开某个程序
os.system('"C:\Program Files\Tencent\QQLive\QQLive.exe"')
#给文件重命名
os.rename(r'C:\Users\Administrator\Desktop\简历.pdf',r'C:\Users\Administrator\Desktop\简历1.pdf')
#在浏览器打开某个网页
webbrowser.open('http://www.baidu.com')
安装第三方库
pip install 库名
11.文件读取
#打开文件
fh1=open(r'C:\Users\Administrator\Desktop\再别康桥.txt','r',encoding='UTF-8')
#进行读取文件
data=fh1.read()
#按行读取
data1=fh1.readline()
data2=fh1.readline()
#按行读取所有
datas=fh1.readlines()
#读取大文件
for i in fh1:
print(i)
#print(data)
#print(data1)
#print(data2)
#print(datas[4])
#文件操作完毕后,关闭文件资源
fh1.close()
文件写入
#如果文件存在,就重新写入
#如果文件不存在,则新建一个文件并写入
fh=open(r'C:\Users\Administrator\Desktop\test.txt','w',encoding='UTF-8')
#追加写入 a --- append 文件追加
fh=open(r'C:\Users\Administrator\Desktop\test.txt','a',encoding='UTF-8')
data='\n软件测试'
fh.write(data)
二进制文件的读写
#所有文件分为两大类
#1.文本文件 txt xml
#2.二进制文件 图片,视频,Word文档,excel文档
#二进制文件的读
fh=open(r'C:\Users\Administrator\Desktop\下载.jpg','rb')
data=fh.read()
print(data)
fh.close()
#二进制文件的写
fh2=open(r'C:\Users\Administrator\Desktop\02.jpg','wb')
fh2.write(data)
fh2.close()
12.面向对象
对象:时间万事万物皆为对象
类:是指某一类东西, 例如:桌子,宠物
属性:这个对象有的一些特征,比如桌子,有长宽高,木质等等
方法:就是能有什么作用,例如桌子,可以吃饭,打麻将
对象的特点:封装,继承,多态
创建类
#创建类,类名首字母要大写
class Dog():
#初始化方法
def __init__(self,name,age,color):
#实例变量(属性)
self.name=name
self.age=age
self.color=color
#普通方法
def eat(self):#普通方法
print(self.name,'在啃骨头!')
def run(self):
print(self.name,'在飞快的跑')
实例化对象
#实例化对象
dog=Dog('小黑',5,'白色')
dog.color='黑色'
print(dog.color)
dog.run('5m/s')
类的封装,可以封装方法里的属性,还可以封装普通的方法,就是在属性或方法名前加双下划线
#创建类
class Card():
#初始化
def __init__(self,num,pwd,ban):
#卡号
self.num=num
#密码
self.pwd=pwd
#余额
#现在把余额属性变为私有属性(只能在类的内部被访问)
# 这也叫做类的封装
self.__ban=ban
#创建一个普通的存款方法
def cun(self):
print('存款!')
#创建一个获取余额的方法,并把余额return出去
def getBan(self,numm,pwdd):
if numm==self.num and pwdd==self.pwd:
return self.__ban
else:
return '输入错误'
#还可以将类里的普通方法进行封装
def __qukuan(self):
return
card=Card(1001,123456,"10000")
print(card.getBan(1001,123456))
类的继承
#创建动物类 继承了object类
#object类是原始的类
class Animal(object):
#初始化方法
def __init__(self,color):
self.color=color
#创建普通的方法
def eat(self):
print('动物在吃饭!')
#创建普通的方法
def run(self):
print('动物在奔跑!')
#创建猫类
#猫类继续了Animal类
class Cat(Animal):
pass
#进行实例化对象
cat=Cat('白色')
print(cat.color)
cat.eat()
cat.run()
注意点:当子类有方法时就用子类的,当子类没有这个方法就去看父类的
13.异常
#写可能会报错或者是出现异常的代码
try:
print(3/i)
#捕获try语句里面的异常, exception 就是捕获到的异常对象
except Exception as e:
print('出现错误,错误是:',e)
#没有异常时执行的语句
else:
print('--------正常')
#无论是否有异常,都会执行的语句
finally:
print('本次结束')
常见的错误类型:
#NameError 这是比较常见的一个错误,就是没有定义变量就把它拿来使用
#SyntaxError 语法错误,例如少个冒号,少空格等
#IO Error 在做文件操作的时候常遇到的错误,例如文件操作的时候文件不存在
#ZeroDivisionError 在做数据处理和计算的时候会遇到这种错误就是除数是 0
#IndentationError 这个就是缩进问题
自定义异常
pwd='123456789'
if len(pwd)<8:
ex=Exception('密码不能低于8位数!')
#抛出自定义的异常
raise ex
else:
print('密码设置成功!')
14.进程
进程简单来说,就是程序执行的动作以及状态
有三个状态:
1.就绪 其实就是获取了除CPU外的所有资源,只要处理器分配资源就可以马上执行
2.运行 获得了处理器分配的资源,程序开始执行
3.阻塞 当程序条件不够的时候,需要等待条件满足时候才能执行,如等待i/o操作的时候
线程是进程下的更小的一个单位
通俗讲:一个程序,至少有一个进程,而一个进程下最少有一个线程
而一般都是多线程同时运行,来提供效率
import threading
import time
def run(name):
print(name,'线程执行了')
time.sleep(5)
#程序执行时,程序本身就是一个线程,叫主线程
#手动创建的线程,叫子线程
#主线程的执行中不会等待子线程执行完毕,就会直接执行后面的代码
t1=threading.Thread(target=run,args=('t1',))
t2=threading.Thread(target=run,args=('t2',))
#启动线程
t1.start()
t2.start()
#设置子线程执行完毕之后再执行主线程内容
t1.join()
t2.join()
print('执行完毕')