快速学会Python的4个关键点
数据 函数 条件判断 循环
什么是变量?
变量名称 变量值 nameStr = ‘马云’,数字不能作为变量名称开头。并且大小写敏感。
注释
- 注释方法1: #
- 注释方法2:''' '''
数据类型
字符串 数字 容器 布尔 None
# 案例1:数据类型:字符串(string)
nameStr='马云'
moneyStr2='有钱'
print('用+将字符串合并:',nameStr+moneyStr2)
用+将字符串合并: 马云有钱
# 案例2:用%s格式化字符串
str1='我叫%s,俺爹是%s'%('王思聪','王健林')
print(str1)
我叫王思聪,俺爹是王健林
# 数据类型:数值(Number)
# 1)整型:马云年龄50岁
age=50
# 2)浮点型:我用马云的余额宝今天赚了3.53元
money=3.53
# 定义列表:病人姓名
nameList=['猴子','马云','王健林','马化腾']
nameLen=len(nameList)
print('列表长度:病人数目:',nameLen)
列表长度:病人数目: 4
#1) 容器操作:增加
nameList.append('刘强东')
print('增加1个元素:',nameList)
增加1个元素: ['猴子', '马云', '王健林', '马化腾', '刘强东']
#2) 容器操作:删除
del nameList[1]
print('删除第2个元素:',nameList)
删除第2个元素: ['猴子', '王健林', '马化腾', '刘强东']
#3) 容器操作:查询:使用下标索引来访问列表中的值,下标从0开始
name1=nameList[0]
print('查询列表的第一个元素:',name1)
查询列表的第一个元素: 猴子
#4) 容器操作:修改:直接指定下标的值
print('修改之前第1个元素是:',nameList[0])
nameList[0]='孙悟空'
print('修改之后第1个元素是:',nameList[0])
修改之前第1个元素是: 猴子
修改之后第1个元素是: 孙悟空
#定义元祖
gafataTuple=('腾讯','阿里巴巴','苹果','谷歌','Facebook','亚马逊')
#元祖长度
gafataLen=len(gafataTuple)
print('元祖长度:',gafataLen)
#查询元祖:第1个元素(下标从0开始)
print('第1个元素的值:',gafataTuple[0])
元祖长度: 6
第1个元素的值: 腾讯
'''容器:集合(Sets)是一个没有重复元素的容器
'''
#定义集合:6家公司的股票
gafataSets={'腾讯','阿里巴巴','苹果','谷歌','Facebook','亚马逊','亚马逊'}
print(gafataSets)
{'阿里巴巴', '亚马逊', 'Facebook', '腾讯', '谷歌', '苹果'}
集合的4个操作
#1) 容器操作:增加
# 定义一个空的集合
stockSets=set()
# 使用update()增加元素
stockSets.update(['腾讯','阿里巴巴','京东'])
print(stockSets)
{'京东', '阿里巴巴', '腾讯'}
#2) 容器操作:删除
stockSets.discard('京东')
print(stockSets)
{'阿里巴巴', '腾讯'}
#3) 容器操作:查找
txBool='腾讯' in stockSets
print(txBool)
True
#4) 容器操作:修改
#第1步:先删除
stockSets.discard('京东')
#第2步:再添加
stockSets.update(['京东'])
print(stockSets)
{'京东', '阿里巴巴', '腾讯'}
'''
容器:字典(Dictionary)
'''
#定义字典:病人标号和姓名的映射关系
patientDic={'001':'猴子','002':'马云','003':'王健林','004':'马化腾'}
#定义字典:excel病人数据存储
patientDic2={'001':['猴子',29,'1型糖尿病','较差'],
'002':['马云',34,'2型糖尿病','好转'],
'003':['王健林',28,'1型糖尿病','显著好转'],
'004':['马化腾',52,'2型糖尿病','好转']
}
#1)容器操作:增加
patientDic2['005']=['王思聪',30,'1型糖尿病','好转']
print(patientDic2)
{'001': ['猴子', 29, '1型糖尿病', '较差'], '002': ['马云', 34, '2型糖尿病', '好转'], '003': ['王健林', 28, '1型糖尿病', '显著好转'], '004': ['马化腾', 52, '2型糖尿病', '好转'], '005': ['王思聪', 30, '1型糖尿病', '好转']}
#2)容器操作:删除
del patientDic2['005']
#3容器操作:查询,根据病人编号查询病人信息
valueList1=patientDic2['001']
print(valueList1)
['猴子', 29, '1型糖尿病', '较差']
#4)容器操作:修改
print('修改之前,病人信息:',patientDic2['001'])
patientDic2['001']=['猴子',29,'1型糖尿病','好转']
print('修改之后,病人信息:',patientDic2['001'])
修改之前,病人信息: ['猴子', 29, '1型糖尿病', '较差']
修改之后,病人信息: ['猴子', 29, '1型糖尿病', '好转']
条件判断
#《摔跤吧,爸爸》豆瓣评分
scoreNum=9.1
if scoreNum>=8:
print('我要去看这部电影')
else:
print('电影太烂,不去看了')
我要去看这部电影
# 定义列表,病人姓名
nameList=['猴子','马云','王健林','马化腾']
if '猴子'not in nameList:
print('列表中没有叫猴子的病人')
else:
print('列表中有个叫猴子的病人')
列表中有个叫猴子的病人
多个条件判断
age=int(input('请输入你家狗狗的年龄,按enter键获取计算结果:'))
if age<0:
print('狗狗年龄不能小于0')
elif age==1:
print('相当于14岁的人')
elif age==2:
print('相对于22岁的人')
else:
human=22+(age-2)*5
print('对应人类年龄:',human)
请输入你家狗狗的年龄,按enter键获取计算结果:5
对应人类年龄: 37
循环批量处理数据
#重复性工作
print('吃第1次饭')
print('吃第2次饭')
print('吃第3次饭')
#容器:1天中吃第几次饭
eatList=['吃第1次饭','吃第2次饭','吃第3次饭']
#循环
for i in eatList:
print(i)
吃第1次饭
吃第2次饭
吃第3次饭
吃第1次饭
吃第2次饭
吃第3次饭
对字典进行循环
'''
定义字典:6家公司(GAFATA)的股票
Key是公司名称,Value是股票代码
'''
gafataDict={'腾讯':'HK:00700','阿里巴巴':'baba','苹果':'Apple',
'谷歌':'GOOGLE','Facebook':'fb','亚马逊':'amzn'}
#将股票代码全部大写
for key,value in gafataDict.items():
#对股票代码转换成大写
newValue=value.upper()
#将转换后新的股票代码复制给对应的key
gafataDict[key]=newValue
print(gafataDict)
{'腾讯': 'HK:00700', '阿里巴巴': 'BABA', '苹果': 'APPLE', '谷歌': 'GOOGLE', 'Facebook': 'FB', '亚马逊': 'AMZN'}
continue用于跳出当前循环
for key,value in gafataDict.items():
if(key=='苹果'):
continue
print('当前公司:',key,',当前股票代码:',value)
当前公司: 腾讯 ,当前股票代码: HK:00700
当前公司: 阿里巴巴 ,当前股票代码: BABA
当前公司: 谷歌 ,当前股票代码: GOOGLE
当前公司: Facebook ,当前股票代码: FB
当前公司: 亚马逊 ,当前股票代码: AMZN
break用于退出整个循环
# 查找苹果共的股票代码
number=0
for key,value in gafataDict.items():
number=number+1
if(key=='苹果'):
print('查找',key,'公司的股票代码是',value)
break
print('当前公司:',key,',当前股票代码:',value)
当前公司: 腾讯 ,当前股票代码: HK:00700
当前公司: 阿里巴巴 ,当前股票代码: BABA
查找 苹果 公司的股票代码是 APPLE
函数
- 如果函数参数是字符串, 元祖, 和数字这3种不可更改的对象,参数传递时,相当于传递的是复制出来的数据,对于数据本身没有影响
- 如果参数传入的数据类型是可变的类型,当函数内部修改该数据时,原始的数据也改变了。
如何自定义函数?
'''
定义函数
函数功能:两个数相加
输入:x,y是要相加的两个数
输出:两个数相加的和
'''
def add(x,y):
z=x+y
return z
#使用函数
a=1
b=2
c=add(x=a,y=b)
print('1和2相加等于',c)
1和2相加等于 3
#定义函:改变数据的值
def changeInt(a):
a=a+1
'''
使用函数
参数是不可变数据类型(字符串,元祖,数值):
传递的只是该数据类型的值(相当于复制一份)
'''
b=1
print('调用函数之前b的值=',b)
changeInt(a=b)
print('调用函数之后b的值=',b)
调用函数之前b的值= 1
调用函数之后b的值= 1
#定义函:改变列表的值
def changeList(inputList):
inputList.append('奶茶妹妹')
'''
使用函数
参数是可变数据类型:
传递的是该变量的引用地址
'''
nameList=['马云','刘强东']
print('调用函数之前的值:',nameList)
changeList(inputList=nameList)
print('调用函数之后的值:',nameList)
调用函数之前的值: ['马云', '刘强东']
调用函数之后的值: ['马云', '刘强东', '奶茶妹妹']
模块
Python内置模块使用
''''
Python内置模块
'''
#第1步:引入模块
import sys
#第2步:使用模块中的函数,属性
pathList=sys.path
print('Python 路径为:n', pathList)
Python 路径为:
['/Library/anaconda3/lib/python36.zip', '/Library/anaconda3/lib/python3.6', '/Library/anaconda3/lib/python3.6/lib-dynload', '', '/Library/anaconda3/lib/python3.6/site-packages', '/Library/anaconda3/lib/python3.6/site-packages/aeosa', '/Library/anaconda3/lib/python3.6/site-packages/IPython/extensions', '/Users/gaofeng/.ipython']
第三方模块使用
'''
使用conda命令安装包:conda install pandas
使用第三方模块:pandas
pandas是数据分析工具
'''
#引入模块
import pandas as pd
#文件路径(在本地运行时替换成你自己的实际数据路径)
fileNameStr='/Users/gaofeng/Downloads/病历数据.xlsx'
#读取excel文件里的数据
xl = pd.ExcelFile(fileNameStr)
#获取指定工作表(Sheet)名称的数据
patientDf = xl.parse('Sheet1')
print(patientDf)
病人编号 姓名 年龄 糖尿病类型 病情
0 1 猴子 29 1型糖尿病 较差
1 2 马云 34 2型糖尿病 好转
2 3 王健林 28 1型糖尿病 显著好转
3 4 马化腾 52 2型糖尿病 较差
数据结构
- 队列(queue) 队列就像你去餐厅外婆家吃饭排队,新来的人在队列尾部加入,叫做入队。取完票的人从队列首部离开队列,叫做出队
#导入collections包
from collections import deque
#定义队列:排队吃饭人的编号
queue=deque(['001','002','003','04','005'])
#入队:在队列尾部插入元素
queue.append('006')
print(queue)
deque(['001', '002', '003', '04', '005', '006'])
#出队:在队列头部删除元素
queue.popleft()
'001'
print(queue)
deque(['002', '003', '04', '005', '006'])
- 栈(stack) 栈这种数据结构有点像像生活中的木桶。你往栈中加入新的元素,就是入栈,新的元素总是放在木桶的最上面。
#定义栈:浏览我个人知乎主页的顺序
stack=deque(['知乎动态','知乎回答','知乎文章'])
print(stack)
deque(['知乎动态', '知乎回答', '知乎文章'])
#入栈:在栈顶加入元素
stack.append('知乎专栏')
print(stack)
deque(['知乎动态', '知乎回答', '知乎文章', '知乎专栏', '知乎专栏'])
#出栈:将栈顶元素移除
stack.pop()
'知乎专栏'
print(stack)
deque(['知乎动态', '知乎回答', '知乎文章', '知乎专栏'])
- 排序字典OrderedDict
'''
OrderedDict:按照插入key的顺序,对字典排序
'''
from collections import OrderedDict
#定义有序字典
gafataOdDict=OrderedDict({'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',
'苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700'})
gafataOdDict
OrderedDict([('谷歌', 'GOOG'),
('亚马逊', 'AMZN'),
('Facebook', 'FB'),
('苹果', 'AAPL'),
('阿里巴巴', 'BABA'),
('腾讯', '0700')])
- 计数器Counter
'''
计数器
'''
from collections import Counter
cDict = Counter('有一种鸟是永远也关不住的,因为他们的羽毛太光亮了。羽毛太光亮')
cDict['亮']
2
#出现次数最多的3个词
cDict.most_common(3)
[('的', 2), ('羽', 2), ('毛', 2)]快速学会Python的4个关键点