一、数据
1.1 变量
数据用变量来存放,并用等号对变量赋值。
例:nameStr = 'OREO'
其中 nameStr 是变量名称,'OREO' 是变量值。
注:
1.定义变量名称时可以使用‘数据意义+数据类型’的方式,方便理解变量中存放的数据含义和数据类型;
2.Python中数字不能作为变量名称的开头;
3.Python是大小写敏感的。
1.2 数据类型
1.2.1 字符串(String)
nameStr = 'OREO' #使用单引号创建字符串
adjStr = "好吃" #使用双引号创建字符串
print('用+将字符串合并:', nameStr+adjStr) #用加号(+)可以合并字符串
用+将字符串合并: OREO好吃
#用%s格式化字符串,%s 表示字符串中要填入的内容,%后是对应要填入的值
str1 = '%s%s又%s。'%('OREO','好吃','好玩')
print(str1)
OREO好吃又好玩。
1.2.2 数字(Number)
(1)整型
#OREO已经108岁了
age = 108
(2)浮点型
#衬衫的价格是9磅15便士
money = 9.15
1.2.3 容器
容器可以存放多个数据,方便储存、查找和使用。
-定义容器
-容器的操作:增加、删除、查询、修改。
(1)列表(List)
#定义列表:饼干名称
nameList = ['奥利奥','达能','好吃点','雀巢']
#列表长度
nameLen = len(nameList)
print('列表长度:饼干数目',nameLen)
列表长度:饼干数目 4
#容器操作:增加
nameList.append('莱家')
print('增加一个元素:',nameList)
增加一个元素: ['奥利奥', '达能', '好吃点', '雀巢', '莱家']
#容器操作:删除
del nameList[1]
print('删除第二个元素:',nameList)
删除第二个元素: ['奥利奥', '好吃点', '雀巢', '莱家']
#容器操作:查询
name2 = nameList[1]
print('查询列表的第二元素:',name2)
查询列表的第二元素: 好吃点
#容器操作:修改
print('修改之前的第三个元素是:',nameList[2])
nameList[2] = 'Tipo'
print('修改之后的第三个元素是:',nameList[2])
修改之前的第三个元素是: 雀巢
修改之后的第三个元素是: Tipo
(2)元祖(Tuple)
与列表类似,但是不可修改,只能查询。
#定义元祖:饮料名称
beverageTuple = ('Fanta','Pepsi','Coca','Mirinda','Sprite')
#元祖长度
beverageLen = len(beverageTuple)
#容器操作:查询
print('第四个元素的值:',beverageTuple[3])
第四个元素的值: Mirinda
(3)集合(Sets)
没有重复元素的容器。
#定义集合:冰淇淋
icecreamSets = {'梦龙','中街','哈根达斯','八喜','芭斯罗缤','中街'}
print(icecreamSets)
{'梦龙', '哈根达斯', '中街', '芭斯罗缤', '八喜'}
#容器操作:增加
icecreamSets.update(['马迭尔','冰工厂'])
print(icecreamSets)
{'梦龙', '哈根达斯', '中街', '冰工厂', '芭斯罗缤', '八喜', '马迭尔'}
#容器操作:删除
icecreamSets.discard('中街')
print(icecreamSets)
{'梦龙', '哈根达斯', '冰工厂', '芭斯罗缤', '八喜', '马迭尔'}
#容器操作:查找
MLBool = '梦龙' in icecreamSets
print(MLBool)
True
#容器操作:修改
#step1:删除
icecreamSets.discard('梦龙')
#step2:添加
icecreamSets.update(['和路雪'])#update必须添加列表形式
print(icecreamSets)
{'哈根达斯', '和路雪', '冰工厂', '芭斯罗缤', '八喜', '马迭尔'}
(4)字典(Dictionary)
存储映射关系的容器。
#定义字典:编号和速食面点
conveniencemealDic = {'001':['汤达人',2.7,'好吃'],
'002':['日清',3.5,'非常好吃'],
'003':['康师傅',1.5,'好吃']}
print(conveniencemealDic)
{'001': ['汤达人', 2.7, '好吃'], '002': ['日清', 3.5, '非常好吃'], '003': ['康师傅', 1.5, '好吃']}
#容器操作:增加
conveniencemealDic['004']=['辛拉面',3,'好吃']
print(conveniencemealDic)
{'001': ['汤达人', 2.7, '好吃'], '002': ['日清', 3.5, '非常好吃'], '003': ['康师傅', 1.5, '好吃'], '004': ['辛拉面', 3, '好吃']}
#容器操作:删除
del conveniencemealDic['004']
print(conveniencemealDic)
{'001': ['汤达人', 2.7, '好吃'], '002': ['日清', 3.5, '非常好吃'], '003': ['康师傅', 1.5, '好吃']}
#容器操作:查询
valueList1 = conveniencemealDic['001']
print(valueList1)
['汤达人', 2.7, '好吃']
#容器操作:修改
print('修改之前,速食面点:',conveniencemealDic['001'])
conveniencemealDic['001'] = ['汤达人',2.7,'非常好吃']
print('修改之后,速食面点:',conveniencemealDic['001'])
修改之前,速食面点: ['汤达人', 2.7, '好吃']
修改之后,速食面点: ['汤达人', 2.7, '非常好吃']
1.2.4 布尔
用于条件判断,描述条件发生的判断标准(True/False)。
1.2.5 None
表示空值,不等于0。
数据类型中不可修改的是:字符串、数字和元祖
二、条件判断
2.1 边界条件
2.1.1 值比较
#饮用水价格
priceNum = 3
if priceNum > 5:
print('太贵了')
else:
print('可以买')
可以买
2.1.2 逻辑比较
if '梦龙' in icecreamSets:
print('梦龙是冰淇淋')
else:
print('梦龙不是冰淇淋')
梦龙不是冰淇淋
2.2 多个条件判断
price = float(input('请输入水的价格:')) #设定输入数字的类型
if price <= 0:
print('天下没有免费的水')
elif price <= 2:
print('便宜没好货')
elif price <= 5:
print('物美价廉')
else:
print('太贵了')
请输入水的价格:3.5
物美价廉
三、循环(for循环)
可以批量处理数据,把容器中的每个数据按照特定标准进行重复处理。
#重复性工作
print('第一天吃梦龙')
print('第二天吃和路雪')
print('第三天吃冰工厂')
第一天吃梦龙
第二天吃和路雪
第三天吃冰工厂
#容器
eatList = ['第一天吃梦龙','第二天吃和路雪','第三天吃冰工厂']
#循环
for i in eatList:
print(i)
第一天吃梦龙
第二天吃和路雪
第三天吃冰工厂
#定义字典
beverageDic = {'芬达':'Fanta','百事':'pepsi','美年达':'MIRINDA'}
#统一大小写
for key,value in beverageDic.items():
newValue = value.upper()
beverageDic[key] = newValue
print(beverageDic)
{'芬达': 'FANTA', '百事': 'PEPSI', '美年达': 'MIRINDA'}
3.1 continue(用于跳出当前循环)
for key,value in beverageDic.items():
if(key == '芬达'): #跳过芬达,不执行print语句
continue
print('饮料名称:', key, '英文名称:',value)
饮料名称: 百事 英文名称: PEPSI
饮料名称: 美年达 英文名称: MIRINDA
3.2 break(用于退出当前循环)
for key,value in beverageDic.items():
if(key == '百事'):
print('查找',key,'英文名称:',value)
break
print('饮料名称:', key, '英文名称:',value)
饮料名称: 芬达 英文名称: FANTA
查找 百事 英文名称: PEPSI
四、函数
4.1 自定义函数
#定义函数
#函数功能:求平方
def square(x,y): #定义 函数名称(参数1,参数2,...)
z = x**y #输入:x,y的值 -函数体
return z #输出:z -x的y次方
4.2 使用函数
#参数按照定义函数时定义的顺序传递
a = 2
b = 4
c = square(a,b)
print('2的4次方等于',c)
#参数按照名称传递
d = 3
e = 2
f = square(y = e, x = d)
print('3的2次方等于',f)
2的4次方等于 16
3的2次方等于 9
4.3 函数参数:不可变数据类型
当参数为不可变数据类型(字符串,数字和元祖),传递的只是该数据类型的值,应用函数后,原数据不变。
def haha(a):
a = a+2
return a
b = 1
print('调用函数前 b=',b)
haha(b)
print('调用函数后 b=',b)
调用函数前 b= 1
调用函数后 b= 1
4.4 函数参数:可变数据类型
当参数为可变数据类型,传递的是该变量的引用地址,调用函数后,原始数据被改变。
def changeList(inputList):
inputList.append('乌龙奶茶')
milkteaList = ['珍珠奶茶','炭烧奶茶']
print('应用函数前:',milkteaList)
changeList(inputList=milkteaList)
print('应用函数后:',milkteaList)
应用函数前: ['珍珠奶茶', '炭烧奶茶']
应用函数后: ['珍珠奶茶', '炭烧奶茶', '乌龙奶茶']
4.5 变量作用域
Python 中作用域有两种:全局作用域和局部作用域。定义在函数内部的变量运用在一个局部作用域,只能在函数内部访问,定义在函数外的变量运用于全局作用域。
def test():
aStr = '名侦探柯南'
print(aStr) #aStr 只能在函数内部访问
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in ()
2 aStr = '名侦探柯南'
3
----> 4 print(aStr) #aStr 只能在函数内部访问
NameError: name 'aStr' is not defined
五、模块
5.1 模块的定义
将不同的函数分别放置到不同的文件中,在Python中一个文件名后缀为.py的文件就被成为模块,每个模块有特定的功能,将模块引入程序中就可以使用了。
5.2 使用模块
5.2.1 使用Python中的内置模块
#Step1: 引入模块
import sys
#Step2: 使用模块中的函数、属性
pathList = sys.path
5.2.2 使用第三方包
按目录来组织模块--包。
#使用第三方模块
import pandas as pd
#模块引入语法
#import 包名称 -全部引入
#import 包名称 as 别名
#from 包名称 import 函数名 -只引入制定部分
from collections import deque
六、数据结构 (集合模块,collections)
6.1 双向链表(queue):
6.1.1 队列
队列类似于线,有首尾,从尾部入队,从首部出队
#定义队列:模拟排队取票,共有5个等位
queue = deque(['001','002','003','004','005'])
#入队:在队尾插入元素
queue.append('006')
print(queue)
deque(['001', '002', '003', '004', '005', '006'])
#出队:在队列首部删除元素
queue.popleft()
print(queue)
deque(['002', '003', '004', '005', '006'])
6.1.2 栈
栈类似于木桶,新加入的元素位于木桶最上部是入栈,出栈是将最上面的元素取出
#定义栈:浏览我个人知乎主页的顺序(后退网页类似于出栈)
stack = deque(['知乎动态','知乎问答','知乎文章'])
#入栈:在栈顶加入元素
stack.appendleft('知乎专栏')
print(stack)
deque(['知乎专栏', '知乎动态', '知乎问答', '知乎文章'])
#出栈:移除栈顶元素
stack.pop()
print(stack)
deque(['知乎专栏', '知乎动态', '知乎问答'])
6.2 排序字典(OrderedDict)
6.3 计数器(Counter)
from collections import Counter
cDict = Counter('asdfghjkqwertyasdf')
cDict
Counter({'a': 2,
'd': 2,
'e': 1,
'f': 2,
'g': 1,
'h': 1,
'j': 1,
'k': 1,
'q': 1,
'r': 1,
's': 2,
't': 1,
'w': 1,
'y': 1})
cDict.most_common(5)
[('a', 2), ('s', 2), ('d', 2), ('f', 2), ('g', 1)]