python知识整理
安装环境、IDE
下载 python 环境
官网 https://www.python.org/
官网太慢了,换个地址 https://www.onlinedown.net/soft/14542.htm
安装 IDE
https://www.cnblogs.com/Dr-wei/p/11845218.html
建议不装汉化包
IDE 汉化包下载 https://pan.baidu.com/s/1sweHYIyiA_gZR7XoMaBTXw?errmsg=Auth+Login+Sucess&errno=0&ssnerror=0&
Python pip 安装与使用
python 使用 excel
pip uninstall xlrd
pip install xlrd==1.2.0
入门文档
https://docs.python.org/zh-cn/3/
https://docs.python.org/zh-cn/3.7/index.html
基础教程 https://www.runoob.com/python/python-tutorial.html
基本数据类型
基本数据类型
加
2 + 2
减
50 - 5*6
乘、除
8/5
乘方
5**2
赋值:
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
混合类型运算数的运算会把整数转换为浮点数
4 * 3.75 - 1
浮点型
height=float(input("请输入您的身高:")) # 输入身高
weight=float(input("请输入您的体重:")) # 输入体重
bmi=weight/(height*height) # 计算BMI指数
# 判断身材是否合理
if bmi<18.5:
print("您的BMI指数为:"+str(bmi)) # 输出BMI指数
print("体重过轻 ~@_@~")
if bmi>=18.5 and bmi<24.9:
print("您的BMI指数为:"+str(bmi)) # 输出BMI指数
print("正常范围,注意保持 (-_-)")
if bmi>=24.9 and bmi<29.9:
print("您的BMI指数为:"+str(bmi)) # 输出BMI指数
print("体重过重 ~@_@~")
if bmi>=29.9:
print("您的BMI指数为:"+str(bmi)) # 输出BMI指数
print("肥胖 ^@_@^")
整型
a = 100 # 变量a,值为100
b = 5 # 变量b,值为5
print(9) # 输出数字9
print(a) # 输出变量a的值100
print(a*b) # 输出 a*b的结果500
print("go big or go home") # 输出字符串“go big or go home”
字符
print("a") # 输出字符a
print(chr(97)) # 输出字符a
print("A") # 输出字符A
print(chr(65)) # 输出字符A
print("B") # 输出字符B
print(chr(66)) # 输出字符B
print("+") # 输出字符+
print(chr(43)) # 输出字符+
print(8) # 输出字符8
print(chr(56)) # 输出字符8
print("[") # 输出字符[
print(chr(91)) # 输出字符[
print("]") # 输出字符]
print(chr(93)) # 输出字符]
字符串拼接
str='aaa'+'bbbb'
print(str)
print("sniper"+" is "+"very good")
title = '我喜欢的名言警句' # 使用单引号,字符串内容必须在一行中
mot_cn = "命运给予我们的不是失望之酒,而是机会之杯。" # 使用双引号,字符串内容必须在一行中
# 使用三引号,字符串内容可以分布在多行中
mot_en = '''Our destiny offers not the cup of despair,
but the chance of opportunity.'''
print(title)
print(mot_cn)
print(mot_en)
位移运算
print("12&8 = "+str(12&8)) # 位与计算整数的结果
print("4|8 = "+str(4|8)) # 位或计算整数的结果
print("31^22 = "+str(31^22)) # 位异或计算整数的结果
print("~123 = "+str(~123)) # 位取反计算整数的结果
打开文件
fp = open(r'D:\mr.txt','a+') # 打开文件
print("要么出众,要么出局",file=fp) # 输出到文件中
fp.close() # 关闭文件
输出日期
import datetime # 调用日期模块datetime
print("当前年份:"+str(datetime.datetime.now().year)) # 输出当前年份,当前是2018年,输出2018
# 输出当前日期和时间,如18-11-20 15:30:23,注意代码中的单引号和字母大小写,不能写错
print("当前日期时间:"+datetime.datetime.now().strftime('%y-%m-%d %H:%M:%S'))
流程控制语句
for 循环
print("计算1+2+3+……+100的结果为:")
result = 0 # 保存累加结果的变量
for i in range(101):
result += i # 实现累加功能
print(result) # 在循环结束时输出结果
for i in range(1,10,2):
print(i,end = ' ')
string = '不要再说我不能'
print(string) # 横向显示
for ch in string:
print(ch) # 纵向显示
a=[1,2,3,4,5,6]
for i in a:
print(i)
for i in range(1,10):
if i%2 == 0: # 判断是否为偶数
print(i,end = ' ')
else: # 不是偶数
pass # 占位符,不做任何事情
if 语句
a = input("请输入数字(1——7)")
if a == '1':
print("今天是:星期一")
elif a == '2':
print("今天是:星期二")
elif a == '3':
print("今天是:星期三")
elif a == '4':
print("今天是:星期四")
elif a == '5':
print("今天是:星期五")
elif a == '6':
print("今天是:星期六")
elif a == '7':
print("今天是:星期日")
for 语句
words = ['cat', 'window', 'defenestrate']
for w in words:
print(w, len(w))
break、continue、else 语句
for n in (1,2,3,4,5,6):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
# loop fell through without finding a factor
print(n, 'is a prime number')
数据结构:列表、字典
列表相加
nba1 = ["德怀特·霍华德","德维恩·韦德","凯里·欧文","保罗·加索尔"]
nba2 = ["迈克尔·乔丹","比尔·拉塞尔","卡里姆阿卜杜勒·贾巴尔","威尔特·张伯伦",
"埃尔文·约翰逊","科比·布莱恩特","蒂姆·邓肯","勒布朗·詹姆斯","拉里·伯德",
"沙奎尔·奥尼尔"]
print(nba1+nba2)
检测是否在里面
nba = ["德怀特·霍华德","德维恩·韦德","凯里·欧文","保罗·加索尔"]
print("保罗·加索尔" in nba)
print("保罗·加索尔" not in nba)
num = [7,14,21,28,35,42,49,56,63]
print("序列num的长度为",len(num))
print(max(num)+min(num))
遍历排名
team = ["休斯敦 火箭", "金州 勇士", "波特兰 开拓者", "犹他 爵士", "新奥尔良 鹈鹕", "圣安东尼奥 马刺", "俄克拉荷马城 雷霆", "明尼苏达 森林狼"]
for item in team:
print(item)
for index, item in enumerate(team):
print(index + 1, item)
列表插入
phone = ["摩托罗拉","诺基亚","三星","OPPO"]
len(phone) # 获取列表的长度
phone.append("iPhone")
print(len(phone)) # 获取列表的长度
print(phone)
删除
verse = ["长亭外","古道边","芳草碧连天"]
del verse[-1]
print(verse)
迭代删除
team = ["火箭","勇士","开拓者","爵士","鹈鹕","马刺","雷霆","森林狼"]
value = "公牛" # 指定要移除的元素
if team.count(value)>0: # 判断要删除的元素是否存在
team.remove(value) # 移除指定的元素
print(team)
song = ["云在飞", "我在诛仙逍遥涧", "送你一匹马", "半壶纱", "云在飞", "遇见你", "等你等了那么久"]
position = song.index("半壶纱")
print(position)
排序
grade = [98,99,97,100,100,96,94,89,95,100] # 10名学生语文成绩列表
print("原列表:",grade)
grade.sort() # 进行升序排列
print("升 序:",grade)
grade.sort(reverse=True) # 进行降序排列
print("降 序:",grade)
char = ['cat','Tom','Angela','pet']
char.sort() # 默认区分字母大小写
print("区分字母大小写:",char)
char.sort(key=str.lower) # 不区分字母大小写
print("不区分字母大小写:",char)
grade = [98,99,97,100,100,96,94,89,95,100] # 10名学生语文成绩列表
grade_as = sorted(grade) # 进行升序排列
print("升序:",grade_as)
grade_des = sorted(grade,reverse = True) # 进行降序排列
print("降序:",grade_des)
print("原序列:",grade)
生成随机值
import random #导入random标准库
randomnumber = [random.randint(10,100) for i in range(10)]
print("生成的随机数为:",randomnumber)
字典
dictionary = {'qq':'84978981','明日科技':'84978982','无语':'0431-84978981'}
print(dictionary)
name_list = ['绮梦','冷伊一','香凝','黛兰'] # 作为键的列表
dictionary = dict.fromkeys(name_list)
print(dictionary)
字典遍历
dictionary = {'qq':'84978981','明日科技':'84978982','无语':'0431-84978981'}
for item in dictionary.items():
print(item)
for key, value in dictionary.items():
print(key, "的联系电话是", value)
添加元素
dictionary = dict((('绮梦', '水瓶座'), ('冷伊一', '射手座'), ('香凝', '双鱼座'), ('黛兰', '双子座')))
dictionary["碧琦"] = "巨蟹座" # 添加一个元素
print(dictionary)
修改
dictionary["香凝"] = "天蝎座" # 添加一个元素。当元素存在时,相当于修改功能
print(dictionary)
删除
del dictionary["香凝"] # 删除一个元素
print(dictionary)
dictionary = dict((('绮梦', '水瓶座'), ('冷伊一', '射手座'), ('香凝', '双鱼座'), ('黛兰', '双子座')))
if "香凝1" in dictionary: # 如果存在
del dictionary["香凝1"] # 删除一个元素
print(dictionary)
函数
异常捕获
def division():
'''功能:分苹果'''
print("\n===================== 分苹果了 =====================\n")
apple = int(input("请输入苹果的个数:")) # 输入苹果的个数
children = int(input("请输入来了几个小朋友:"))
result = apple // children # 计算每人分几个苹果
remain = apple - result * children # 计算余下几个苹果
if remain > 0:
print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result,
"个,剩下", remain, "个。")
else:
print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")
if __name__ == '__main__':
try: # 捕获异常
division() # 调用分苹果的函数
except ZeroDivisionError: # 处理异常
print("\n出错了 ~_~ ——苹果不能被0个小朋友分!")
except ValueError as e: # 处理ValueError异常
print("输入错误:", e) # 输出错误原因
else: # 没有抛出异常时执行
print("分苹果顺利完成...")
过滤字符串
def filterchar(string):
'''功能:过滤危险字符(如黑客),并将过滤后的结果输出
about:要过滤的字符串
没有返回值
'''
import re # 导入Python的re模块
pattern = r'(黑客)|(抓包)|(监听)|(Trojan)' # 模式字符串
sub = re.sub(pattern, '@_@', string) # 进行模式替换
print(sub)
about = '我是一名程序员,喜欢看黑客方面的图书,想研究一下@_@。'
filterchar(about)
定义函数
def demo(obj):
print("原值:", obj)
obj += obj
调用函数
print("=========值传递========")
mot = "唯有在被追赶的时候,你才能真正地奔跑。"
print("函数调用前:", mot)
demo(mot) # 采用不可变对象——字符串
print("函数调用后:", mot)
print("=========引用传递 ========")
list1 = ['绮梦', '冷伊一', '香凝', '黛兰']
print("函数调用前:", list1)
demo(list1) # 采用可变对象——列表
print("函数调用后:", list1)
可变参数
def printcoffee(*coffeename): # 定义输出我喜欢的咖啡名称的函数
print('\n我喜欢的咖啡有:')
for item in coffeename:
print(item) # 输出咖啡名称
printcoffee('蓝山')
printcoffee('蓝山', '卡布奇诺', '土耳其', '巴西', '哥伦比亚')
printcoffee('蓝山', '卡布奇诺', '曼特宁', '摩卡')
全局变量和局部变量
message = '唯有在被追赶的时候,你才能真正地奔跑。' # 全局变量
print('函数体外:message =',message) # 在函数体外输出全局变量的值
def f_demo():
message = '命运给予我们的不是失望之酒,而是机会之杯。' # 局部变量
print('函数体内:message =',message) # 在函数体内输出局部变量的值
f_demo() # 调用函数
print('函数体外:message =',message) # 在函数体外输出全局变量的值
函数带返回值
import math # 导入math模块
def circlearea(r): # 计算圆的面积的函数
result = math.pi*r*r # 计算圆的面积
return result # 返回圆的面积
r = 10 # 半径
print('半径为',r,'的圆面积为:',circlearea(r))
面向对象
定义类
class Geese:
'''大雁类'''
def __init__(self): # 构造方法
print("我是大雁类!")
wildGoose = Geese() # 创建大雁类的实例
带参结构体
class Geese:
'''大雁类'''
def __init__(self,beak,wing,claw): # 构造方法
print("我是大雁类!我有以下特征:")
print(beak) # 输出喙的特征
print(wing) # 输出翅膀的特征
print(claw) # 输出爪子的特征
beak_1 = "喙的基部较高,长度和头部的长度几乎相等" # 喙的特征
wing_1 = "翅膀长而尖" # 翅膀的特征
claw_1 = "爪子是蹼状的" # 爪子的特征
wildGoose = Geese(beak_1,wing_1,claw_1) # 创建大雁类的实例
定义类属性
class Geese:
'''雁类'''
neck = "脖子较长" # 定义类属性(脖子)
wing = "振翅频率高" # 定义类属性(翅膀)
leg = "腿位于身体的中心支点,行走自如" # 定义类属性(腿)
def __init__(self): # 实例方法(相当于构造方法)
print("我属于雁类!我有以下特征:")
print(Geese.neck) # 输出脖子的特征
print(Geese.wing) # 输出翅膀的特征
print(Geese.leg) # 输出腿的特征
geese = Geese() # 实例化一个雁类的对象
定义实例属性
class Geese:
'''雁类'''
def __init__(self): # 实例方法(相当于构造方法)
self.neck = "脖子较长" # 定义实例属性(脖子)
self.wing = "振翅频率高" # 定义实例属性(翅膀)
self.leg = "腿位于身体的中心支点,行走自如" # 定义实例属性(腿)
print("我属于雁类!我有以下特征:")
print(self.neck) # 输出脖子的特征
print(self.wing) # 输出翅膀的特征
print(self.leg) # 输出腿的特征
geese = Geese() # 实例化一个雁类的对象
定义一个成员方法
class People:
def __init__(self,name,age):
self.age = age
self.name = name
def say(self):
print("hi "+self.name)
p = People("sniper",33)
p.say()
将方法转换为属性
class Rect:
def __init__(self,width,height):
self.width = width # 矩形的宽
self.height = height # 矩形的高
@property # 将方法转换为属性
def area(self): # 计算矩形的面积的方法
return self.width*self.height # 返回矩形的面积
rect = Rect(800,600) # 创建类的实例
print("面积为:",rect.area) # 输出属性的值
继承
class Fruit: # 定义水果类(基类)
color = "绿色" # 定义类属性
def harvest(self, color):
print("水果是:" + color + "的!") # 输出的是形式参数color
print("水果已经收获……")
print("水果原来是:" + Fruit.color + "的!"); # 输出的是类属性color
class Apple(Fruit): # 定义苹果类(派生类)
color = "红色"
def __init__(self):
print("我是苹果")
class Orange(Fruit): # 定义橘子类(派生类)
color = "橙色"
def __init__(self):
print("\n我是橘子")
# 重写harvest()方法的代码
apple = Apple() # 创建类的实例(苹果)
apple.harvest(apple.color) # 调用基类的harvest()方法
orange = Orange() # 创建类的实例(橘子)
orange.harvest(orange.color) # 调用基类的harvest()方法
class Fruit: # 定义水果类(基类)
def __init__(self,color = "绿色"):
Fruit.color = color # 定义类属性
def harvest(self):
print("水果原来是:" + Fruit.color + "的!"); # 输出的是类属性color
class Apple(Fruit): # 定义苹果类(派生类)
def __init__(self):
super().__init__()
print("我是苹果")
apple = Apple() # 创建类的实例(苹果)
apple.harvest() # 调用基类的harvest()方法
模块
christmastree.py
pinetree = '我是一棵松树' # 定义一个全局变量(松树)
def fun_christmastree(): # 定义函数
'''功能:一个梦
无返回值
'''
pinetree = '挂上彩灯、礼物……我变成一棵圣诞树 @^.^@ \n' # 定义局部变量赋值
print(pinetree) # 输出局部变量的值
# *************************判断是否以主程序的形式运行*************************#
if __name__ == '__main__':
print('\n下雪了……\n')
print('=============== 开始做梦…… =============\n')
fun_christmastree() # 调用函数
print('=============== 梦醒了…… ===============\n')
pinetree = '我身上落满雪花,' + pinetree + ' -_- ' # 为全局变量赋值
print(pinetree) # 输出全局变量的值
main.py
import christmastree # 导入christmastree模块
print(christmastree.pinetree)
bmi.py
def fun_bmi(person,height,weight):
'''功能:根据身高和体重计算BMI指数
person:姓名
height:身高,单位:米
weight:体重,单位:千克
'''
print(person + "的身高:" + str(height) + "米 \t 体重:" + str(weight) + "千克")
bmi=weight/(height*height) # 用于计算BMI指数,公式为“体重/身高的平方”
print(person + "的BMI指数为:"+str(bmi)) # 输出BMI指数
# 判断身材是否合理
if bmi<18.5:
print("您的体重过轻 ~@_@~\n")
if bmi>=18.5 and bmi<24.9:
print("正常范围,注意保持 (-_-)\n")
if bmi>=24.9 and bmi<29.9:
print("您的体重过重 ~@_@~\n")
if bmi>=29.9:
print("肥胖 ^@_@^\n")
def fun_bmi_upgrade(*person):
'''功能:根据身高和体重计算BMI指数(升级版)
*person:可变参数该参数中需要传递带3个元素的列表,
分别为姓名、身高(单位:米)和体重(单位:千克)
'''
for list_person in person:
for item in list_person:
person = item[0] # 姓名
height = item[1] # 身高(单位:米)
weight = item[2] #体重(单位:千克)
print("\n" + "="*13,person,"="*13)
print("身高:" + str(height) + "米 \t 体重:" + str(weight) + "千克")
bmi=weight/(height*height) # 用于计算BMI指数,公式为“体重/身高的平方”
print("BMI指数:"+str(bmi)) # 输出BMI指数
# 判断身材是否合理
if bmi<18.5:
print("您的体重过轻 ~@_@~")
if bmi>=18.5 and bmi<24.9:
print("正常范围,注意保持 (-_-)")
if bmi>=24.9 and bmi<29.9:
print("您的体重过重 ~@_@~")
if bmi>=29.9:
print("肥胖 ^@_@^")
main.py
import bmi # 导入bmi模块
bmi.fun_bmi("尹一伊",175,120) # 执行模块中的fun_bmi()方法
# 在导入模块时设置别名的应用
# import bmi as m # 导入bmi模块
# m.fun_bmi("尹一伊",175,120) # 执行模块中的fun_bmi()方法
文件操作
读 9 个字符
with open('message.txt','r') as file: # 打开文件
string = file.read(9) # 读取前9个字符
print(string)
读一行
print("\n","="*35,"蚂蚁庄园动态","="*35,"\n")
with open('message.txt','r') as file: # 打开保存蚂蚁庄园动态信息的文件
number = 0 # 记录行号
while True:
number += 1
line = file.readline()
if line =='':
break # 跳出循环
print(number,line,end= "\n") # 输出一行内容
print("\n","="*39,"over","="*39,"\n")
全部读出来
print("\n","="*25,"蚂蚁庄园动态","="*25,"\n")
with open('message.txt','r') as file: # 打开保存蚂蚁庄园动态信息的文件
messageall = file.readlines() # 读取全部动态信息
for message in messageall:
print(message) # 输出一条动态信息
print("\n","="*29,"over","="*29,"\n")
正文到此结束