文件=>设置=>外观与行为=>外观=>主题
设置=>编辑器=>字体=>大小
设置=>编辑器=>常规=>使用滚轮=>所有编辑器
设置=>插件=>Marketplace
xxxxxxxxxx21print("Hello World")2print("Hello Python")
print函数执行后,默认输出后是换行,如果不想换行可以添加参数 end = “”
xxxxxxxxxx111print("张三")2print("年龄是18岁")3# 运行结果 4# 张三5# 年龄是18岁6
7print("张三",end="")8print("年龄是18岁")9
10# 运行结果11# 张三年龄是18岁
print可以打印多个数据
xxxxxxxxxx71a = 1002b = 2003c = 3004print(a ,b ,c) 5
6# 运行结果7#100 200 300
单行注释 一行的前面加上#
多行注释 用 """ """ 或者 ''' '''
添加说明的时候
将指定代码的功能取消,使其不在代码中生效
选中需要注释的内容 然后输入组合键 ctrl + /
简单理解 为一些自定义的数据起的名字
xxxxxxxxxx71# 1.只能有数字,字母,_(下划线)组成2# 2.不能以数字开头3# 3.不能是关键字4# 4.区分大小写5
6# 下划线 first_name7# 驼峰命名法 单驼峰firstName 双驼峰FirstName
xxxxxxxxxx121# 算数运算符 + - * /2print(100+11000)3print(100-11000)4print(3*6)5print(10/6)6
7# 取整除 两个整数相除后,取整数部分 //8print(10//6)9# 取余数 两个整数相除后,取结果的余数部分 %10print(10%6)11# 乘方 计算a的b次方 **12print(2**10)
比较运算是发生在两个同类型数据间的一种操作,比较运算是对两个数据通过比较运算符进行比对,如果比较运算结果成立得到结果True,如果不成立,得到结果False
| 符号 | 说明 |
|---|---|
| = = | 判断两个操作数的值是否相等,成立为True |
| ! = | 判断两个操作数的值是否不相等,成立为True |
| > | 判断左操作数是否大于右操作数,成立为True |
| < | 判断左操作数是否小于右操作数,成立为True |
| > = | 判断左操作数是否大于等于右操作数,成立为True |
| < = | 判断左操作数是否小于等于右操作数,成立为True |
xxxxxxxxxx261a = 32b = 53# 比较两个变量大小 大于号> 小于<4a<b # 成立 返回True #判断左边的值是否小于右边的值,成立True,返回False5a>b # 不成立 返回False #判断左边的值是否大于右边的值,成立True,返回False6
7
8a = 19b = 310# >= 大于或等于 <=小于或等于11a<=b # 成立 返回True #判断左边的值是否小于等于右边的值,成立True,返回False12a>=b # 不成立 返回False #判断左边的值是否大于等于右边的值,成立True,返回False13
14# 你出去买东西,想买一个苹果笔记本 999915# money == 9999 money > 999916
17# ==18# 判断两个值是否相等 相等返回True 不相等返回False19a = 520b = 621# a == b 返回False22
23# !=24a = 525b = 626# a != b 返回True
xxxxxxxxxx41常见的逻辑运算符有三个 and or not2and 条件必须同时满足才为真,并且的意思3or 只要有一个条件满足就为真,是或的意思4not 取反对立
xxxxxxxxxx151# and2# 两门成绩都能考到80分以上,就买苹果笔记本3score1 = 824score2 = 855print(score1 > 80 and score2 > 80) # True6
7# or8# 两门成绩,只要有一门成绩不及格,被挨揍9score1 = 8210score2 = 5811print(score1 < 60 or score2 < 60) # True12
13# not14# 取相反的结果15print(not 20 > 10) # False
变量用于描述计算机中的数据存储空间
在计算机中运行的程序中保存数据
定义变量 变量名 = 值
使用变量 变量名
xxxxxxxxxx191name = "张三"2name = "小明"3print(name)4
5x = 106print(x)7x = 1008print(x)9x = 100010print(x)11
12a = 10013a = a + 20014print(a)15
16name1 = "张三"17name2 = "李四"18name2 = name119print(name2)
int 整型,str字符串,float浮点型, bool布尔型,列表 list,元组 tuple,字典 dict,集合set
xxxxxxxxxx161# 变量类型2# int类型 整型 表示所有的整数3num = 104print(type(num))5
6# str类型 字符串 表示字符串信息7name ="张三"8print(type(name))9
10# float类型 浮点型 表示所有小数11price = 9.912print(type(price))13
14# bool类型 布尔型 表示逻辑值 True False15correct = False16print(type(correct))得到变量的类型
xxxxxxxxxx21numType = type(num)2print(numType)
| 符号 | 作用 | 格式 |
|---|---|---|
| = | 赋值 | a=b,将b的值给a |
| += | 加后赋值 | a+=b,将a+b的值给a |
| -= | 减后赋值 | a-=b,将a-b的值给a |
| *= | 乘后赋值 | a*=b,将a*b的值给a |
| /= | 除后赋值 | a/=b,将a/b的值给a |
| //= | 整除后赋值 | a//=b,将a//b的值给a |
| %= | 取余后赋值 | a%=b,将a%b的值给a |
xxxxxxxxxx161x = 02x = x + 1 # 等价于 x+=13print(x)4
5y = 06y += 17print(y)8
9# -= 10z = 1011z -= 512print(z)13
14a1 = 215a1 = a1 ** 3 #等价于 a1**=316print(a1)
常用转换包含 :
转换为字符串str
转换为整型 int
转换为浮点型 float
xxxxxxxxxx121# 转换为字符串的函数 str2a = 103print(type(a))4
5# 转换为整数的函数 int6b = str(a)7print(type(b))8
9# 转换为浮点的函数 float10num = 10011f_num = float(num)12print(type(f_num))
单个占位符格式化字符串
“包含1个占位符的格式化字符串” % 变量
多个占位符格式化字符串
“包含多个占位符的格式化字符串” % (变量1,变量2,…)
占位符包括:
%d整数 %s字符串 %f 浮点型 %.4f 4代表取小数点4位
注:s%可以通用
xxxxxxxxxx321
2# 单个占位符字符串的信息3# “包含1个占位符的格式化字符串” % 变量 4
5# 多个占位符字符串的信息6# “包含多个占位符的格式化字符串” % (变量1,变量2,…)7
8age = 189name = "王大锤"10
11# 1个占位符的情况12
13# 字符串14str1 = "我的名字叫%s" % name15
16# 整型 %d %s 都可以,占位符 %s 可以通用17str2 = "我的年龄是%d岁" % age18str3 = "我的年龄是%s岁" % age19
20# 多个占位符的情况21str4 = "我的名字叫%s,我的年龄是%s岁" % (name,age)22
23address = "周口"24num = 325game = "王者荣耀"26str5 = "我的家住在%s,我有%s个死党,我喜欢玩%s游戏" % (address,num,game)27
28
29# 浮点型 占位符 %f 或 %s %.2f 保留两位小数30price = 9.931print("我买的商品价格为%.1f元" % price)32print("我买的商品价格为%s元" % price)
xxxxxxxxxx101# f格式化字符串2name = "王大锤"3age = 284dream = "迎娶白富美,走上人生巅峰"5# 我叫xx,今年xx岁,我的梦想是xx6print(f"我的名字叫{name},今年{age}岁,我的梦想是{dream}")7
8pi = 3.14159269# .2f表示保留两位小数10print(f"结果为{pi:.2f}") # 结果为3.14
接受键盘上的输入信息,然后赋值给变量
input函数接收的数据默认为字符串类型
xxxxxxxxxx181# 接受键盘上的输入信息2name = input("请输入您的名字")3print(name)4
5num = input("请你输入一个数")6print(num)7print(type(num))8
9name = input("请输入姓名")10age = input("请输入年龄")11tel = input("请输入电话")12
13# 第一种14print("我的名字叫%s,年龄是%s岁,电话是%s"%(name,age,tel))15
16age = int(age)17tel = int(tel)18print("我的名字叫%s,年龄是%d岁,电话是%d"%(name,age,tel))
xxxxxxxxxx181# 请输入三角形三个边长,求打印出三角形的周长是都多少2# 要求分三次输入,输入提示有 “输入第一个边 输入第二个边 输入第三个边”3# 输出必须是"三角形的周长是xx"4a = input("输入第一个边")5b = input("输入第二个边")6c = input("输入第三个边")7sum = int(a) + int(b) + int(c)8print("三角形的周长是%d"%sum)9
10# split()默认以空格为分割11a,b,c = input("输入三个边").split()12sum = int(a) + int(b) + int(c)13print("三角形的周长是%d"%sum)14
15# 还能自定义分割字符16a,b,c = input("输入三个边").split(",")17sum = int(a) + int(b) + int(c)18print("三角形的周长是%d"%sum)
用于描述“如果满足什么条件,就怎么样,否则就怎么样”的语法。
xxxxxxxxxx21# 格式 if 条件判断:2# 条件成立执行代码xxxxxxxxxx61score = 60 #我的考试得分2if score <= 60:3 print("被爸爸揍了一顿")4
5if score > 90:6 print("爸爸奖励我一个苹果笔记本")
xxxxxxxxxx51# 格式2# if 条件判断:3# 条件成立执行代码4# else:5# 条件不成立执行的代码xxxxxxxxxx51score = int(input("我考试的分数"))2 if score < 60:3 print("被爸爸揍了一顿")4 else:5 print("爸爸给我多买个馒头")
xxxxxxxxxx101#格式2# if 条件1判断:3# 条件1成立执行代码4# elif 条件2判断:5# 条件2成立执行代码6# elif 条件3判断:7# 条件3成立执行代码8# ....9# else:10# 条件都不成立执行的代码xxxxxxxxxx141# 根据考试分数,爸爸给与的奖励2score = int(input("我考试的分数"))3if score < 30:4 print("被爸爸揍了三顿")5elif score >=30 and score < 50:6 print("被爸爸揍了两顿")7elif score >=50 and score < 60:8 print("被爸爸揍了一顿")9elif score >= 60 and score < 80:10 print("爸爸给我多买一个馒头")11elif score >= 80 and score < 90:12 print("爸爸给我多买两个馒头")13else:14 print("爸爸给我买个烧鸡")
xxxxxxxxxx211# if嵌套是 if语句中又加了if语句2# if层级关系 通过tab键缩进来表示的3score = int(input("我考试的分数"))4# 爸爸是否比较忙5busy = False6# 爸爸的钱包的钱7money = 100008if score < 60:9 if busy:10 print("爸爸以后再揍我")11 else:12 print("被爸爸揍了一顿")13elif score >= 70 and score < 90:14 print("爸爸给我多买一个馒头")15elif score >= 90:16 if not busy and money >= 9999:17 print("爸爸给我买个苹果笔记本")18 else:19 print("爸爸给我多买两个馒头")20else:21 print("爸爸不揍你,也不奖励你")
xxxxxxxxxx241# 京东买商品,价格满1000可以减去100,价格满500减50,价格满300减去202# “输入你要买的价格”,打印出 “商品满减之后的价格是多少”3
4# 第一种写法5price = int(input("输入你要买的价格"))6if price >= 1000:7 print("商品满减之后的价格是%d"%(price-100))8elif price >=500 and price < 1000:9 print("商品满减之后的价格是%d"%(price-50))10elif price >=300 and price < 500:11 print("商品满减之后的价格是%d"%(price-20))12else:13 print("商品价格是%d"%price)14
15# 第二种写法 判断条件的顺序不能改变16price = int(input("输入你要买的价格"))17if price >= 1000:18 print("商品满减之后的价格是%d"%(price-100))19elif price >= 500:20 print("商品满减之后的价格是%d"%(price-50))21elif price >= 300:22 print("商品满减之后的价格是%d"%(price-20))23else:24 print("商品价格是%d"%price)
是程序中反复执行的某些代码的过程
重复执行某些代码
xxxxxxxxxx21# while 条件:2# 执行的语句
xxxxxxxxxx131# 循环5次的第一种写法 2# 循环从0开始 0 1 2 3 43num = 04while num < 5:5 print(num)6 num = num + 17
8# 循环5次的第二种写法9# 循环从1开始 1 2 3 4 510num = 111while num <= 5:12 print(num)13 num = num + 1
xxxxxxxxxx11for n in range(开始值,结束值,步长)
n每次循环增加步长,默认步长为1
n的值包含开始值 不包含结束值
xxxxxxxxxx111# 循环从0开始 0 1 2 3 4 2for n in range(0,5):3 print(n)4 5# 循环从1开始 1 2 3 4 56for n in range(1,6):7 print(n)8
9# 步长为2 1 3 510for n in range(1,6,2):11 print(n)
xxxxxxxxxx21range(0,5) # 相当于生成了0 1 2 3 4 这5个数2range(1,6) # 相当于生成了1 2 3 4 5 这5个数
xxxxxxxxxx51for n in range(1,10):2 if n > 5:3 print("满足条件的数是 %d"%n)4 else:5 print("不满足条件的数是 %d"%n)
跳出本次循环,终止本次循环的意思
xxxxxxxxxx71# while 条件:2# if 跳出循环的条件:3# break4
5# for n in range(开始值,结束值):6# if 跳出循环的条件7# break
xxxxxxxxxx91# 跑5圈 n = 1 2 3 4 52for n in range(1,6):3 print("跑的圈数%d"%n)4
5 if n == 3:6 print("我晕倒了,跑不动了")7 break8
9print("操场跑圈结束")xxxxxxxxxx81# 看5次电影 n = 1 2 3 4 52for n in range(1,6):3 print("看电影%d次"%n)4 if n == 3:5 print("实在不想看了")6 break7
8print("看电影结束")
xxxxxxxxxx11不执行本次循环中continue后边的代码
xxxxxxxxxx91# while 条件:2# if 跳过的条件:3# continue4# 执行语句(当continue执行后,后边的语句不会再执行)5
6# for n in range(开始值,结束值):7# if 跳过的条件:8# continue9# 执行语句(当continue执行后,后边的语句不会再执行)
xxxxxxxxxx61# 看50集电视剧 跳过第10集到16集2for n in range(1,51):3 if n >= 10 and n <=16:4 continue5 print("看的集数为%d集"%n)6
xxxxxxxxxx51# 用循环打印10(包含10)以内的数,要求3到5用continue跳过2for n in range(1,11):3 if n >= 3 and n<=5:4 continue5 print(n)
xxxxxxxxxx11循环中又包含了另外一个循环xxxxxxxxxx171# 循环中又包含了另外一个循环2while 条件:3 while 条件:4 执行的代码5
6for n in range(开始值,结束值)7 for m in range(开始值,结束值)8 执行的代码9 10while 条件:11 for m in range(开始值,结束值)12 执行的代码13 14for n in range(开始值,结束值)15 while 条件:16 执行的代码 17 xxxxxxxxxx261# 王老师让我们上来做题 班上总共有五排 四列的座位,人数已经坐满2# 一排开始 1 2 3 43# 二排开始 1 2 3 44# 三排开始 1 2 3 45# 四排开始 1 2 3 46# 五排开始 1 2 3 47
8# #第一排人编号9# for n in range(1,5):10# print(n)11#12# #第二排人编号13# for n in range(1,5):14# print(n)15#16# #第三排人编号17# for n in range(1,5):18# print(n)19#20# #第四排人编号21# for n in range(1,5):22# print(n)23#24# #第五排人编号25# for n in range(1,5):26# print(n)xxxxxxxxxx31for m in range(1,6):2 for n in range(1,5):3 print("王老师让第%d排第%d个人上来做题"%(m,n))
xxxxxxxxxx441# 打印5行5列的*的字符2
3*****4*****5*****6*****7*****8
9for m in range(1,6):10 for n in range(1,6):11 print("*",end="")12 print()13
14 15#打印以下图形16
17*18**19***20****21*****22
23#发现规律,内循环的次数和当前行数是相等的,24#当前为第几行就循环几次25
26 for m in range(1,6):27 for n in range(1,m+1):28 print("*", end="")29 print()30
31
32#2.输出以下显示33
34**35***36****37*****38******39
40#发现规律每一行的#个数都比当前行数大1的图形41 for m in range(1,6):42 for n in range(1,m+2):43 print("*", end="")44 print()
xxxxxxxxxx171# 初始打印2for m in range(1, 10):3 for n in range(1, m + 1):4 print("*", end=" ")5 print()6
7# 框架打印8for m in range(1, 10):9 for n in range(1, m + 1):10 print("1*1=1", end=" ")11 print()12
13# 最终打印14for m in range(1, 10):15 for n in range(1, m + 1):16 print("%d*%d=%d" % (m, n, m * n), end=" ")17 print()
变量名 = "字符串信息"
变量名 = ‘字符串信息’
xxxxxxxxxx21name = "张三"2address = "河南省张家村大王路108号"
切片
就是指获取字符串中的某一部分,形成一个新的字符串
切片的格式
字符串[开始索引:结束索引]
字符串[开始索引:结束索引:步长]
注意:开始索引从0开始 结束索引不包含当前索引值
xxxxxxxxxx181newName = name[1]2newAddress = address[3:9]3print(newName)4print(newAddress)5# 求address地址的字符的个数6print(len(address))7print(len(name))8
9# 开始索引从0开始 不包含结束索引10address = "河南省周口市川汇区张家村大王路108号"11# 要求用 切片格式 字符串[开始索引:结束索引]12
13# 打印出 "周口市"14print(address[3:6])15# 打印出 “张家村”16print(address[9:12])17# 打印出这句字符的个数18print(len(address))
格式
字符串1 in 字符串2
用法
判断字符是否在另一个字符内 字符串1 in 字符串2
xxxxxxxxxx81# str1 = "周口市"2# str2 = "河南省周口市"3# print(str1 in str2)4
5# 判断 字符串1 “王老师” 是否在字符串2 “王老师喜欢吃肉”6 print(“王老师” in “王老师喜欢吃肉”)7# 判断 字符串1 "王者荣耀" 是否在字符串2 "我喜欢玩英雄联盟"8 print(“王者荣耀” in “我喜欢玩英雄联盟”)
字符串1 not in 字符串2
xxxxxxxxxx91# #判断字符是否不在另一个字符内 2# str3 = "张1"3# str4 = "张三丰"4# print(str3 not in str4)5
6# 判断 字符串1 “王老师” 是否在字符串2 “王老师喜欢吃肉”7 print(“王老师” not in “王老师喜欢吃肉”)8# 判断 字符串1 "王者荣耀" 是否在字符串2 "我喜欢玩英雄联盟"9 print(“王者荣耀” not in “我喜欢玩英雄联盟”)
返回字符串的个数
格式 len("字符串")
xxxxxxxxxx31name = "我的名字叫王大锤"2# 打印出这句字符的个数3print(len(name))
xxxxxxxxxx51# strip 去掉字符串左右两边的空格 lstrip 去左空格 rstrip去右空格2str1 = " 王老师打豆豆 "3print(str1.strip())4print(str1.lstrip())5print(str1.rstrip())
split (参数)
把当前字符串拆散 拆成 参数左边,参数右边
xxxxxxxxxx71# 把当前字符串拆散 拆成 参数左边,参数右边2strA = "hello python"3print(strA.split("o")) #['hell', ' pyth', 'n']4
5# 拆分的参数 “,”,拆成三个字符串6strB = "我叫王大锤,今年18岁,喜欢看电影"7print(strB.split(",")) # ['我叫王大锤', '今年18岁', '喜欢看电影']
str1+str2 连接两个字符串
xxxxxxxxxx171# 连接 str1+str2 连接两个字符串 join(str)填充2str1 = "王老师"3str2 = "吃饭喝茶打豆豆"4str3 = "看电视剧"5
6# print(str1 + str2)7# print(str1 + str3)8
9# join 把str2填充到字符串str1中10str1 = "我要吃饭"11str2 = "!"12print(str2.join(str1)) # 我!要!吃!饭13
14# join 把列表listA中的数据取出来,并且以str2连接数据15listA = ["刘备","关羽","张飞"]16str2 = "!"17print(str2.join(listA)) # 刘备!关羽!张飞
查找 find("字符串")
格式 find("字符串",开始查找位置,结束查找位置)
找到了返回第一个匹配字符串的索引,找不到返回 -1
xxxxxxxxxx21str1 = "吃饭的时候碰见王老师了,王老师吃完回去了"2print(str1.find("王老师"))
替换 replace(被替换的字串,新字串,替换数量)
xxxxxxxxxx21str1 = "王老师吃饭,王老师看电视,王老师打豆豆"2print(str1.replace("王老师", "张老师", 3))
是一种有序的,可变的,可存储不同数据类型的结构
xxxxxxxxxx131# 索引 0 1 22# 变量名 = [数据1,数据2,数据3,...]3
4# 获取列表数据5# 列表名[索引]6
7# 可以存储不同的数据类型8listA = ["小明","小红",666,9.9,True]9
10# 举例11# 刘备,关羽,张飞排队打饭12# 0 1 213listA = ["刘备","关羽","张飞"]
按索引取出数据
xxxxxxxxxx41listA = ["刘备","关羽","张飞"]2print(listA[0]) # 刘备3print(listA[1]) # 关羽4print(listA[2]) # 张飞
对查询的结果进行赋值
xxxxxxxxxx51listA = ["刘备","关羽","张飞"]2listA[0] = "刘玄德"3listA[1] = "关二爷"4listA[2] = "张翼德"5print(listA) # ['刘玄德', '关二爷', '张翼德']
append
append末尾添加 append(数据)
insert
insert插入 insert(位置,数据)
extend
extend末尾添加一个列表 extend(列表)
xxxxxxxxxx151# append2listA = ["刘备","关羽","张飞"]3listA.append("貂蝉")4print(listA) # ['刘备', '关羽', '张飞', '貂蝉']5
6# insert7listA = ["刘备","关羽","张飞"]8listA.insert(1,"吕布")9print(listA) # ['刘备', '吕布', '关羽', '张飞']10
11# extend12listA = ["刘备","关羽","张飞"]13listB = ["大乔","小乔"]14listA.extend(listB)15print(listA) # ['刘备', '关羽', '张飞', '大乔', '小乔']
remove(数据)
删除数据相等的第一个列表中的数据
pop(索引)
删除当前索引的数据
xxxxxxxxxx91listA = ["刘备","关羽","张飞"]2listA.remove("关羽")3print(listA) # ['刘备', '张飞']4
5# 0 1 26listA = ["刘备","关羽","张飞"]7listA.pop(2)8print(listA) # ['刘备', '关羽']9
xxxxxxxxxx31# 求下标索引 index(数据)2listA = ["刘备","关羽","张飞"]3print(listA.index("关羽")) # 1
xxxxxxxxxx21listA = ["王老师","豆豆","张老师","豆豆","小明"]2print(listA.count("豆豆")) # 2
xxxxxxxxxx61# 清空列表中的数据 clear 列表名 = []2# 清空listA3listA = ["王老师","豆豆","张老师","豆豆","小明"]4listA.clear()5# listA = []6print(listA) # []
xxxxxxxxxx51listA = ["王老师","豆豆","张老师","豆豆","小明"]2
3# 列表遍历 for 数据 in 列表名4 for n in listA:5 print(n)
xxxxxxxxxx91listA = [10,5,3,2,8]2# 排序sort 从小到大排序 sort(reverse = True)从大到小排序3listA.sort()4print(listA) # [2, 3, 5, 8, 10]5
6# 用sort函数进行排序 如果是字符或者字符串则按字符编码值进行排序7listB = ["d","c","A","aa","ab","a"]8listB.sort()9print(listB) # ['A', 'a', 'aa', 'ab', 'c', 'd']
字典是一种使用“键值对结构”存储数据的存储模型。
xxxxxxxxxx21# 字典格式2# 变量名 = {键1:值1 , 键2:值2, ...}
xxxxxxxxxx41# 创建空字典2dictA = {}3# 创建有数据的字典4dictB = {"name":"王老师", "height":165, "weight":90, "hobby":"打豆豆"}
键值对 键key 值 value
变量名[键] = 值
如果键存在则修改值,如果键不存在,则添加键和值
xxxxxxxxxx171dictA = {"name":"王老师", "height":165, "weight":90, "hobby":"打豆豆"}2dictA["hobby"] = "看电影"3print(dictA)4
5# 查询键为 height 的值6print(dictA["height"]) # 1657
8# 修改王老师体重weight数值修改为 859dictA["weight"] = 8510print(dictA["weight"]) # 8511
12# 取王老师的身高13# 第一种 如果键值不存在则报错14# print(dictA["height"])15
16# 第二种 如果键值不存在 则返回None17# print(dictA.get("height"))
pop(键值)
xxxxxxxxxx41dictA = {"name":"王老师", "height":165, "weight":90, "hobby":"打豆豆"}2# pop(键值)3dictA.pop("hobby")4print(dictA) # {'name': '王老师', 'height': 165, 'weight': 90}
xxxxxxxxxx171dictA = {"name":"王老师", "height":165, "weight":90, "hobby":"打豆豆"}2
3# 遍历字典键的键 key4# for k in dictA:5# print(k)6
7# 遍历字典键的键 key8for k in dictA.keys():9 print(k)10
11# 遍历字典的值 value12for v in dictA.values():13 print(v)14
15# 遍历键和值 key value16for k,v in dictA.items():17 print(k,v)
元组是一种存储固定数据的存储模型
简单理解就是一个不能修改的列表
元组中的数据可以进行查询但不允许修改
变量名 = (数据1,数据2,...)
xxxxxxxxxx31# 定义一个元组 ,元组内包含 "王老师" "张老师" "豆豆" "刘备"2a = ("王老师","张老师","豆豆","刘备")3print(a)
是一种存储无序的不重复数据的存储结构
集合没有索引的概念.
变量名 = {数据1,数据2,数据3 ...}
xxxxxxxxxx71# 数据不能重复2# 别人问你 袋子里有几种水果3setA = {"苹果","香蕉","橘子","橘子","梨","苹果","香蕉"}4print(setA)5
6# 回答的没有重复的水果 有以下四种7# {'香蕉', '橘子', '苹果', '梨'}
xxxxxxxxxx51setA = {"苹果","香蕉","橘子","梨"}2
3# 添加 add(数据)4setA.add("桃子")5print(setA)
xxxxxxxxxx61setA = {"苹果","香蕉","橘子","橘子","梨"}2print(setA)3
4# 删除 remove(数据)5setA.remove("苹果")6print(setA)
把数据循环中取出,放入数据容器里比如 列表 或者 字典 形成一个新的列表或字典
xxxxxxxxxx191# 格式2# listA = [值 for n in range(1,11)]3
4# 一般列表推导式5listA = [n for n in range(1,11)]6print(listA)7# [1,2,3,4,5,6,7,8,9,10]8
9# 带筛选条件的列表推导式10listB = [n for n in range(1,11) if n % 2 == 0]11print(listB)12# [2, 4, 6, 8, 10]13
14# 这样写是等价的,推导式是一种简写15listB = []16for n in range(1,11):17 if n % 2 == 0:18 listB.append(n)19print(listB)
xxxxxxxxxx71# 格式2# dictA = {键:值 for n in range(1,11)}3
4dictA = {n:n*2 for n in range(1,11)}5print(dictA)6
7# {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18, 10: 20}
函数是已经写好的,可重复使用,用来实现相关功能的代码段
使用函数可以增加代码的复用性
xxxxxxxxxx401# 无参格式2# def 函数名():3# 函数体4
5# 有参格式6# def 函数名(参数):7# 函数体8
9# def 函数名(参数1,参数2,参数3...):10# 函数体11
12# 我们定义一个函数来实现 王老师 吃饭 睡觉 打豆豆13def fun1():14 print("王老师吃饭")15 print("王老师睡觉")16 print("王老师打豆豆")17
18# 调用19fun1()20
21# 定义一个带参数的函数实现 传入人名xx22# 打印出 xx吃饭 xx睡觉 xx打豆豆23def fun2(name):#name 形参24 print(name + "吃饭")25 print(name + "睡觉")26 print(name + "打豆豆")27
28# 实参 函数调用时使用的参数29fun2("王老师") # name = "王老师"30
31
32# 定义一个函数,带两个参数,33# 第一个参数是字符串类型 name 第二个参数是整型 times34# 函数实现 输出功能 "xx打了xx次豆豆"35def fun3(name,times):36 print("%s打了%d次豆豆"%(name,times))37
38# 调用第一次,第一个参数为"王老师",第二个参数为539fun3("王老师",5) # name = "王老师" times = 540
形参是函数定义时规定的参数,仅在函数体内有效
实参是函数调用时使用的参数,该值将传递给函数
全局变量 在函数外定义的变量,在整个文件中有效
局部变量 在函数内部定义的变量,有效范围在当前的函数内
xxxxxxxxxx211# 全局变量2name = "王老师"3
4def fun1():5 # 局部变量 这里修改的只是局部变量6 name = "张老师"7 print(name + "打豆豆")8
9fun1()10print(name)11
12
13def fun2():14 # 声明使用全局变量 这里修改的是全局变量name15 global name16 name = "张老师"17 print(name + "打豆豆")18
19fun2()20print(name)21
函数返回值关键字 return
xxxxxxxxxx71def add(a,b): # 通过参数进入2 c = a+b3 return c # 通过return出去4
5# return出去的值赋值给变量6d = add(5,6)7print(d)
如果函数参数要加默认值,则只能从倒数第一个依次添加默认值
xxxxxxxxxx181def fun1(name,times=1,say = "打的就是你豆豆"):2 print("%s打了%d次豆豆"%(name,times))3 print(say)4
5fun1("王老师")6fun1("王老师",2)7fun1("王老师",10,"打的真解气")8
9
10# 定义一个函数,俩参数,姓名,年龄,11# 打印出姓名和年龄多少岁,12# 如果不想输入年龄,则打印出 姓名 和 年龄 保密13def fun2(name,age = "保密"):14 print("姓名 "+name)15 print("年龄 "+age)16
17fun2("张老师","30")18fun2("王老师")
参数格式
*变量名
参数不是固定的,参数个数可以随意
通过实参传入多个参数,转换为形参,形参的类型为元组
xxxxxxxxxx81def fun1(*a):2 print(a)3
4fun1(1)5fun1(1,2)6fun1(1,2,3)7
8fun1("王老师","奥特曼","怪兽")
字典参数格式
**变量名
每个实参以 变量名=值 的方式传入,形成一个形参,形参的格式为字典
xxxxxxxxxx61
2def fun1(**k):3 print(k)4
5fun1(a=1,b=2)6fun1(姓名="王老师",年龄="18")
又称为lambda函数,指定义时没有名称的函数,
表达式用的是lambda关键字
xxxxxxxxxx331# 格式一2# 函数名 = lambda 形参:返回值3# 结果 = 函数名(实参)4
5# 格式二6# 结果 = (lambda 形参:返回值)(实参)7
8# 普通函数9def fun1(a,b):10 return a+b11
12print(fun1(3,5))13
14
15# lambda函数16
17# 格式一18# 函数名 = lambda 形参:返回值19fun1 = lambda a,b:a+b20
21# 调用 结果 = 函数名(实参)22print(fun1(3,5))23
24# 格式二25# 有参26# 结果 = (lambda 形参:返回值)(实参)27res = (lambda a,b:a+b)(3,5)28print(res)29
30print((lambda a,b:a+b)(3,5))31
32# 无参33# 结果 = (lambda:返回值)()
类是一类事物的抽象概念,不是真实存在的,描述了该类事物共同的特征和行为类是抽象的
对象某类事物的具体个体,是该类事物的具体表现,实际存在的个体
xxxxxxxxxx331# 格式2# class 类名:3# 类的内容4
5# 类的内容 成员变量 成员方法 类变量 类方法 静态方法等6
7class Student:8 # 定义成员变量9 def __init__(self, a, b):10 self.name = a11 self.age = b12
13 # 定义成员方法14 def instr(self):15 print("我叫%s" % self.name)16 print("今年%s岁" % self.age)17
18 def add_age(self):19 self.age = self.age + 120
21
22# 生成一个 "王大锤" "28岁" 的学生23s1 = Student("王大锤", 28)24
25# 调用 成员方法26s1.instr()27
28# 生成一个 "王思聪" "38岁" 的学生29s2 = Student("王思聪", 38)30s2.instr()31# 生成一个 "柳岩" "40岁" 的学生32s3 = Student("柳岩", 40)33s3.instr()
类变量是定义在类中,不属于某个具体对象的特征,被所有对象共同使用的特征
类变量写在类里面并且在 init函数外边的变量
xxxxxxxxxx221class Student:2 # 类变量3 study = "python"4
5 # 定义成员变量6 def __init__(self, a, b):7 self.name = a8 self.age = b9
10 # 定义成员方法11 def instr(self):12 print("我叫%s" % self.name)13 print("今年%s岁" % self.age)14 print("正在学的课为%s" % Student.study)15
16# 修改 正在学的课17Student.study = "数据库"18s1 = Student("王大锤", 28)19s1.instr()20
21s2 = Student("王心凌", 25)22s2.instr()
类方法是定义在类中,不属于某个具体对象的行为,被所有对象共同使用的行为
类方法上面需要添加 @classmethod
调用不需要创建对象,直接用 类名.类方法名 来调用
简单的理解为 全局的函数,只不过把函数写到类中,函数中自带一个参数,参数值为类名
xxxxxxxxxx291# 类方法定义2# @classmethod3# def 类方法名():4
5# 类方法调用 6# 类名.类方法名7
8class Student:9 # 类变量10 study = "python"11
12 # 定义成员变量13 def __init__(self, a, b):14 self.name = a15 self.age = b16
17 # 定义成员方法18 def instr(self):19 print("我叫%s" % self.name)20 print("今年%d岁" % self.age)21
22 # 类方法装饰器,把成员方法 变为 类方法23 24 def task(cls): # cls 就是 类 Student25 print("学生的任务是学习" + cls.study)26 # print("学生的任务是学习" + Student.study)27 28 29Student.task()
定义在类中的,和类,对象都没有关联的方法
静态方法上面需要添加 @staticmethod
调用不需要创建对象,直接用 类名.静态方法名 来调用
简单的理解为全局的函数,只不过把函数写到类中,类方法和静态方法相似,类方法比静态方法多了一个默认参数
xxxxxxxxxx241# 类静态方法定义2# @staticmethod3# def 静态方法名():4
5# 静态方法调用6# 类名.静态方法名7
8class Student:9 # 定义成员变量 __init__10 def __init__(self, a, b):11 self.name = a12 self.age = b13
14 # 定义成员方法15 def instr(self):16 print("我叫%s" % self.name)17 print("今年%d岁" % self.age)18
19 20 def show():21 print("我喜欢看电影")22 23 24Student.show()
把常用的方法或者变量封装成成员方法来使用
封装变量时,可以通过成员变量前面加上 变量名,使 变量名对外不可见,再通过函数的方式,对其访问或者修改
xxxxxxxxxx201# 通过在成员变量前面 加上 __ 就可以使成员变量对外不可见2class Student:3 # 定义成员变量 __init__4 def __init__(self, a, b):5 self.name = a6 self.__age = b7
8 def set_age(self, age):9 self.__age = age10
11 def get_age(self):12 return self.__age13
14
15s1 = Student("王大锤", 28)16print(s1.name) # 王大锤17print(s1.__age) # 打印报错18
19s1.set_age(10) # 通过成员方法设置值20print(s1.get_age()) # 通过成员方法来获取值
继承允许我们通过继承,可以用另一个类的所有方法和属性的类
xxxxxxxxxx281class Animal:2 def __init__(self):3 self.name = "动物"4
5 def eat(self):6 print("吃食物")7
8 def sleep(self):9 print("睡觉")10
11# 羊类是动物类的子类 羊就具有动物的所有函数功能12class Sheep(Animal):13 def eat(self):14 print("吃草")15
16class Tiger(Animal):17 def eat(self):18 print("吃肉")19 20s1 = Sheep()21s1.eat() # 吃草22s1.sleep() # 睡觉23s1.run() # 跑24
25t1 = Tiger()26t1.eat() # 吃肉27t1.sleep() # 睡觉28t1.run() # 跑
xxxxxxxxxx311class Animal:2 def __init__(self):3 self.name = "动物"4
5 def eat(self):6 print("吃食物")7
8 def sleep(self):9 print("睡觉")10
11 def run(self):12 print("跑")13
14# 羊类是动物类的子类 羊就具有动物的所有函数功能15class Sheep(Animal):16 def __init__(self):17 self.age = 1018 # 通过super就能调用父类的函数,使用父类得成员变量的值19 super().__init__()20 # 可以这样重新对name进行赋值 self.name = "羊"21
22 def eat(self):23 print("吃草")24 # 通过super就能调用父类的函数25 # super().eat()26
27
28s1 = Sheep()29s1.eat() # 吃草30s1.sleep() # 睡觉31s1.run() # 跑
多态指的是同一种事物的多种形态
统一调用,通过传入不同的对象,得到得到不同的结果
xxxxxxxxxx331class Animal:2 def talk(self):3 print("动物叫")4
5class Dog(Animal):6 def talk(self):7 print("汪汪")8
9class Cat(Animal):10 def talk(self):11 print("喵喵")12
13class Pig(Animal):14 def talk(self):15 print("嗷嗷")16
17dog = Dog()18cat = Cat()19pig = Pig()20
21# 多态22# dog.talk()23# cat.talk()24# pig.talk()25
26# 多态指的是同一种事物的多种形态27# 多态的用法 统一调用,通过传入不同的对象,得到得到不同的结果28def fun1(a):29 a.talk()30
31fun1(dog)32fun1(cat)33fun1(pig)
将相关的一组功能的代码写入到一个单独的.py文件中,可以供别的文件导入使用
这个.py文件就被称为一个模块
导入格式:
import 模块名
模块资源使用格式:
模块名.类名
模块名.函数名
模块名.变量名
导入格式:
from 模块名称 import 资源名称
from 模块名称 import 资源名称1,资源名称2
from 模块名称 import *
模块资源使用格式:
类名
函数名
变量名
xxxxxxxxxx241# 第一种 import 模块名2# import s_023#4# print(s_02.a) #模块名.变量名5# s_02.fun()6# aa = s_02.MyClass()7# aa.showInfo()8
9# 第二中 from 模块名 improt 变量名10# from s_02 import a11# from s_02 import fun12# from s_02 import MyClass13
14
15# from s_02 import *16# print(a) #可以直接使用17# fun()18# bb = MyClass()19# bb.showInfo()20
21# 不同层级下导入模块名22# 文件夹名.模块名23# import my_file.f124# print(my_file.f1)
是一个有层次的文件目录结构,它定义了由n个模块或n个子包
结构 包含init.py,比文件目录多了这么一个文件
当导入包里的模块并使用时,自动运行init.py这个文件
xxxxxxxxxx31# 导入包里的文件,会默认先执行包里的__init__.py文件2# import my_package.p13# print(my_package.p1.pp1)
包和模块都可以称为库
pycharm安装,文件=>设置=>项目=>python解释器
鼠标点击 +,输入 要安装的库名
如果安装时遇到安装失败,则可以添加国内源地址
主界面->python package->管理仓库->+ 添加
https://pypi.tuna.tsinghua.edu.cn/simple/ 网址
通过pip install 库名 安装
pip install 库名
如果安装时遇到安装失败,则可以加上国内源地址参数
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pycharm卸载,文件=>设置=>项目=>python解释器
鼠标选中要卸载的库,点击 -
通过pip uninstall 库名 卸载
计算机的文件就是长期储存在设备上的⼀段数据
打开文件:
file = open("文件名","读写模式",encoding="UTF-8")
操作文件: read write
关闭文件: close
读写模式 r读取 w写入 rb二进制读取 wb二进制写入
xxxxxxxxxx81# 打开文件2file = open("D:/test.txt","w",encoding="UTF-8")3
4# 写入文件5file.write("hello world")6
7# 关闭文件8file.close()
xxxxxxxxxx31# 写文件 简写模式2with open("D:/test.txt", "w", encoding="utf-8") as f:3 f.write("我的名字叫王大锤")
xxxxxxxxxx91# 打开文件2file = open("D:/test.txt","r",encoding="UTF-8")3
4# 读取5text = file.read()6print(text)7
8# 关闭9file.close()
xxxxxxxxxx31# 读文件 简写模式2with open("D:/test.txt", "r", encoding="utf-8") as f:3 print(f.read())
xxxxxxxxxx91# 打开文件2file = open("D:/test.txt","r",encoding="UTF-8")3# 读取文件4text = file.readlines()5print(text)6for n in text:7 print(n,end="")8# 关闭文件9file.close()
xxxxxxxxxx101# 读取 rb 以二进制方式读取2f = open("D:/图片1.png", "rb")3a = f.read()4# print(a)5f.close()6
7# 写入 wb 以二进制方式写入8f = open("D:/图片2.png", "wb")9f.write(a)10f.close()
xxxxxxxxxx91import json2
3dict1 = {"姓名":"王老师","年龄":18,"身高":169,"体重":90}4# 打开文件5f = open("D:/test2.json","w",encoding="UTF-8")6# 写入文件7json.dump(dict1,f,ensure_ascii=False)8# 关闭文件9f.close()
xxxxxxxxxx81import json2# 打开文件3f = open("D:/test2.json","r",encoding="UTF-8")4# 读取文件5data = json.load(f)6print(data)7# 关闭文件8f.close()
异常就是报错,代码遇到报错就停止运行了
我们可以添加异常处理,让代码遇到异常,抛出异常,捕获错误信息,同时可以继续执行
try:
可能引发异常现象的代码
except 系统定义的异常类:
出现异常现象的处理代码
except:
出现异常现象的处理代码
else:
未出现异常现象的处理代码
finally:
try代码块结束后运行的代码
xxxxxxxxxx251try:2 # 打开文件3 # file = open("D:/sdfsdf/test.txt", "r", encoding="UTF-8")4 # list = [1, 2, 3]5 # print(list[4])6 # import bb7 # print(c)8 a = 1/09
10except NameError:11 print("名字未定义")12except ZeroDivisionError:13 print("不能除以0")14except ModuleNotFoundError:15 print("导入的模块名找不到")16except IndexError:17 print("索引错误")18except FileNotFoundError:19 print("文件没有找到")20except:21 print("有错误")22else: # 代码正确的才会执行23 print("没毛病")24finally: # 不管代码是否错误都会执行25 print("执行完毕")
一般使用
xxxxxxxxxx41try:2 print(a)3except Exception as e:4 print(e) #打印异常类型