目录
一.基础知识
二.分支和循环
1.条件分支
2.嵌套语句:
3.循环:
三.列表
1.列表
2.列表切片
3. 增 删 改 查
3.1 增
3.2 删
3.3 改
3.4 查
4.列表的加减乘除
5.深拷贝 deepcopy()
6.列表推导式
四.元组 ( )
五.元组 " "
1.大小写字母换来换去
2.左中右对齐
3.查找
4.替换
6.判断
7.截取
8.拆分&拼接
9.格式化字符串
1、变量
(1)变量名不能以数字开头
(2)变量名区分大小写
(3)变量名可以用汉字
(4)x,y=y,x可以实现x,y值互换
x=3 y=5 x,y=y,x print(x,y) 5 3
2、字符串
(1)用单引号或者双引号将内容引起
(2)用单还是双取决于字符串中有没有不可避免的单或双引号,以免系统误会
(3)实在不能避免单双引号冲突时,可以用转义字符代替【加上去\即可转义】
示例:\"=" ; \\=\ ; \n=换行 ;
(4)原始字符串:转义字符需要正常使用,不作为转义字符时,可以在前面加上r,表示原始字符串,转义不生效
示例:
print(r"D:\wenjianjiaA\wenjianjiaB\wenjianjiaC") D:\wenjianjiaA\wenjianjiaB\wenjianjiaC
(5)长字符串:前后用三个单引号或双引号(""" """)/(''' ''''),实现跨行字符串,即不用\n即可做换行。
示例:
porty="""你好呀 我不用\n就可以换行了 怎么样""" print(porty) 你好呀 我不用 就可以换行了 怎么样
(6)字符串相加就是拼接
示例:
520+1314
1834'520'+'1314'
''
(7)字符串乘以数字就是重复
示例:
print("我每天都学习十次pyhon!!\n" *10)
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
我每天都学习十次pyhon!!
3.比较运算符
例:设计一个游戏,提示用户输入一个值,正确则结束,不正确则提示大了还是小了
"""用python设计一个游戏""" import random counts =3 answer=random.randint(1,10) while counts>0: temp = input ("猜一下我想的数字") guess = int(temp) if guess==answer: print("你是我的宝贝吗?") print ("哼,猜中了") break else: if guess<answer: print("猜小了~") else: print("猜大了~") counts=counts-1 print("猜错啦,我想的是8") print("游戏结束,不玩啦")
1.获取一个随机数
random.randint( , )
随机获取一个1~100的整数
import random
random.randint(1,100)
65
random.randint(1,100)
43
random.randint(1,100)
72
random.randint(1,100)
25
2.数字类型
6/2
3.00.1+0.2
0.0000040.3==0.1+0.2
False
求精度:例
import decimal a=decimal.Decimal('0.1') b=decimal.Decimal('0.2') print(a+b) 0.3 c=decimal.Decimal ('0.3') a+b==c True
0.00005等价于5e-05
3.复数 a+bi
1+2j
(1+2j)x=1+2j
通过x.real获取实部数值
x.real
1.0通过x.imag获取虚部数值
x.imag
2.0
3.数字间的运算
3/2 =1.5
3//2 =1
-3//2 =-2
取比目标结果小的最大整数
2.divmod ( 返回地板除结果和余数)
divmod(3,2)
(1, 1)
3.abs (求绝对值,或者复数的模)
x=-520
abs(x) 求绝对值
520z=1+2j
abs(z) 求复数的模
2.979
4.complex (re,im) 返回一个复数
complex("1+2j")
(1+2j)
5.计算x的y次方
pow(2,3)
8等价于
2**3
8pow(2,3,5)
3
2**3%5
3
4.布尔类型(Ture False)
定义为False对象的:None和false
值为0的数字类型:0,0.0 ,0j , decimal(0) ,fraction(0,1)
空的序列和集合: ”,(), [ ] ,{} ,set , range(0)
0-------False
5.逻辑运算 and or not
5.1短路逻辑:从左往右,只有当第一个操作数的值无法确定逻辑运算结果时,对第二个操作数进行求值
3 and 4 ——>4 0 and 3 ——>3
3 or 4 ——>3 0 or 4 ——>4
((not 1)or (0 and 1)or (3 and 4)or (5 and 6 ) or(7 and 8 and 9 )) 4
5.2运算符优先级 not>>and>>or
not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 4
6.画流程图,思维导图
if 3>5: print("在里面") print("我也在里面") print("我在外面")
结果为:我在外面 (成立执行里面,不成立执行外面)
if else
if "我"=="小姐姐": print("我是小姐姐") else: print ("我不是小姐姐")
结果为:我不是小姐姐
if .......elif........elif .......
if ......elif .......elif.......else........
语法: 条件成立时执行的语句 if condition else 条件不成立时执行的语句
例:求小的那个数
a=3 b=5 if a<b: small=a else: small=b print(small)
等价于
small=a if a<b else b print(small) 3
age=18 ismale=True if age<18: print("抱歉,未成年禁止访问") else: if ismale: print("随便观看") else: print("抱歉,本网站不适合小公主哦") 随便观看
1.while condition
statement(s)
例题:计算1--100的和
i=1 sum=0 while i<100: sum=sum+i i=i+1 print(sum)
结果为:4950
死循环的使用
while True: answer=input("主人,我可以退出了吗??") if answer=="可以": break print("哎呀,好累啊!!")
结果:
主人,我可以退出了吗??不行
哎呀,好累啊!!
主人,我可以退出了吗??继续
哎呀,好累啊!!
主人,我可以退出了吗??可以
当循环条件不在为真时,else语句才被执行
day=1 while day<=7: answer=input("今天有好好学习吗?") if answer !="有": break day=day+1 else : print("非常棒,你已经间坚持学习七天了")
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
非常棒,你已经间坚持学习七天了
2.for 循环
语法: for 变量 in 对象:
statement(s)
例如:
for each in "python": print(each)
p
y
t
h
o
n
range(stop) —————>从0开始
for i in range(11) 从0开始到10
print(i)
range(start ,stop)
for i in range(5,11) 从5到1
print (i)
range(start, stop,step) (step 可以为负数)
for i in range(5,10,2) 从5到9,跨度为2
print(i)
例1:求0——100的和
sum=0 for i in range(100): sum=sum+i print(sum)
结果为:4950
例2. 打印乘法口诀表
i=1 while i<=9: j=1 while j<=i: print(j,"*",i,"=",j*i, end=" ") j=j+1 print() i=i+1
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
例3.求出10以内的素数(除1和本身无法被其他数整除)
for n in range(2,10): for x in range(2,n): if n%x==0: print(n,"=",x,"*",n//x) break else: print(n,"是一个素数")
2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3
例:rhyme=[1,2,3,4,5,"上山打老虎"]
元素 1 2 3 4 5 "上山打老虎"
下标(前到后) 0 1 2 3 4 5
下标(后到前) -6 -5 -4 -3 -2 -1
rhyme=[1,2,3,4,5,"上山打老虎"] rhyme[0:3] 等价于 rhyme[:3] 结果: [1, 2, 3]
rhyme[3:] 结果: [4, 5, '上山打老虎']
rhyme[:] 结果: [1, 2, 3, 4, 5, '上山打老虎']
rhyme[0:6:2] 2表示为跨度 等价于 rhyme[: : 2] 结果为: [1, 3, 5]
倒序输出:
rhyme[: :-1] 结果为: ['上山打老虎', 5, 4, 3, 2, 1]
append( ) 在列表末尾添加一个指定元素
extend ( [" , "] ) 必须为可迭代对象,新添加的元素追加到最后一个元素后面
animal=["小狗狗 ","小猫咪"]
animal=["小狗狗 ","小猫咪"] animal.append("小狮子") animal ['小狗狗 ', '小猫咪', '小狮子']
animal.extend(["小老虎","大象","熊猫"]) animal ['小狗狗 ', '小猫咪', '小狮子', '小老虎', '大象', '熊猫']
加在末尾
s=[1,2,3,4,5] s[len(s):]=[6] s [1, 2, 3, 4, 5, 6]
插入: insert
s=[1,3,4,5]
s.insert(1,2) (位置下标,元素)
s
[1, 2, 3, 4, 5]
s.insert(0,0) 在开头插入
s.insert(len(s),6) 在末尾插入
remove( ) 删除某个元素
animal=["小狗狗 ","小猫咪"] animal.remove("小狗狗") animal
①如果存在多个只会删除第一个
②必须指定要删除的元素
pop( ) 删除某个位置元素,括号内为元素下标
s=[1,2,3,4,5,6] s.pop(1) 2 s [1, 3, 4, 5, 6]
clear( ) 清空
s.clear() s []
替换: animal[下标 ]="目标值"
animal=['小狗狗 ', '小猫咪', '小狮子', '小老虎', '大象', '熊猫'] animal[3]="猪" animal ['小狗狗 ', '小猫咪', '小狮子', '猪', '大象', '熊猫']
替换多个:animal [3 : ]=["","",""] 3以后的都替换
animal=['小狗狗 ', '小猫咪', '小狮子', '小老虎', '大象', '熊猫'] animal[3:]=["鸡鸡","鸭"] animal ['小狗狗 ', '小猫咪', '小狮子', '鸡鸡', '鸭']
排序:
从小到大 sort( )
nums=[2,3,5,1,6,4,3] nums.sort() nums [1, 2, 3, 3, 4, 5, 6]
(倒过来) 大到小 reverse( )
nums.reverse() nums [6, 5, 4, 3, 3, 2, 1]
直接排倒序
nums=[2,3,5,1,6,4,3] nums.sort(reverse=True) nums [6, 5, 4, 3, 3, 2, 1]
查个数 count()
查询3的个数 nums=[2,3,5,1,6,4,3] nums.count(3) 2
查索引值 index()
nums=[2,3,5,1,6,4,3] nums.index(5) 2
index(x, start, end)
nums=[2,3,5,1,6,4,3] nums.index(3,3,7) 查3,从3到7 6
拷贝:
浅拷贝:copy( )
nums_copy=nums.copy() nums_copy [2, 3, 5, 1, 6, 4, 3]
等价于
nums_copy=nums[:] 切片法 nums_copy [2, 3, 5, 1, 6, 4, 3]
1.加法
s=[1,2,3] t=[4,5,6] s+t [1, 2, 3, 4, 5, 6]
2.乘法(重复)
s*3 [1, 2, 3, 1, 2, 3, 1, 2, 3]
嵌套列表(二维列表)
matrix=[[1,2,3],[4,5,6],[7,8,9]] matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 等价于 matrix=[[1,2,3], [4,5,6], [7,8,9]]
访问嵌套列表
matrix=[[1,2,3],[4,5,6],[7,8,9]]
for i in matrix:
for each in i:
print(each,end=" ")
print()
1 2 3
4 5 6
7 8 9
matrix[0] 取到第一行
[1, 2, 3]
matrix[1][1] 取到第二行第二列
5
A=[0]*3
A
[0, 0, 0]for i in range(3):
A[i]=[0]*3A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
is运算符 判断是否等
import copy x=[[1,2,3],[4,5,6],[7,8,9]] y=copy.copy(x) x=[1][1]=0 x [[1,2,3],[4,0,6],[7,8,9]] y [[1,2,3],[4,0,6],[7,8,9]]
y=copy.deepcopy(x) x=[1][1]=0 x [[1,2,3],[4,0,6],[7,8,9]] y [[1,2,3],[4,5,6],[7,8,9]] y没变
基本语法: [ expression for target in iterable ]
oho=[1,2,3,4,5] oho=[i*2 for i in oho] oho [2, 4, 6, 8, 10]
例:加 x=[i for i in range(10)] x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] x=[i+1 for i in range(10)] 加一 x [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
乘(重复) y=[c*2 for c in "python"] y ['pp', 'yy', 'tt', 'hh', 'oo', 'nn']
取单个元素或某一列
matrix=[[1,2,3], [4,5,6], [7,8,9]] col2=[row[1] for row in matrix] 取出第二列的值 col2 [2, 5, 8]
diag=[matrix[i][i] for i in range(len(matrix))] 取对角线的值 diag [1, 5, 9]
约束条件
s=[[0]*3 for i in range(3)]
s
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
s[1][1]=1
s
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
执行顺序:even=[i for i in range(10) if i%2==0] even [0, 2, 4, 6, 8]
顺序: ①for语句 ② if 语句 ③ i
嵌套列表推导
[x+y for x in "python" for y in "PYTHON"] 笛卡尔积
['pP', 'pY', 'pT', 'pH', 'pO', 'pN', 'yP', 'yY', 'yT', 'yH', 'yO', 'yN', 'tP', 'tY', 'tT', 'tH', 'tO', 'tN', 'hP', 'hY', 'hT', 'hH', 'hO', 'hN', 'oP', 'oY', 'oT', 'oH', 'oO', 'oN', 'nP', 'nY', 'nT', 'nH', 'nO', 'nN']
[[x,y] for x in range(10) if x%2==0 for y in range(10) if y%3==0] [[0, 0], [0, 3], [0, 6], [0, 9], [2, 0], [2, 3], [2, 6], [2, 9], [4, 0], [4, 3], [4, 6], [4, 9], [6, 0], [6, 3], [6, 6], [6, 9], [8, 0], [8, 3], [8, 6], [8, 9]] 等价于 for x in range(10): if x%2==0: for y in range(10): if y%3==0: _.append([x,y]) _
元组不可变更(修改)
元组只支持 count( ) index( ) + * 嵌套 列表推导
打包和解包
t=(123,"python",3.14) t (123, 'python', 3.14) x,y,z=t x 123 y 'python' z 3.14
s=[1,2,3] t=[4,5,6] w=(s,t) w ([1, 2, 3], [4, 5, 6]) w[0][0]=0 w ([0, 2, 3], [4, 5, 6])
左右数量一致
x="12321"
"是回文数" if x==x[: :-1] else "不是回文数"
'是回文数'
capitalize() 首字母变为大写,其他为小写
casefold ( ) 所有都为小写
title() 单词首字母变为大写,其他为小写
swapcase() 大小写翻转
upper() 所有变为大写
lower() 所有变小写
x="i love Python " x.capitalize () 'I love python ' x.casefold () 'i love python ' x.title() 'I Love Python ' x.swapcase() 'I LOVE pYTHON ' x.upper() 'I LOVE PYTHON ' x.lower () 'i love python '
center (width, fillchar="") 居中
ijust (width , fillchar="") 左对齐
rjust (width, fillchar="") 右对齐
zfill( width) 0填充左侧
s=" 有内鬼,停止交易 " s.center (5) ' 有内鬼,停止交易 ' s.center(15) ' 有内鬼,停止交易 ' s.rjust (5) ' 有内鬼,停止交易 ' s.ifill(15)
count (sub [,start[, end]]) 次数
find (sub [,start[, end]]) 查下标,左到右
rfind (sub [,start[, end]]) 查下标,右到左
x="上海人住在海上" x.count("海") 2 x.find("住") 3 x.find("在") 4 x.rfind("在") 4
expandtabs([tabsize=8]) 空格替换制表符
replace( old, new ,count=-1) 旧换新
translate(table) 字母替换
str.maketrans(x[,y[,z]])
able=str.maketrans("ABCDEFG","") "I love FootBool".translate(able) 'I love 6oot2ool'
startswith (prefix,[,start[,end]]) 是否在起始位置
endswith (prefix,[,start[,end]] ) 是否在结束位置
例: x="他爱python" if x.startswith (("你","我","他")): print("总有人喜欢python") 总有人喜欢python
istitle() 判断字符串中所有单词开头是否为大写
isupper() 判断所有单词是否为大写
islower() 判断所有单词是否为小写
isalpha() 判断是否只是由字母构成(空格不是)
isspace() 判断是否为空白
isprintable() 判断是否能打印(转义字符不能)
x="I love Pyyhon" x.istitle () False x.isupper () False x.islower () False x.isalpha () False x.isspace () False x.isprintable () True
判断数字:(123 ,²,罗马数字,大写数字一二三)
isdecimal()
isdigit()
isnumeric()
isidentifier() 判断是否为标准python符
import keyword 判断是否为保留标识符
keyword.iskeyword(if)
lstrip() 左侧去白
rstrip() 右侧去白
strip() 去白
x=" 我爱学习 " x.lstrip () '我爱学习 ' x.rstrip () ' 我爱学习' x.strip () '我爱学习'
"www.Ilovepython.com".strip ("wcom.") 'Ilovepython'
removeprefix(" ") 删除前缀(删的是字符串)
removesuffix(" ") 删除后缀(删的是字符串)
"www.Ilovepython.com".removeprefix ("www") '.Ilovepython.com' "www.Ilovepython.com".removesuffix (".com") 'www.Ilovepython'
partition( ) 左到右
rpartition() 右到左
split() 按字符分割
"www.Ilovepython.com".partition (".") ('www', '.', 'Ilovepython.com') "www.Ilovepython.com".rpartition (".") ('www.Ilovepython', '.', 'com') "www.Ilovepython.com".split () ['www.Ilovepython.com'] "www.Ilovepython.com".split (".") ['www', 'Ilovepython', 'com']
join 拼接
".".join(["www","Ilovepython","com"]) 'www.Ilovepython.com'
"".join(["python","python"]) 'pythonpython'
{ } .format( )
year=1998 "我出生于{}年".format (year) '我出生于1998年'
"1+2={},2的平方是{},3的立方是{}".format(1+2,2*2,3*3*3) '1+2=3,2的平方是4,3的立方是27'
{ :^}.format( ) 居中
"{:^10}".format (250) ' 250 '
{: 010}.format( ) 填充0
"{:010}".format(250) '0000000250'
+ - 号
"{:+}{:-}".format(520,-250) '+520-250'
千位分割符
"{:,}".format(1234) '1,234'
"{:_}".format() '123_456_789'
限定位数
"{:.2f}".format(3.1415) f限定小数点后有几位 '3.14'
"{:.2g}".format(3.1415) g限定前后共有几位 '3.1'
截取
"{:.6}".format("Ilove python") 截取6位 'Ilove '
以进制形式输出
"{:b}".format(80) '' "{:c}".format(80) 'P' "{:d}".format(80) '80' "{:o}".format(80) '120' "{:x}".format(80) '50' "{:X}".format(80) '50' "{:n}".format(80) '80'
"{:#b}".format(80) #作为前缀 '0b'
复数和浮点数
"{:e}".format (3.1415) '3.e+00' "{:.2%}".format(2.1) '210.00%'
f 字符 (和format一样的功能)
f"我出生于{2002}年" '我出生于2002年'
f"1+2={1+2},2的平方是{2*2},3的立方是{3*3*3}" '1+2=3,2的平方是4,3的立方是27'