Python
2019-12-16 10:38:07 0 举报
AI智能生成
Python基础语法
作者其他创作
大纲/内容
Python基础语法
第0关
print()函数与变量
print()函数与变量
第1关
数据类型与转换
数据类型与转换
第2关
条件判断与条件嵌套
条件判断与条件嵌套
第3关
input()函数
input()函数
第4关
列表和字典
列表和字典
第5关
for循环和while循环
for循环和while循环
第6关
布尔值和四种语句
布尔值和四种语句
第7关
项目实操:PK小游戏
项目实操:PK小游戏
第8关
编程思维:如何解决问题
编程思维:如何解决问题
第9关
函数
函数
数据
直接使用数据
print(3) #>>> 3
计算和加工数据
print(2*3) #>>> 6
用数据做判断
i=0;if i>0:;else:
运算符号
\n换行符
end=''空格
print('') #用来换行
三引号也可以换行
+= +1
!=不等于
=赋值
转义字符:\
==等于
大于等于 >=
小于等于 <=
x**2=x²
s%2=0取模即余数为0,商是整数(判断为偶数)
10//3#取整除(做除法返回商的整数部分)
类型
str ( ) 字符串、 float( ) 浮点、int( )整数
列表[ ]
包容多种数据类型,有序
list1 = [{'嫉妒':'envy'},{'恨':'hatred'},{'爱':'love'}]
print(list1[2]['爱'])#查询列表读取[]##love
print(list1[2]['爱'])#查询列表读取[]##love
切片读取
左右空,取到头,左要取,右不取
a=[1,2,3,4,5,6,7,8,9]
print(a[0])##偏移量是从0开始的
print(a[0])##偏移量是从0开始的
for i in range(2,6):##2到6之前的数
print(i)
print(i)
range(8)=01234567
range(1,8)=1234567
range(1,8,2)=2468
range(1,8)=1234567
range(1,8,2)=2468
a=[1,2,3,4,5,6,7,8,9]
print(a[2:])##读取从2开始之后的元素
print(a[:2])##读取2之前的元素
print(a[2:6])##读取从2开始到6之前的元素
print(a[:])##所有
print(a[0])##使用偏移量提取单一元素
print(a[2:])##读取从2开始之后的元素
print(a[:2])##读取2之前的元素
print(a[2:6])##读取从2开始到6之前的元素
print(a[:])##所有
print(a[0])##使用偏移量提取单一元素
列表生成式
list1 = [i for i in range(3)] # 规定列表中元素的范围
print(list1) #>> [0,1,2]
list2 = [m+n for m in ['天字', '地字'] for n in '一二'] # 列表元素可以是组合,分别规定范围。
print(list2) #>> ['天字一','天字二','地字一','地字二']
list3 = [n*n for n in range(1,11) if n % 3 == 0] # 元素既可规定范围,也可附加条件。
print(list3) #>> [9,36,81]
print(list1) #>> [0,1,2]
list2 = [m+n for m in ['天字', '地字'] for n in '一二'] # 列表元素可以是组合,分别规定范围。
print(list2) #>> ['天字一','天字二','地字一','地字二']
list3 = [n*n for n in range(1,11) if n % 3 == 0] # 元素既可规定范围,也可附加条件。
print(list3) #>> [9,36,81]
元组()
tuple1 = ('A','B') #元组和列表类似,不过他是用()来包的
list2 = [('A','B'),('C','D'),('E','F')]
print(tuple1[0]) #元组都是序列,提取方式也是偏移量
#>> A
print(list2[1][1]) #元组也支持嵌套
#>> D
list2 = [('A','B'),('C','D'),('E','F')]
print(tuple1[0]) #元组都是序列,提取方式也是偏移量
#>> A
print(list2[1][1]) #元组也支持嵌套
#>> D
元组是不可变对象
字典{ }
新增键值对要⽤到赋值语句字典名[键] = 值
dic={'卡西':180,'Lin':190} 1
dic['班助']=220 2
print(dic) 3
#输出结果为:{'卡西': 180, 'Lin': 190, '班助': 220}
dic['班助']=220 2
print(dic) 3
#输出结果为:{'卡西': 180, 'Lin': 190, '班助': 220}
d[家]=90#改变字典中的值
print(d['家'])#》》900
print(d['家'])#》》900
d={"Q':["甲','乙','丙'],123:[A','B',"C'],"家':100Q}#定义字典和列表的嵌套
a=d["Q']#取岀字典d 中的'Q'键的值,并把这个值赋值给变量 a,a 被赋值为列表['甲
',"乙',"丙']
b=a[0]#取出列表a 中的第0 个索引,也就是甲,并把这个值赋值给变量b
print(b)#打印变量b##甲
a=d["Q']#取岀字典d 中的'Q'键的值,并把这个值赋值给变量 a,a 被赋值为列表['甲
',"乙',"丙']
b=a[0]#取出列表a 中的第0 个索引,也就是甲,并把这个值赋值给变量b
print(b)#打印变量b##甲
d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}
for i in d:
print(i)##键key
小明 小红 小白 小张
print(d[i])##值value
醋 油 盐 米
for i in d:
print(i)##键key
小明 小红 小白 小张
print(d[i])##值value
醋 油 盐 米
print(d[123][1])#从嵌套中提取元素,d[123]提取出["A","B',"C'],d[123][1]提取出'B
#》》B
#》》B
d[3.1415926]=圆周率!#给字典新增键和值
print(d)#》》
3.1415926:圆周率,QQ':[甲',乙',丙],123:[A,"B',"C],家:900}
print(d)#》》
3.1415926:圆周率,QQ':[甲',乙',丙],123:[A,"B',"C],家:900}
函数
format( )格式化函数:str.format()
print('{}{}'.format('数字:',0)) # 优势 1:不用担心用错类型码。
print('{},{}'.format(0,1)) # 不设置指定位置时,默认按顺序对应。
print('{1},{0}'.format(0,1)) # 优势 2:当设置指定位置时,按指定的对应。
print('{0},{1},{0}'.format(0,1)) # 优势 3:可多次调用 format 后的数据。
print('{},{}'.format(0,1)) # 不设置指定位置时,默认按顺序对应。
print('{1},{0}'.format(0,1)) # 优势 2:当设置指定位置时,按指定的对应。
print('{0},{1},{0}'.format(0,1)) # 优势 3:可多次调用 format 后的数据。
print('我正在学{}'.format('老板'))
%s字符串 %f 浮点 %d 整数
print('%s%d'%('数字:',0))
print('%d,%d'%(0,1))
print('%d,%d,%d'%(0,1,0))
print('%d,%d'%(0,1))
print('%d,%d,%d'%(0,1,0))
print()函数
print('')电脑直接执行打印内容
print( )#电脑读懂内容打印
type()函数:查询数据类型
print(type('1')) # '1'属于字符串类'str'
print(type(1)) # 1属于整数类'int'
print(type([1])) # [1]属于列表类'list'
print(type(1)) # 1属于整数类'int'
print(type([1])) # [1]属于列表类'list'
len( )函数:返回字符串的长度
input()函数
input()返回值是none,input()函数return none
.append()增加元素
a=[]
a.append('A')
a.append('B')
a.append('C')
print(a)
a.append('A')
a.append('B')
a.append('C')
print(a)
del 列表名删除列表
pop()函数,同时完成提取和删除
students = ['小明','小红','小刚']
for i in range(3):
students.append(students.pop(0))
print(students)
########['小红', '小刚', '小明']
['小刚', '小明', '小红']
['小明', '小红', '小刚']
for i in range(3):
students.append(students.pop(0))
print(students)
########['小红', '小刚', '小明']
['小刚', '小明', '小红']
['小明', '小红', '小刚']
# 移除(pop)又取又删
list1 = ['0','1','2','3']
print(list1.pop( )) #>> 3 #默认删除最后一个元素,并返回该元素的值。
print(list1) #>> ['0','1','2']
print(list1.pop(0)) #>> 0 #也可指定删除某个元素,并返回该元素的值。
print(list1) #>> [1','2']
list1 = ['0','1','2','3']
print(list1.pop( )) #>> 3 #默认删除最后一个元素,并返回该元素的值。
print(list1) #>> ['0','1','2']
print(list1.pop(0)) #>> 0 #也可指定删除某个元素,并返回该元素的值。
print(list1) #>> [1','2']
math.ceil()向上取整
import math是因为使用ceil()函数需要导入math模块
number = math.ceil(size * 80 / time)
bool()函数,来查看一个数据会被判断为真还是假
布尔运算
用数据做逻辑判断的过程叫布尔运算
python 中的真和假 (True 和 和 e False 是布尔值) )
假的
False
0
''(空字符串)
[](空列表)
{}(空字典)
None
其他都是真的
True
5(任意整数) 1.0(任意浮点数)
'苏东坡'(字符串)
[1,2,3]
{1:'春天',2:'秋天'}
布尔值有两种:True 或 False
第一种计算:两个数值做比较
#一共有六种比较方式:==、!=、>、<、>=、<=
print(3==3.0) #判断为 True
print('a'!='a') #判断为 False
print(3>5) #判断为 False
print(3<5) #判断为 True
print(100>=101) #判断为 False
print(100<=101) #判断为 True
print(3==3.0) #判断为 True
print('a'!='a') #判断为 False
print(3>5) #判断为 False
print(3<5) #判断为 True
print(100>=101) #判断为 False
print(100<=101) #判断为 True
第二种计算:直接用数值做运算
print(bool(False)) #判断为 False
print(bool(0)) #判断为 False
print(bool('')) #判断为 False
print(bool([])) #判断为 False
print(bool({})) #判断为 False
print(bool(None)) #判断为 False
12 / 26
print(bool(True)) #True
print(bool(5)) #True
print(bool('abc')) #True
print(bool([1,2])) #True
print(bool({1:1,2:2})) #True
print(bool(0)) #判断为 False
print(bool('')) #判断为 False
print(bool([])) #判断为 False
print(bool({})) #判断为 False
print(bool(None)) #判断为 False
12 / 26
print(bool(True)) #True
print(bool(5)) #True
print(bool('abc')) #True
print(bool([1,2])) #True
print(bool({1:1,2:2})) #True
第三种计算:布尔值之间的运算
一共有 5 种计算方式:and、or、not、in、not in
a = 1
b = -1
print(a==1 and b==1) #判断为假
print(a==1 or b==1) #判断为真
#not 计算会反转真假
a = True
print(not a) #判断为 False
#in 判断一个元素是否在一堆数据中
#not in 判断一个元素是否不在一堆数据中
a = [1,2,3,4,5]
print(0 in a) #判断为 False
print(1 in a) #判断为 True
print(0 not in a) #判断为 True
print(1 not in a) #判断为 False
b = -1
print(a==1 and b==1) #判断为假
print(a==1 or b==1) #判断为真
#not 计算会反转真假
a = True
print(not a) #判断为 False
#in 判断一个元素是否在一堆数据中
#not in 判断一个元素是否不在一堆数据中
a = [1,2,3,4,5]
print(0 in a) #判断为 False
print(1 in a) #判断为 True
print(0 not in a) #判断为 True
print(1 not in a) #判断为 False
extend( )#追加另一个序列中的多个值(用新列表扩展原来的列表)list3.extend( )
list3= [91, 95, 97, 99, 92, 93, 96, 98]
list3 =list1 #赋值新列表
list3.extend(list2) #追加另一个序列中的多个值(用新列表扩展原来的列表)
print(list3)
list3 =list1 #赋值新列表
list3.extend(list2) #追加另一个序列中的多个值(用新列表扩展原来的列表)
print(list3)
num1 = [1,2,3,4,5] # 想一想,如果用这个方法生成一个 1-100 的列表……
num2 = list(range(1,6))
print(num1) #>> [1,2,3,4,5]
print(num2) #>> [1,2,3,4,5]
# 知识 2:extend 的新用法
num2.extend(['ABCDE'])
24 / 26
num2.extend('ABCDE') # extend 后面是列表的话会将其合并,后面是字符串的话会将每个字符当成一
个列表中的元素。
print(num2) #>> [1,2,3,4,5,'ABCDE','A','B','C','D','E']
num2 = list(range(1,6))
print(num1) #>> [1,2,3,4,5]
print(num2) #>> [1,2,3,4,5]
# 知识 2:extend 的新用法
num2.extend(['ABCDE'])
24 / 26
num2.extend('ABCDE') # extend 后面是列表的话会将其合并,后面是字符串的话会将每个字符当成一
个列表中的元素。
print(num2) #>> [1,2,3,4,5,'ABCDE','A','B','C','D','E']
sort( )函数 #长久性降序排列 list3.sort( )
list3.sort() #降序排列 sort()函数
print(list3)
print(list3)
sorted()临时性排序函数
range ( ) 函数
计算生成一个整数序列
range(8)=01234567
range(1,8)=1234567
range(1,8,2)=2468
range(1,8)=1234567
range(1,8,2)=2468
for...in...语句遍历range()函数生成的整数序列
items() 函数
A={'绿色':1,'红色':2,'黄色':3}
for key,value in A.items():
#print(key)
#输出绿色,红色,黄色
print(value)
#输出1,2,3
for key,value in A.items():
#print(key)
#输出绿色,红色,黄色
print(value)
#输出1,2,3
index()函数
用于找出列表中某个元素第一次出现的索引位置。
语法为:list.index(obj),obj为object(对象)的缩写。
语法为:list.index(obj),obj为object(对象)的缩写。
isinstance( )函数,可以用来判断某个实例是否属于某个类。
print(isinstance(1,int))
# 判断1是否为整数类的实例
print(isinstance(1,str))
print(isinstance(1,(int,str)))
# 判断实例是否属于元组里几个类中的一个
# 判断1是否为整数类的实例
print(isinstance(1,str))
print(isinstance(1,(int,str)))
# 判断实例是否属于元组里几个类中的一个
write()函数
file1.write('张无忌\n')
open()函数
r
r 打开只读⽂件,该⽂件必须存在;
r+ 打开可读写的⽂件,该⽂件必须存在。
rb+ 读写打开⼀个⼆进制⽂件,只允许读写数据。
rt+ 读写打开⼀个⽂本⽂件,允许读和写
r+ 打开可读写的⽂件,该⽂件必须存在。
rb+ 读写打开⼀个⼆进制⽂件,只允许读写数据。
rt+ 读写打开⼀个⽂本⽂件,允许读和写
w
wb+ 读写打开或建立一个二进制文件,允许读和写。
w 打开只写文件
w+ 打开可读写文件
wb 只写打开或新建一个二进制文件;只允许写数据。
图片和音频是以二进制的形式保存
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或建立一个文本文件;允许读写。
a
at+ 读写打开1个文本文件,允许读或在文本末追加数据
ab+ 读写打开1个2进制文件,允许读或在文件末追加数据
a 以附加的方式打开只写文件
a+ 以附加的方式打开可读写的文件
with open...as
with open('abc.txt','a') as file1:
避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with
readlines(),也就是“按行读取”
split( )函数
把字符串分割
join()函数
把字符串合并的
join()的用法是str.join(sequence),str代表在这些字符串之中,你要用什么字符串连接
a=['c','a','t']
b=''
print(b.join(a))
c='-'
print(c.join(a))
b=''
print(b.join(a))
c='-'
print(c.join(a))
dir( )函数
import random # 调用random模块
print(dir(random))
a = '' # 设置一个字符串
print('字符串:')
print(dir(a)) # 把字符串相关的函数展示出来
a = [] # 设置一个列表
print('列表:')
print(dir(a)) # 把列表相关的函数展示出来
a = {} # 设置一个字典
print('字典:')
print(dir(a)) # 把字典相关的函数展示出来
print(dir(random))
a = '' # 设置一个字符串
print('字符串:')
print(dir(a)) # 把字符串相关的函数展示出来
a = [] # 设置一个列表
print('列表:')
print(dir(a)) # 把列表相关的函数展示出来
a = {} # 设置一个字典
print('字典:')
print(dir(a)) # 把字典相关的函数展示出来
调用函数
def ()定义函数
# menu()函数中,appetizer,course 为位置参数,默认按位置传递,也可自定义传递
# dessert=''为默认参数,默认传递,也可自定义传递
# *barbeque 为不定长参数,上述('烤鸡翅','烤茄子','烤玉米')为一个元组会整体传递给*barbeque
# 元组是可迭代对象,可以用 for 循环遍历
# 若无 return 语句,函数会返回空值(None),例如 print()
# 一旦函数内部遇到 return 语句,会停止执行并返回结果,后面的 return 无效
#加了两个星号 ** 的参数会以字典的形式导⼊
# dessert=''为默认参数,默认传递,也可自定义传递
# *barbeque 为不定长参数,上述('烤鸡翅','烤茄子','烤玉米')为一个元组会整体传递给*barbeque
# 元组是可迭代对象,可以用 for 循环遍历
# 若无 return 语句,函数会返回空值(None),例如 print()
# 一旦函数内部遇到 return 语句,会停止执行并返回结果,后面的 return 无效
#加了两个星号 ** 的参数会以字典的形式导⼊
def menu(appetizer,course,*barbeque,dessert='绿豆沙'):
print('一份开胃菜:'+appetizer)
print('一份主菜:'+course)
print('一份甜品:'+dessert)
for i in barbeque:
print('一份烤串:'+i)
menu('话梅花生','牛肉拉面','烤鸡翅','烤茄子','烤玉米')
print('一份开胃菜:'+appetizer)
print('一份主菜:'+course)
print('一份甜品:'+dessert)
for i in barbeque:
print('一份烤串:'+i)
menu('话梅花生','牛肉拉面','烤鸡翅','烤茄子','烤玉米')
def ()定义函数:例:def math(x):
y = x ** 2 + x
return y
a = math(10)
print(a)
y = x ** 2 + x
return y
a = math(10)
print(a)
变量作用域
guess = ''
定义变量 guess
quantity = 108 #这里的 quantity 是【全局变量】
def egg():
print(quantity) #函数内的局部作用域,可以访问全局变量
egg()
def egg():
print(quantity) #函数内的局部作用域,可以访问全局变量
egg()
global #【global 语句】可以将局部变量声明为全局变量
def egg():
global quantity #【global 语句】可以将局部变量声明为全局变量
quantity = 108 #这里的 quantity 是【局部变量】
egg()
print(quantity) #本来不能访问局部变量,但有 global 把他变为了全局变量
global quantity #【global 语句】可以将局部变量声明为全局变量
quantity = 108 #这里的 quantity 是【局部变量】
egg()
print(quantity) #本来不能访问局部变量,但有 global 把他变为了全局变量
作为函数内部的局部变量,从而可以为函数所用
条件判断
if
单向判断
如果..就..
if...else...
双向判断
如果..不满足...就..
if...elif...else...
多项判断
如果...不满足...就下一个...再下一个
elif需要if,可不接else
try…except…语句
当用户输错的时候会给予提示
try:
age = int(input('请输入一个整数:'))
except ValueError:
print('要输入整数噢')
age = int(input('请输入一个整数:'))
except ValueError:
print('要输入整数噢')
try下面可以包含多个except
循环
for 【工作量确定】
for i in range(5):
a = int(input('请输入0结束循环,你有5次机会:'))
if a == 0:
print('你触发了break语句,导致else语句不会生效。')
break
else:
print('5次循环你都错过了,else语句生效了。')
a = int(input('请输入0结束循环,你有5次机会:'))
if a == 0:
print('你触发了break语句,导致else语句不会生效。')
break
else:
print('5次循环你都错过了,else语句生效了。')
while【工作量不确定时】
用while True 开启了一个无限循环
while True常和break语句搭配使用,break表示结束循环,然后去执行循环外部的代码
while True:
print('上供一对童男童女')
t = input('孙悟空来了吗')
if t == '来了':
break
print('孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了')
print('上供一对童男童女')
t = input('孙悟空来了吗')
if t == '来了':
break
print('孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了')
触发continue语句,将跳过之后的代码,直接回到循环的开始。
pass语句什么都不做(常用在语句下)
pass # pass表示'跳过',不执行其他操作
else语句用在循环语句后,如果正常结束循环就执行else语句(没有遇到 break)
四种新语句
break# 从循环内跳出,必须和 if 语句连用
for i in range(5):
print('明日复明日')
if i==3: # 当 i 等于 3 的时候触发
break # 结束循环,实际打印 4 次
print('明日复明日')
if i==3: # 当 i 等于 3 的时候触发
break # 结束循环,实际打印 4 次
&
i = 0
while i<5:
print('明日复明日')
i = i+1
if i==3: # 当 i 等于 3 的时候触发
break # 结束循环,实际打印 3 次
while i<5:
print('明日复明日')
i = i+1
if i==3: # 当 i 等于 3 的时候触发
break # 结束循环,实际打印 3 次
&
while True: #开启一个无限循环
p = input('请输入你的密码:') #循环内部获取用户数据
if p == '小龙女': #直到用户输入正确密码
break #结束循环
print('通过啦')
p = input('请输入你的密码:') #循环内部获取用户数据
if p == '小龙女': #直到用户输入正确密码
break #结束循环
print('通过啦')
continue# 跳跃到循环开头,必须和 if 语句连用
# 搭配 for 循环
for i in range(5):
print('明日复明日')
if i==3: # 当 i 等于 3 的时候触发
continue # 回到循环开头
print('这句话在 i 等于 3 的时候打印不出来')
print('明日复明日')
if i==3: # 当 i 等于 3 的时候触发
continue # 回到循环开头
print('这句话在 i 等于 3 的时候打印不出来')
搭配 while 循环
i = 0
while i<5:
print('明日复明日')
i = i+1
if i==3: # 当 i 等于 3 的时候触发
continue # 回到循环开头
print('这句话在 i 等于 3 的时候打印不出来')
while i<5:
print('明日复明日')
i = i+1
if i==3: # 当 i 等于 3 的时候触发
continue # 回到循环开头
print('这句话在 i 等于 3 的时候打印不出来')
pass# 为跳过,什么也不做,常用在 if 语句下
a = int(input('请输入一个整数:'))
if a >= 100:
pass #如果输入的数字>=100,则直接跳过,什么也不做
else:
print('你输入了一个小于 100 的数字')
if a >= 100:
pass #如果输入的数字>=100,则直接跳过,什么也不做
else:
print('你输入了一个小于 100 的数字')
else 不但可以和 if 配合使用,也可以跟 for 循环 while 循环使用,正常结束未 break 则执行 else
for i in range(5):
a = int(input('请输入 0 来结束循环,你有 5 次机会:'))
if a == 0:
print('你触发了 break 语句,循环结束,导致 else 语句不会生效。')
break
else:
print('5 次循环你都错过了,else 语句生效了。')
a = int(input('请输入 0 来结束循环,你有 5 次机会:'))
if a == 0:
print('你触发了 break 语句,循环结束,导致 else 语句不会生效。')
break
else:
print('5 次循环你都错过了,else 语句生效了。')
山脚循环考试(山脚知识)
■考试试题:https://ks.wjx.top/jq/50779961.aspx
■考试试题:https://ks.wjx.top/jq/50779961.aspx
第10关
项目实操:PK小游戏
项目实操:PK小游戏
第11关
编程思维:如何debug
编程思维:如何debug
第12关
类与对象1
类与对象1
第13关
类与对象2
类与对象2
第14关
项目实操:PK小游戏
项目实操:PK小游戏
编程思维
面向对象编程
对象object
类的创建和调用
类的创建
创建类class Chinese:
类的第一个字母大写
创建属性eye='black'
创建方法
def eat(self):
print('吃饭用筷子')
print('吃饭用筷子')
类的调用
类的实例化:jan=Chinese()
实例调用类属性-实例.属性print (jan.eye)
实例调用类的方法-实例.方法jan.eat()
特殊方法
self
self的作用相当于先给实例占了个位置,等到实例创建好就“功成身退,退位让贤”
在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参)
在类的方法内部想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式
初始化方法(构造函数)
初始化方法 def __init__(self)
当每个实例对象创建时,该方法内的代码无须调用就会自动运行
__str__打印对象即可打印出该方法中的返回值,而无须再调用方法。
class Book:
def __init__(self, name, author, comment, state = 0):
self.name = name
self.author = author
self.comment = comment
self.state = state
def __str__(self):
if self.state == 0:
status = '未借出'
else:
status = '已借出'
return '名称:《%s》 作者:%s 推荐语:%s\n状态:%s ' % (self.name, self.author, self.comment, status)
book1 = Book('像自由一样美丽','林达','你要用光明来定义黑暗,用黑暗来定义光明')
# 传入参数,创建实例对象
print(book1)
# 直接打印对象即可,不能写成print(book1.__str__())
def __init__(self, name, author, comment, state = 0):
self.name = name
self.author = author
self.comment = comment
self.state = state
def __str__(self):
if self.state == 0:
status = '未借出'
else:
status = '已借出'
return '名称:《%s》 作者:%s 推荐语:%s\n状态:%s ' % (self.name, self.author, self.comment, status)
book1 = Book('像自由一样美丽','林达','你要用光明来定义黑暗,用黑暗来定义光明')
# 传入参数,创建实例对象
print(book1)
# 直接打印对象即可,不能写成print(book1.__str__())
类的继承和定制
继承
多层继承
class B(A)
class C(B)
class C(B)
class Cantonese(Chinese):
class Chinese:
eye = 'black'
def eat(self):
print('吃饭,选择用筷子。')
class Cantonese(Chinese):
pass # pass表示'跳过',不执行其他操作
yewen = Cantonese()
print(yewen.eye)
yewen.eat()
eye = 'black'
def eat(self):
print('吃饭,选择用筷子。')
class Cantonese(Chinese):
pass # pass表示'跳过',不执行其他操作
yewen = Cantonese()
print(yewen.eye)
yewen.eat()
多重继承
class C(A,B)
class C0:
name='c0'
class C2(C0):
num=2
class C1:
num=2
class C3:
name='c3'
pass
class C4(C1,C2,C3):
pass
end=C4()
print(C4.name)
print(C4.num)
name='c0'
class C2(C0):
num=2
class C1:
num=2
class C3:
name='c3'
pass
class C4(C1,C2,C3):
pass
end=C4()
print(C4.name)
print(C4.num)
定制
增加
class Chinese:
eye = 'black'
def eat(self):
print('吃饭,选择用筷子。')
class Cantonese(Chinese): # 类的继承
native_place = 'guangdong' # 类的定制
def dialect(self): # 类的定制
print('我们会讲广东话。')
yewen = Cantonese()
print(yewen.eye)
# 父类的属性能用
print(yewen.native_place)
# 子类的定制属性也能用
yewen.eat()
# 父类的方法能用
yewen.dialect()
# 子类的定制方法也能用
eye = 'black'
def eat(self):
print('吃饭,选择用筷子。')
class Cantonese(Chinese): # 类的继承
native_place = 'guangdong' # 类的定制
def dialect(self): # 类的定制
print('我们会讲广东话。')
yewen = Cantonese()
print(yewen.eye)
# 父类的属性能用
print(yewen.native_place)
# 子类的定制属性也能用
yewen.eat()
# 父类的方法能用
yewen.dialect()
# 子类的定制方法也能用
重写
class Chinese:
def land_area(self,area):
print('我们居住的地方,陆地面积是%d万平方公里左右。'% area)
class Cantonese(Chinese):
# 间接对方法进行重写
def land_area(self, area, rate = 0.0188):
Chinese.land_area(self, area * rate)
# 直接继承父类方法,再调整参数。
gonger = Chinese()
yewen = Cantonese()
gonger.land_area(960)
yewen.land_area(960)
def land_area(self,area):
print('我们居住的地方,陆地面积是%d万平方公里左右。'% area)
class Cantonese(Chinese):
# 间接对方法进行重写
def land_area(self, area, rate = 0.0188):
Chinese.land_area(self, area * rate)
# 直接继承父类方法,再调整参数。
gonger = Chinese()
yewen = Cantonese()
gonger.land_area(960)
yewen.land_area(960)
面向过程编程
第15关
编码和文件读写
编码和文件读写
第16关
模块
模块
第17关
项目实操:收发邮件
项目实操:收发邮件
第18关
编程思维:产品思维
编程思维:产品思维
第19关
项目实操:毕业项目
项目实操:毕业项目
编码和文件读写
编码
二进制
用来存放一位0或1,就是计算机里最小的存储单位,叫做【位】,也叫【比特】(bit)
规定8个比特构成一个【字节】(byte),这是计算机里最常用的单位。
编码encode()
你想编码的内容.encode(你使用的编码表)
'吴枫'.encode('utf-8')
解码decode()
你想解码的内容.decode(你使用的编码表)
b'\xe5\x90\xb4\xe6\x9e\xab'.decode('utf-8')
文件读写
读
file1 = open('/Users/Ted/Desktop/test/abc.txt','r',encoding='utf-8')
filecontent = file1.read()
print(filecontent)
file1.close()
filecontent = file1.read()
print(filecontent)
file1.close()
写
file1 = open('abc.txt','a')
file1.write('张无忌')
file1.close()
file1.write('张无忌')
file1.close()
with open('photo2.png','rb') as file: # 以“rb”模式打开图片
data = file.read()
with open('photo3.png','wb') as newfile: # 以“wb”模式写入
newfile.write(data)
data = file.read()
with open('photo3.png','wb') as newfile: # 以“wb”模式写入
newfile.write(data)
模块.py
封装
定义变量需要用赋值语句
封装函数需要用def语句
封装类需要用class语句
建立模块,使用import语句导入其他py文件
import语句
import…as…。比如我们觉得import story太长,就可以用import story as s语句,意思是为“story”取个别名为“s”
import a,b,c可以同时导入“a.py,b.py,c.py”三个文件
from … import …语句可以让你从模块中导入一个指定的部分到当前模块
从模块中同时导入多个指定内容,也可以用逗号隔开,写成from xx模块 import a,b,c的形式
from test import a,hi,Go2
从模块中指定所有内容直接使用时,可以写成【from xx模块 import *】
*代表“模块中所有的变量、函数、类
if __name__ == '__main__'
程序入口
调用模块
下载安装的方式是打开终端,Windows用户输入pip install + 模块名;苹果电脑输入:pip3 install + 模块名,点击enter即可。
(需要预装python解释器和pip)
(需要预装python解释器和pip)
Python内置模块
time模块
time.sleep(secs)延时函数
time.sleep(1)停顿1s
import time #通常import语句会写到代码的开头
time.sleep(secs)
time.sleep(secs)
random模块
import random
使用randint()函数(随机整数)需要导入random模块
random.randint(n,m)随机生成一个数字, 表示随机从n-m之间抽取一个整数
import random #调用random模块
print(random.randint(0,9)) #打印randint随机函数
print(random.randint(0,9)) #打印randint随机函数
a = random.choice(luckylist)# 在中奖名单里面随机选择
import random # 调用random模块
a = random.random() # 随机从0-1之间抽取一个小数
print(a)
a = random.randint(0,100) # 随机从0-100之间抽取一个数字
print(a)
a = random.choice('abcdefg') # 随机从字符串/列表/字典等对象中抽取一个元素(可能会重复)
print(a)
a = random.sample('abcdefg', 3) # 随机从字符串/列表/字典等对象中抽取多个不重复的元素
print(a)
items = [1, 2, 3, 4, 5, 6] # “随机洗牌”,比如打乱列表
random.shuffle(items)
print(items)
a = random.random() # 随机从0-1之间抽取一个小数
print(a)
a = random.randint(0,100) # 随机从0-100之间抽取一个数字
print(a)
a = random.choice('abcdefg') # 随机从字符串/列表/字典等对象中抽取一个元素(可能会重复)
print(a)
a = random.sample('abcdefg', 3) # 随机从字符串/列表/字典等对象中抽取多个不重复的元素
print(a)
items = [1, 2, 3, 4, 5, 6] # “随机洗牌”,比如打乱列表
random.shuffle(items)
print(items)
csv
import csv
# dir()函数会得到一个列表,用for循环一行行打印列表比较直观
for i in dir(csv):
print(i)
# dir()函数会得到一个列表,用for循环一行行打印列表比较直观
for i in dir(csv):
print(i)
csv模块的官方英文教程https://docs.python.org/3.6/library/csv.html
中文教程:https://yiyibooks.cn/xx/python_352/library/csv.html#module-csv
smtplib,email这两个模块
smtplib是用来发送邮件用的
email是用来构建邮件内容的
MyQR
调用他人模块
爬虫时我们会需要用到requests这个库
数据分析需要用到pandas和NumPy模块
import numpy as np
将np代替numpy,numpy是一个用于科学计算的python外接库,在本地运行需要下载
网页开发要用到Django模块
项目
群发邮件
smtplib,email这两个模块
变量
变量名为writer实例:writer = csv.writer(x),然后使用writer.writerow(列表)就可以给csv文件写入一行列表中的内容。
常见报错类型
python异常处理教程:https://www.runoob.com/python/python-exceptions.html
跳出whileTrue死循环的方法
ctrl+c
TabError: Tab 和空格混用
IndentationError:缩进错误
TypeError:类型错误
AttributeError:属性错误
NameError:试图访问的变量名不存在
SyntaxError:语法错误,代码形式错误
KeyError:在读取字典中的key和value时如果key不存在,就会触发KeyError错误
IndexError:索引错误,使用的索引不存在,常索引超出序列范围,序列中没有此
索引(index)
索引(index)
ZeroDivisionError: division by zero
0不可以做除数
课程学习网站www.pypypy.cn
Python+ Vscode 安装
## windows版本
https://shimo.im/docs/xiMGi8FDVSkZG8cb/
## Mac os版本
https://shimo.im/docs/OqyxMRZU16InMIW0/
## windows版本
https://shimo.im/docs/xiMGi8FDVSkZG8cb/
## Mac os版本
https://shimo.im/docs/OqyxMRZU16InMIW0/
CSDN:https:// www.csdn.net/
Github:https://github.com/
微信公众号:量子位
Github:https://github.com/
微信公众号:量子位
英文变量名:CODELF(https://unbug.github.io/codelf)
get小技巧
Ctrl+c断开循环
全选+tab——全部缩进;全选+shift+tab——全部缩回;
模块http://c.biancheng.net/view/2420.html
安装
《VSCode使用操作指南(推荐)》https://shimo.im/docs/2qgQUZ0ccXUTCD30/
Win系统
"配合文档和视频安装#需严格按照流程进行安装
安装视频:https://static.pandateacher.com//staicinstall%20vscode_windows.mp4
安装文档:https://shimo.im/docs/uBhomGsSi4EgYgSf/ 《windows安装》"
"配合文档和视频安装#需严格按照流程进行安装
安装视频:https://static.pandateacher.com//staicinstall%20vscode_windows.mp4
安装文档:https://shimo.im/docs/uBhomGsSi4EgYgSf/ 《windows安装》"
案例
应用
乘法口诀表
for i in range(1,10):
for j in range(1,i+1):
print( '%d X %d = %d' % (j,i,i*j),end = ' ' )
print(' ')
for j in range(1,i+1):
print( '%d X %d = %d' % (j,i,i*j),end = ' ' )
print(' ')
i = 1
while i <= 9:
j = 1
while j <= i:
print('%d X %d = %d' % (j,i,i*j),end = ' ')
j += 1
print('')
i += 1
while i <= 9:
j = 1
while j <= i:
print('%d X %d = %d' % (j,i,i*j),end = ' ')
j += 1
print('')
i += 1
识数
n = 0
while n < 7: ####1,2,3,4,5,6,7
n = n+1
if n != 4: # 当num != 4,执行打印语句;等于4时不打印。
print(n)
while n < 7: ####1,2,3,4,5,6,7
n = n+1
if n != 4: # 当num != 4,执行打印语句;等于4时不打印。
print(n)
&
for num in range(1,8): # 为同时能运行两个循环,新取参数 num。
if num != 4: # 当num != 4,执行打印语句;等于4时不打印。
print(num)
if num != 4: # 当num != 4,执行打印语句;等于4时不打印。
print(num)
猜大小
'''
一个人在心里想好一个数,比如 24,然后让另一个人猜。如果他猜的数比 24 小,告诉他“太小了”,
如果他猜的数比 24 大,告诉他“太大了”,这个游戏只能猜 3 次,3 次都猜不中,就告诉他“失败了”。
'''
secret = 24
for i in range(3): #3 次机会开启 3 次循环
guess = input('guess which number is my secret:')
if int(guess) ==secret:
print('正确!你很棒哦。') #若猜对输出结果
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')
else:
print('给你 3 次机会都猜不到,你失败了。') #3 次机会都失败则执行 else
一个人在心里想好一个数,比如 24,然后让另一个人猜。如果他猜的数比 24 小,告诉他“太小了”,
如果他猜的数比 24 大,告诉他“太大了”,这个游戏只能猜 3 次,3 次都猜不中,就告诉他“失败了”。
'''
secret = 24
for i in range(3): #3 次机会开启 3 次循环
guess = input('guess which number is my secret:')
if int(guess) ==secret:
print('正确!你很棒哦。') #若猜对输出结果
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')
else:
print('给你 3 次机会都猜不到,你失败了。') #3 次机会都失败则执行 else
secret = 24 #设定秘密数字
while True:
guess = input('你来猜猜我的秘密数字是多少:')
if int(guess)==secret: #数字对比
print('正确!你很棒哦。')
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')
while True:
guess = input('你来猜猜我的秘密数字是多少:')
if int(guess)==secret: #数字对比
print('正确!你很棒哦。')
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')
&
secret = 24
for i in range(3):
guess = input('guess which number is my secret:')
if int(guess) ==secret:
print('正确!你很棒哦。') #输出结果
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')
else:
print('给你3次机会都猜不到,你失败了。')
for i in range(3):
guess = input('guess which number is my secret:')
if int(guess) ==secret:
print('正确!你很棒哦。') #输出结果
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')
else:
print('给你3次机会都猜不到,你失败了。')
人事奖金
def bonus(month):
if month<6:
money=500
return money
elif 6<=month<=12:
money=120*month
return money
else:
money=180*month
return money
def info(name,month):
print('%s来了%s个月,获得奖金%s元'%(name,month,bonus(month)))
info('大聪',70)
if month<6:
money=500
return money
elif 6<=month<=12:
money=120*month
return money
else:
money=180*month
return money
def info(name,month):
print('%s来了%s个月,获得奖金%s元'%(name,month,bonus(month)))
info('大聪',70)
密码3次机会
n=0
while n<3:
username = input("请输入用户名:")
password = input("请输入密码:")
if username == 'abc' and password == '123':
print("登录成功")
break
else:
n=n+1
print("输入有误")
else:
print("你输错了三次,登录失败")
while n<3:
username = input("请输入用户名:")
password = input("请输入密码:")
if username == 'abc' and password == '123':
print("登录成功")
break
else:
n=n+1
print("输入有误")
else:
print("你输错了三次,登录失败")
game案例
https://github.com/CharlesPikachu/Games/tree/master/Game4
模块案例
a = '我是模块中的变量a'
def hi():
a = '我是函数里的变量a'
print('函数“hi”已经运行!')
class Go2:
a = '我是类2中的变量a'
def do2(self):
print('函数“do2”已经运行!')
print(a) # 打印变量“a”
hi() # 调用函数“hi”
A = Go2() # 实例化“Go2”类
print(A.a) # 打印实例属性“a”
A.do2() # 调用实例方法“do2”
def hi():
a = '我是函数里的变量a'
print('函数“hi”已经运行!')
class Go2:
a = '我是类2中的变量a'
def do2(self):
print('函数“do2”已经运行!')
print(a) # 打印变量“a”
hi() # 调用函数“hi”
A = Go2() # 实例化“Go2”类
print(A.a) # 打印实例属性“a”
A.do2() # 调用实例方法“do2”
=
# 这是主程序main.py
# 请阅读代码注释
import test # 导入test模块
print(test.a) # 使用“模块.变量”调用模块中的变量
test.hi() # 使用“模块.函数()”调用模块中的函数
A = test.Go2() # 使用“变量 = 模块.类()”实例化模块中的类
print(A.a) # 实例化后,不再需要“模块.”
A.do2() # 实例化后,不再需要“模块.”
# 请阅读代码注释
import test # 导入test模块
print(test.a) # 使用“模块.变量”调用模块中的变量
test.hi() # 使用“模块.函数()”调用模块中的函数
A = test.Go2() # 使用“变量 = 模块.类()”实例化模块中的类
print(A.a) # 实例化后,不再需要“模块.”
A.do2() # 实例化后,不再需要“模块.”
0 条评论
下一页