一、为什么要学习Python?如何学习Python?
这两个问题是编码初学者绕不开的话题,回答第一个问题你可以先问问自己:我为何要学习编程?大多数非计算机相关专业的初学者往往是为了转换就业方向而学习计算机语言,既然是为就业而学习编程语言,那为什么不选当下最热门且最具发展潜力的Python呢?目前市面上众多应用是基于Python开发的,而且越来越多的人工智能项目使用Python作为研发工具,学习Python才能跟上时代的步伐。
在弄明白了自己的学习方向后,我们又迎来第二个难题如何学习Python。随着现代社会的快速发展,工作者无法完全分开生活和工作的界限,这也意味着你很难划出固定的时间来学习新的知识。因此,为了适应现在快节奏的生活,我们也应该学会如何利用琐碎的时间来学习新的知识。为了更好的利用碎片化的时间,我们应该讲所学的知识也碎片化,这样我们就能把碎片化的时间和碎片化的知识一一对应。
二、如何使用Python?
Python最原始的操作环境存在许多不足,例如无法进行注解或越过当前命令等。为了解决Python原始环境的不足,我们可以通过Anaconda平台来运行Python。通过Anaconda平台来操作Python编码,不仅仅实现了编码注解和跳跃式运行指令,而且在处理Python的外置包上也十分简便。作为一名Python初学者,Anaconda帮助我更快的适应了Python这项新的编程语言。
三、Python的四大核心
Python语言主要由四大核心内容组成,分别是数据,条件判断,循环,函数。
1.数据
1.1Python中数据类型也分为字符串型,数值型,布尔型和空型。
数据变量可以用数据名加数据类型命名方便使用,另外数字不能置于变量名的开头处。
字符串型:字符串不能修改对象
#字符串数据(string)
travel_method1_str='car'
travel_method1_str
#结果
'car'
#字符串数据(string)
travel_method2_str='airplane'
travel_method2_str
#结果
'airplane'
#格式化字符串
travel_method_total_str='出行方式有%s,%s.'%(travel_method1,travel_method2)
travel_method_total_str
#结果
'出行方式有car,airplane.'
数值型:数值型数据不能修改对象
#数值型数据(int)
number_fill_int=25
number_fill_int
#结果
25
#数值型数据(floating)
number_fill2_float=2.5
number_fill2_float
#结果
2.5
布尔型&空型:可以修改对象
#布尔型数据(bool)
bool_data=True
type(a)
#结果
bool
#空型数据(None)
None_data=None
type(None_data)
#结果
NoneType
1.2Python中的数据容器
Python中的数据可以单独的赋予给新变量,也可以和其他数据一起形成列表,集合,字典等再赋予给新变量
列表:
#数据容器-List列表
transportation=['vehicle','flight','ferry']
transportation
#结果
['vehicle', 'flight', 'ferry']
#查询列表长度
len(transportation)
#结果
3
#添加新的数据进列表
transportation.append('spaceship')
transportation
#结果
['vehicle', 'flight', 'ferry', 'spaceship']
#根据索引修改列表中数据
print(transportation)
transportation[0]='tank'
transportation
#结果
['flight', 'ferry', 'spaceship']
['tank', 'ferry', 'spaceship']
集合:集合中不能出现重复的数据,出现重复数据会自动被删除
#数据容器-Set集合;集合中不能出现重复的数据
transportation2={'vehicle','flight','ferry','ferry'}
transportation2
#结果
{'ferry', 'flight', 'vehicle'}
#创建空集合并添加数据
transportation3=set()
transportation3.update(['vehicle','flight','ferry','ferry'])
transportation3
#结果
{'ferry', 'flight', 'vehicle'}
#从集合中删除数据
transportation3.discard('ferry')
transportation3
#结果
{'flight', 'vehicle'}
#从集合中查询数据
'ferry'in transportation3
#结果
False
字典:字典有映射关系,一个Key对应一个Value
#数据容器-Dictionary字典;字典存在映射关系,即前面的Key对应后面的数据
transportation_method={'method1':['vehicle','ten hours'],
'method2':['flight','two hours'],
'method3':['ferry','one day']}
transportation_method
#结果
{'method1': ['vehicle', 'ten hours'],
'method2': ['flight', 'two hours'],
'method3': ['ferry', 'one day']}
#字典加入新数据
transportation_method['method4']=['spaceship','one second']
transportation_method
#结果
{'method1': ['vehicle', 'ten hours'],
'method2': ['flight', 'two hours'],
'method3': ['ferry', 'one day'],
'method4': ['spaceship', 'one second']}
#字典删除指定数据
del transportation_method['method1']
transportation_method
#结果
{'method2': ['flight', 'two hours'],
'method3': ['ferry', 'one day'],
'method4': ['spaceship', 'one second']}
#字典查询数据
transportation_method['method2']
#结果
['flight', 'two hours']
#字典修改数据
transportation_method['method2']=['tank','life time']
transportation_method
#结果
{'method2': ['tank', 'life time'],
'method3': ['ferry', 'one day'],
'method4': ['spaceship', 'one second']}
元组:不能修改对象
#数据容器-tuple元组
transportation_way=('vehicle','flight','ferry')
transportation_way
#结果
('vehicle', 'flight', 'ferry')
2.条件判断
利用条件判断语句能够帮助我们筛选数据并分组,对满足条件的数据和不满足条件的数据分别进行处理。
单一条件判断:
#利用单条件语句进行检测
License_Data={'12563':'Six Months','65875':'Two Years',
'98568':'Three Months','12345':'Two Weeks','85987':'Ten Days'}
DriverLicenseDetect=str(input('请输入驾照的5位数编码'))
if DriverLicenseDetect in License_Data.keys():
print('驾照有效期还剩',License_Data[DriverLicenseDetect])
else:
print('无效驾照')
#结果
请输入驾照的5位数编码12345
驾照有效期还剩 Two Weeks
多条件判断:
#利用多条件语句进行检测
License_Data2={'12563':'Six Months','65875':'Two Years','98568':'Three Months','12345':'Two Weeks','85987':'Ten Days'}
DriverLicenseDetect_str2=str(input('请输入驾照的5位数编码'))
DriveVerify_str=str(input('驾驶员是否与照片一致,请输入小写yes或no:'))
DriveSafety_str=str(input('驾驶员是否系安全带,请输入小写yes或no:'))
VehicleSafety_str=str(input('汽车是否超载,请输入小写yes或no:'))
if DriverLicenseDetect_str2 in License_Data2.keys():
if DriveVerify_str==str('yes'):
if DriveSafety_str==str('yes'):
if VehicleSafety_str==str('yes'):
print('驾照有效期还剩',License_Data2[DriverLicenseDetect_str2])
else:
print('超载罚6分')
else:
print('未系安全带罚6分')
else:
print('使用他人驾照,拘留15天')
else:
print('无效驾照,拘留1月')
#结果
请输入驾照的5位数编码12345
驾驶员是否与照片一致,请输入小写yes或no:yes
驾驶员是否系安全带,请输入小写yes或no:yes
汽车是否超载,请输入小写yes或no:yes
驾照有效期还剩 Two Weeks
3.循环
利用循环可以遍历整个字典
#正常循环
License_Data3={'12563':'Six Months','65875':'Two Years',
'98568':'Three Months','12345':'Two Weeks','85987':'Ten Days'}
for key,value in License_Data3.items():
print('驾照编码:',key,'有效期:',value)
#结果
驾照编码: 12563 有效期: Six Months
驾照编码: 65875 有效期: Two Years
驾照编码: 98568 有效期: Three Months
驾照编码: 12345 有效期: Two Weeks
驾照编码: 85987 有效期: Ten Days
利用continue语句,我们可以跳过字典中的某些数据
#包含Continue的循环
License_Data4={'12563':'Six Months','65875':'Two Years','98568':'Three Months','12345':'Two Weeks','85987':'Ten Days'}
ContinueData_str=str(('12563','65875'))
for key,value in License_Data4.items():
if key in ContinueData_str:
continue
print('驾照编码:',key,'有效期:',value)
#结果
驾照编码: 98568 有效期: Three Months
驾照编码: 12345 有效期: Two Weeks
驾照编码: 85987 有效期: Ten Days
利用Break语句,我们可以让循环自动终止
#包含break的循环
License_Data5={'12563':'Six Months','65875':'Two Years','98568':'Three Months','12345':'Two Weeks','85987':'Ten Days'}
ContinueData_str=str(('12563','65875'))
for key,value in License_Data5.items():
if key not in ContinueData_str:
break
print('驾照编码:',key,'有效期:',value)
#结果
驾照编码: 12563 有效期: Six Months
驾照编码: 65875 有效期: Two Years
4.函数
构建函数前有几点需要注意,如果构建的函数和调用的命令在同一个notebook中,那么函数必须放在调用命令之前,不然会报错。函数中的变量和函数外的变量不会相互影响,因此不通过调用语句无法直接使用函数中的变量。当函数由不可变数据构成时(字符串,数字,元组)函数为不可变函数,反之,函数为可变函数。
不可变函数:
#不可变函数
def unchangeable(a):
a=a+1
b=1
unchangeable(b)
print(b)
#结果
1
可变函数:
#可变函数求众数
def CalcMode(alist):
EmptyMode=[]
if alist==[]:
return EmptyMode
else:
modelist=[]
modedict=dict((x,alist.count(x)) for x in alist)
for key,value in modedict.items():
if value==max(modedict.values()):
modelist.append(key)
return modelist
print(CalcMode([1, 2, 3, 2]))
#结果
[2]
四、Python模块的使用
Python的强大之处就能使用大量的第三方模块,第三方模块可以通过网上查找也可以通过anaconda直接安装。第三方模块是由其他人编写成的Python函数包,通过使用第三方模块可以大大节省我们的编码时间。
使用Python内置模块查询模块路径:
#使用模块查询路径
import sys
path=sys.path
path
#结果
['',
'D:\\Analytics\\python36.zip',
'D:\\Analytics\\DLLs',
'D:\\Analytics\\lib',
'D:\\Analytics',
'C:\\Users\\81256\\AppData\\Roaming\\Python\\Python36\\site-packages',
'D:\\Analytics\\lib\\site-packages',
'D:\\Analytics\\lib\\site-packages\\Babel-2.5.0-py3.6.egg',
'D:\\Analytics\\lib\\site-packages\\win32',
'D:\\Analytics\\lib\\site-packages\\win32\\lib',
'D:\\Analytics\\lib\\site-packages\\Pythonwin',
'D:\\Analytics\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\81256\\.ipython']
使用Pandas读取Excel的sheet:
因为excel里面的数据由行列构成,所以读取Excel数据会直接转换成Dataframe格式
#使用panda读Excel文件
import pandas as pd
file=r'C:\Users\81256\Desktop\Python练习\病历数据.xlsx'
read_file=pd.ExcelFile(file)
read_sheet1=read_file.parse('Sheet1')
read_sheet1
#结果
病人编号姓名年龄糖尿病类型病情
01猴子291型糖尿病较差
12马云342型糖尿病好转
23王健林281型糖尿病显著好转
34马化腾522型糖尿病较差
使用collections数据包
队列:
#导入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=deque(['知乎动态','知乎回答','知乎文章'])
print(stack)
#结果
deque(['知乎动态', '知乎回答', '知乎文章'])
#入栈:在栈顶加入元素
stack.append('知乎专栏')
print(stack)
#结果
deque(['知乎动态', '知乎回答', '知乎文章', '知乎专栏'])
#出栈:将栈顶元素移除
stack.pop()
#结果
'知乎专栏'
print(stack)
#结果
deque(['知乎动态', '知乎回答', '知乎文章'])
排序字典:
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的功能很强大,相关的知识虽已经学会,但是还需要我们进行更深层次的挖掘才行。现实当中的编码问题往往较为复杂,如果只是走马观花般学习最后还是无法解决现实中遇到的问题。要善于使用互联网查询问题,通过互联网可以获取大量的资料,如此简易的查询方法怎能不好好加以利用。