一、数据
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)]