目录
基础
语句
列表
字符
元组
字典
集合
函数
文件
异常处理
????????1.注释? ? ? ??
?????????# 单行注释
???????? ''' '''? ?多行注释
# 单行注释
'''
三引号是多行注释
'''
? ? ? ? 2.变量? ??
#变量
a=10
b='dsds'
print("a =",a,"b=",b)
? ? ? ? 3.占位符、格式化输出
? ? ? ? ?“? % ”占位符
? ? ? ? %d为age变量的占位符
? ? ? ? 多个变量占位用? ? %(a,b)? 实现
#占位符、格式化输出
age=10
print("年龄为%d岁"%age)
age+=1
print("年龄为%d岁"%age)
name="yinshao"
country="china"
print("我的名字是",name,",我的国家是",country)
print("我的名字是%s,我的国籍是%s"%(name,country))
输出结果:
年龄为10岁 年龄为11岁 我的名字是 yinshao ,我的国家是 china 我的名字是yinshao,我的国籍是china
? ? ? ? 常见的格式符号
%s | 字符串 | %d | 十进制整数 | %c | 字符 | %f | 浮点数 | %o | 八进制整数 | %x | 十六进制整数 |
? ? ? ? ?4.转义字符
? ? ? ? 常见转义字符
? ? ? ? \t:制表? ? ?\n:换行? ? ?\r:回车
print("aaa","bbb","ccc")#默认间隔是空格
print("aaa","bbb","ccc",sep='.')#sep表示间隔
print("mmm")#每次打印默认自动换行
print("nnn",end=" ")#end表示尾部属性
print("xxx",end="\n")#换行
print("yyy",end="\r")
print("hello\nword")
输出结果:
aaa bbb ccc aaa.bbb.ccc mmm nnn xxx hello word
? ? ? ? 5.输入与输出
????????
password=input("请输入密码:")
print("您输入的密码是:",password)
print(type(password))
输出结果: 请输入密码:123456 您输入的密码是: 123456 <class 'str'>
#可见使用input命令输入的数据类型为字符型
#若需要计算,则需要强制转换成整型或其他类型
m=input()
n=input()
print(m+n)
输出结果:
5 6 56
#不强制转换,输出的是字符串的拼接
#运算需要强制转换
x=int(input())
y=int(input())
print(x+y)
输出结果:
5 6 11
? ? ? ? 6.运算符(常见)
? ? ? ? 幂运算:**
? ? ? ? 除法:/
? ? ? ? 整除://
? ? ? ? 取模:%
j=2
k=3
print(2**3)#幂运算
print(j/k)#除法
print(j//k)#整除
输出结果:
8 0.6666666666666666 0
? ? ? ? #条件语句
????????if 判断条件1 :
????????执行语句1
????????elif 判断条件2:
????????执行语句2
????????else:
????????执行语句3
????????
if 1:
print("TRUE")
if True:
print("true")
输出结果:
TRUE true
? ? ? ? Example:
score=52
if score>=90:
print("A")
elif score>=80:
print("B")
elif score >= 70:
print("C")
elif score>=60:
print("D")
else:
print("not pass")
?输出结果:not pass
? ? ? ? #随机数的引入
????????import random(引用函数)
????????g=random.randint(0,100000)(括号里面是范围)
? ? ? ? #For循环
? ? ? ? for i? in? range (? 初(默认0),末,步长(默认1)? )??:
? ? ? ? ? ? ? ? 执行语句
? ? ? ? for i? in? list str? 之类:
? ? ? ? ? ? ? ? 执行语句
for i in range(5):#[0,5)
print(i)
print(" ")
for j in range(5,8):#[5,8)
print(j)
print(" ")
for m in range(0,9,2):#[0,9)每次加2
print(m)
name="zaozhuang"
for n in name:
print(n,end="\t")#也可以遍历字符串
print("")
p=["sc","sdfsd","aabb","dssswwe"]
for h in range(len(p)):
print(h,p[h])
print("len=",len(p))#len(p)表示数组长度
?输出结果:
0 1 2 3 4 ? 5 6 7 ? 0 2 4 6 8 z?? ?a?? ?o?? ?z?? ?h?? ?u?? ?a?? ?n?? ?g?? ? 0 sc 1 sdfsd 2 aabb 3 dssswwe len= 4
? ? ? ? ?#While 循环
? ? ? ? while? 条件:
? ? ? ? ? ? ? ? 执行语句
mk=0
sum=0
while mk<=100:
sum=sum+mk
mk=mk+1
print(sum)
输出结果:5050
? ? ? ? #break:结束循环
? ? ? ? #continue:结束本次循环,以下不执行
aa=0
while aa<=5:
print("*"*10)
aa=aa+1
if(aa==3):
break#直接结束
print(aa)
bb=0
while bb<=5:
print("*"*10)
bb=bb+1
if(bb==3):
continue#第五次循环时,以下不在执行
print(bb)
输出结果:
1 ********** 2 ********** ********** 4 ********** 5 ********** 6 ?
? ? ? ? 类似数组
定义:list[ ]
list1 =[1,"666","xiaohai",56,89,"wang","立",522]#元素可以是不同类型
list2=[23,"ds","dsdwd22"]
list=[]
? ? ? ? 1.列表的遍历
? ? ? ? 方法一:循环下标进行遍历
i=0
for i in range(0,len(list2)):
print(list2[i])
i=i+1
? ? ? ? 方法二:直接循环列表内元素
for j in list2:
print(j)
? ? ? ? 方法三:枚举函数enumerate,同时输出下标及元素
????????
list1 =[1,"666","xiaohai",56,89,"wang","立",522]
for m,n in enumerate(list1):
print("下标:",m,"元素:",n)
#m遍历列表的下标,遍历列表元素
输出结果:
下标: 0 元素: 1 下标: 1 元素: 666 下标: 2 元素: xiaohai 下标: 3 元素: 56 下标: 4 元素: 89 下标: 5 元素: wang 下标: 6 元素: 立 下标: 7 元素: 522
????????2.列表的切片
? ? ? ? list[起始:末:偏移量]? 左闭右开? 偏移量默认1
????#最左侧第一个字符,偏移量是 0,第二个偏移量是 1.直到 len(str)-1为止。
????#最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2.直到-len(str)为止。
list1 =[1,"666","xiaohai",56,89,"wang","立",522]
print(list1[1:6:2])
print(list1[6:1:-1])
print(list1[6:1:-2])
输出结果:
['666', 56, 'wang'] ['立', 'wang', 89, 56, 'xiaohai'] ['立', 89, 'xiaohai']
? ? ? ? 3.常用函数
? ? ? ? (1).增
? ? ? ? #append? 默认增加到尾部
? ??????list.append("增加的字符或列表")
list1 =[1,"666","xiaohai",56,89,"wang","立",522]
list1.append("yin")
print(list1)
输出结果: [1, '666', 'xiaohai', 56, 89, 'wang', '立', 522, 'yin']
? ? ? ? #extend 在尾部新增列表
? ? ? ? list1.extend(list2)? ?? ?在list1后+list2
list1.extend(list2)
print(list1)
输出结果:
[1, '666', 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 23, 'ds', 'dsdwd22']
? ? ? ? #insert??
? ? ? ? list.insert(插入位置,插入值)
list3=[0,1,2]
list3.insert(1,56)#1号位插入56
print(list3)
? ? 输出结果:
[0, 56, 1, 2]
? ? ? ? (2).删
? ? ? ? #del? ?删除列表指定元素
? ? ? ? del list[删除元素的下标]
list1=[1, '666', 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 23, 'ds', 'dsdwd22']
del list1[1]
print(list1)
输出结果:
[1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 23, 'ds', 'dsdwd22']
? ? ? ? #pop? 删除最后一个元素
? ? ? ? list.pop()
list1=[1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 23, 'ds', 'dsdwd22']
list1.pop()
print(list1)
输出结果: [1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 23, 'ds']
? ? ? ? #remove? 删除指定元素
? ? ? ? list.remove(删除的元素)? ?若有重复,只删除前面的
list1=[1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 23, 'ds']
list1.remove(23)
print(list1)
输出结果:
[1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 'ds']
? ? ? ? #clear?
? ? ? ? list.clear()? 删除所有元素
list6=[12,56,89,2,3]
list6.clear()
print(list6)
输出结果:
[ ]
? ? ? ? (3).改
? ? ? ? list[修改的位置下标]=修改的值
list1=[1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 'ds']
list1[8]="yao"
print(list1)
输出结果:
[1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 'yao']
? ? ? ? (4).查
? ? ? ? #in? ? ? ? ? ? ? ? ? ? ? ? ? ? ?not in? ? 判断元素是否在列表中,默认返回ture/flase
? ? ? ? 元素 in list
? ? ? ? 元素 not in list??
print("56" in list1)
输出结果:False
? ? ? ? #index 查询元素是否在某一区间的位置,返回下标
? ? ? ? ? ? ? ?list.index(查询元素,起始位置,末位置)? ?? ? 若有重复则输出第一个位置
list1=[1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 'yao']
print(list1.index("xiaohai",0,5))
输出结果:1
? ? ? ? # count? 某个元素出现的次数
? ? ? ? list.count(元素)? ??
list1=[1, 'xiaohai', 56, 89, 'wang', '立', 522, 'yin', 'yao']
print(list1.count("666"))
输出结果:0
? ? ? ? (4).排序
? ? ? ? #sort? ?由小到大排(纯数字或者全部强制转换同一类型)
? ? ? ? list.sort()? ?由小到大? ? ? ? ? ? ? ? list.sort(reserve=True)? 由大到小
list4=[2,5,3,1,48,0,2,6,9]
list4.sort()
print(list4)
list4.sort(reverse=True)
print(list4)
输出结果:
[0, 1, 2, 2, 3, 5, 6, 9, 48] [48, 9, 6, 5, 3, 2, 2, 1, 0]
? ? ? ? 4.二维列表
? ? ? ? 列表作为列表的元素即为二维列表
? ? ? ? 调用:list[第一层位置][第二层位置]? 依次....
list5=[[12,45],["ds","wr","dswwdds"],["中国"]]
print(list5[1])
print(list5[1][1])
输出结果:
['ds', 'wr', 'dswwdds'] wr
? ? ? ? 5.小题目
????????8个老师随机分配到3个办公室
import random
office = [[],[],[]]
teacher = ["A","B","C","D","E","F","G","H"]
for name in teacher:
index=random.randint(0,2)
office[index].append(name)
k=0
for k in range(0,len(office)):
print(office[k])
k=k+1
输出结果:
1:
['G'] ['A', 'E'] ['B', 'C', 'D', 'F', 'H'] 2:
['C', 'D', 'H'] ['E', 'G'] ['A', 'B', 'F']
? ? ? ? 1.字符串
? ? ? ? '一般字符串'? ? ? ? ? ? ? "一般句子"? ? ? ''' 一般段落 '''
word ='字符串'
sen= "这是一个句子"
par ="""
这是一个段落
可以写好几行
"""
print(word)
print(sen)
print(par)
输出结果:
字符串 这是一个句子
? ? 这是一个段落 ? ? 可以写好几行
? ? ? ? 2.转义字符
? ? ? ? #? ?\ 使用可以输出一些具有特殊意义的字符? \n换行符?? ?rjia
a='\'' # \ 可以转义字符
b='I\'m a student'
print(a)
print(b)
print("hello\nzaozhuang")
print(r"hello\nzaozhuang")
输出结果:
'
hello zaozhuang hello\nzaozhuang
? ? ? ? ?3.切片
? ? ? ? #str[起始:末:偏移量]? 左闭右开? 偏移量默认1
???#最左侧第一个字符,偏移量是 0,第二个偏移量是 1.直到 len(str)-1为止。
???#最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2.直到-len(str)为止。
str1="zaozhuang"
print(str1)
print(str1[-8])
print(str1[1])
print(str1[0:3])#[0,3)
print(str1[0:9:2]) #[起始值:结束值:间隔值]
print(str1[-4:])#倒数四个
print(str1[-5:-3])#倒数5个到倒数第3个
print(str1[::-1])#间隔为1,反向输出
str2="ni hao"
print(str1+str2)#字符拼接
print(str1*3)
输出结果:
zaozhuang a a zao zohag uang hu gnauhzoaz
zaozhuangni hao zaozhuangzaozhuangzaozhuang
? ?4.函数? ? ?
# a='helLO'
a.capitalize() | 产生新的字符串,首字母大写 | HELLO | a.title() | 产生新的字符串,每个单词都首字母大写 | hello | a.upper() | 产生新的字符串,所有字符全转成大写 | HELlo | a.upper() | 产生新的字符串,所有字符全转成小写 | Hello | a.swapcase() | 产生新的,所有字母大小写转换 | Hello |
aaa='helLO'
print(aaa.upper()) # 全部大写
print(aaa.lower()) # 全部小写
print(aaa.swapcase()) # 大小写互换
print(aaa.capitalize()) # 首字母大写,其余小写
print(aaa.title()) # 首字母大写
?输出结果:
HELLO hello HELlo Hello Hello
? ? ? ? ?#使用内置函数 ord()可以把字符转换成对应的 Unicode 码;
???????? #使用内置函数 chr()可以把十进制数字转换成对应的字符。
print(ord('a'))
print(ord('高'))
print(chr(66))
输出结果: 97 39640 B
? ? ? ? #字符串替换
? ? ? ? str.replace(代替换的字符,替换成)
bbb="dsssadaaedfrgtgfds"
bbb=bbb.replace('a','高')
print(bbb)
输出结果:dsss高d高高edfrgtgfds
? ? ? ? #分割与合并(生成列表)
???????split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔 符,则默认使用空白字符(换行符/空格/制表符)。
????????join()的作用和 split()作用刚好相反,用于将一系列子字符串连接起来。
? ? ? ? str.split() 见空格就分割
? ? ? ? str.split('1')见1就分割
? ? ? ? ' * '.join(str)? ?每一组之间插入*连接起来
cc= "to be or not to be"
print(cc.split())#见空格就分开
print(cc.split('be'))#见be直接拿出来
dd = ['sxt','sxt100','sxt200']
print('*'.join(dd))#在每组之间插入*
输出结果:
['to', 'be', 'or', 'not', 'to', 'be']
['to ', ' or not to ', '']
sxt*sxt100*sxt200
? ? ? ? #常用函数
len(a) | 字符串长度 | a.startwith() | 以指定字符串开头 | a.endwith() | 以指定字符串结尾 | a.find() | 第一次出现指定字符串的位置 | a.rfind() | 最后一次出现指定字符串的位置 | a.count() | 指定字符串出现了几次 | a.isalnum() | 所有字符全是字母或数字 |
ccc="""abcdddefghijklmnopqrstuvwxyz"""
print(len(ccc))
print(ccc.startswith("abcd"))
print(ccc.endswith('xyz'))
print(ccc.find('h'))
print(ccc.rfind('j'))
print(ccc.count('d'))
print(ccc.isalnum())
输出结果:
?28 True True 9 11 3 True
? ? ? ? #Tuple? 元组
????????元组中的元素无法修改,但可以包含对象,列如list 元组写在小括号里,元素用,分开,定义只有一个元素的元组,也必须加”,“
t1=("abcd",789,2.236,'rabit',70.2)
t2=(2,)
t21=(2)
t3=(1,["asss",2],56)
t4=()#空元组
t3[1][0]="S"
print(t1)
print(t2)
print(type(t2))#有一个元素必须加逗号的原因
print(type(t21))
print(t3)
????????#二维元组 tuple
? ? ? ? tuple[第一层][第二层]...? ??
输出结果:
('abcd', 789, 2.236, 'rabit', 70.2) (2,) <class 'tuple'> <class 'int'> (1, ['S', 2], 56)
????????#切片(同理)
????????最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2.直到-len(str)为止。
????????最左侧第一个字符,偏移量是 0,第二个偏移量是 1.直到 len(str)-1为止。
t1=("abcd",789,2.236,'rabit',70.2)
print(t1[1:3])
print(t1[-2])
print(t1[1:5:2])
输出结果:
(789, 2.236) rabit (789, 'rabit')
????????#其他
? ? ? ? del tuple? ?删除整个元组,不能删除元素?
? ? ? ? count 记数
? ? ? ? 强制转换? tuple(list)
t5=(1,1,1,1,2,2,6,6)
print(t5.count(1))
print("/************************")
#强制转换
list=[1,2,"ff"]
t=tuple(list)
print(t)
print(type(list))
print(type(t))
输出结果:
(1, 2, 'ff') <class 'list'> <class 'tuple'>
? ? ? ? #dic? 字典? ?大括号表示
? ? ? ? dic={"key":value,....}? ? ?键-值—(key,value)? 键具有不变性,键必须唯一
? ? ? ? #访问
? ? ? ? dic["key"]? 直接访问不存在的key,会报错
? ? ? ? dic.get(key) 利用get()访问不存在的key,会返回none
? ? ? ? dic.get(key,自定义返回值) 访问不存在的key,会返回自定义的值
dic1={"A":95,"B":"baba","C":20,"D":"ezz","E":1}
print(dic1["A"])#访问 dic[key]
#访问不存在的key,直接访问会出错
#print(dic1[F])
print(dic1.get("F"))#使用get访问不存在的键,默认返回none
print(dic1.get("l",88))#get(key,设置返回值) 此键默认返回88
输出结果:
95 None 88
? ? ? ? #遍历
? ? ? ?遍历键???for key in dic.key():
? ? ? ? ? ? ? ? ????????print(key)
? ? ? ?遍历值? for value in dic.values():
????????????????????????print(value)
? ? ? ? 遍历键与值?for key,value?in dic.items():
???????????????????????????????? print("key is %s,value is %s"%(key,value))
????????
dic1={"A":95,"B":"baba","C":20,"D":"ezz","E":1}
for key in dic1.keys():#遍历键
print(key)
print("*****")
for value in dic1.values():#遍历值
print(value)
print("*****")
for key1,value1 in dic1.items():
print("key is %s,value is %s"%(key1,value1))
输出结果:
A B C D E F ***** sha baba 20 ezz 1 ssss ***** key is A,value is sha key is B,value is baba key is C,value is 20 key is D,value is ezz key is E,value is 1 key is F,value is ssss ?
? ? ? ? #其他函数
? ? ? ? (1)增
????????dic[new key]=new value
? ? ? ? (2)删
????????del dic[键] 删除该键及其对应的值
???????del dic 直接删除字典
???????clear 清空字典元素
? ? ? (3)改
????????dic["key"]='new value'
? ? ? (4)查
????????dic.keys()#得到所有的键(以列表形式)
????????dic.values() #得到所有的值(以列表形式)
????????dic.items() #得到所有的项(以列表(含有元组)形式)
dic1={"A":95,"B":"baba","C":20,"D":"ezz","E":1}
dic2={"a":2,"s":56,"sa0":26}
dic1["F"]="ssss"
print(dic1)
print("***************************")
dic2={"a":2,"s":56,"sa0":26}
#del dic[键] 删除该键及其对应的值
del dic2["s"]
print(dic2)
#del dic 直接删除字典
#del dic2
#print(dic2)
# clear 清空字典元素
dic2.clear()
print(dic2)
print("*********************")
dic1["A"]='sha'
print(dic1)
print("******************")
print(dic1.keys()) #得到所有的键(以列表形式)
print(dic1.values()) #得到所有的值(以列表形式)
print(dic1.items()) #得到所有的项(以列表(含有元组)形式)
print("*********************")
输出结果:
{'A': 95, 'B': 'baba', 'C': 20, 'D': 'ezz', 'E': 1, 'F': 'ssss'} *************************** {'a': 2, 'sa0': 26} {} ********************* {'A': 'sha', 'B': 'baba', 'C': 20, 'D': 'ezz', 'E': 1, 'F': 'ssss'} ****************** dict_keys(['A', 'B', 'C', 'D', 'E', 'F']) dict_values(['sha', 'baba', 20, 'ezz', 1, 'ssss']) dict_items([('A', 'sha'), ('B', 'baba'), ('C', 20), ('D', 'ezz'), ('E', 1), ('F', 'ssss')]) *********************
? ? ? ? #定义
? ? ? ? set=[ ]? 集合无序性,无重合
set1=[1,"6566"]#定义set1=[]中括号
print(set1[0])#调用
s=set([1, 1, 1, 1, 11, 12, 2, 2, 22, 2])#强制转换为集合
print(s)#集合无序性 无重合
输出结果:
1 {1, 2, 11, 12, 22} ?
? ? ? ? #函数定义
? ? ? ? def? f(参数):
? ? ? ? ? ? ? ? 内容
? ? ? ? ? ? ? ? return 返回值(可以多个)
def f1():#不带参
print("*"*10)
print("函数定义")
print("*"*10)
def f2(a,b):#带参
c=a+b
print(c)
def f3(a,b):#返回值
return a+b,a-b#同时返回两个
? ? ? ? #函数调用
? ? ? ? f(参数)
f1()
f2(2,3)
print(f3(5,6))
? ? ? ? #变量类型
? ? ? ? 全局变量:主函数定义的变量
? ? ? ? 局部变量:函数里定义的变量
? ? ? ? 在函数中修改全局变量:global? m
m=100#全局变量
def t1():#局部#bian变量
m=150
print("t1 of m:%d"%m)
t1()
print("m:%d"%m)
def t2():
global m#在函数中修改全局变量
m=200#定义为global 为全局变量
print("t2 of m:%d"%m)
t2()
print("m:%d"%m)
输出结果:
t1 of m:150 m:100 t2 of m:200 m:200
? ? ? ? #打开? 读写?
#f=open("文件名","模式")
f1=open("t1.txt","w")#打开文件,写入模式,若为这个文件,则新建
f1.write("hello worldhello worldhello world\nhello worldhello worldhello world\nhello worldhello worldhello worldhello world")#写入文件
f1.close()#关闭文件
f2=open("t1.txt","r")#只读,读文件,若文件不存在,则报错
a=f2.read(5)#读5个字符
print(a)
b=f2.read(6)#继承后面依次往后排
print(b)
c=f2.readlines()#继承上面,每一行按列表形式输出
print(c)
#f.readline 继承上面,一行一行输出
f2.close()
输出结果:
hello ?world ['hello worldhello world\n', 'hello worldhello worldhello world\n', 'hello worldhello worldhello worldhello world']
? ? ? ? #os应用
????????获取目录或文件名
filename = '/1234/year/month/day/hello.jpg'
print(os.path.basename(filename))
print(os.path.dirname(filename))
hello.jpg
/1234/year/month/day
????????返回指定目录下的所有文件名和目录名 ,返回的是一个列表
print(os.listdir('img'))
['file1']
????????创建目录【 mkdir / mkdir -p】
os.mkdir('img')
os.makedirs('img/file1/file2')
????????可以删除多层递归的空目录,若目录中有文件则无法删除
os.removedirs('img/file1/file2')
?????????不能递归删除目录,一层一层删
os.rmdir('img')
OSError: [Errno 39] Directory not empty: 'img'
????????创建文件 删除文件
os.mknod('00_ok.txt')
os.remove('00_ok.txt')
????????文件重命名
os.rename('data.txt','data1.txt')
????????判断文件或目录是否存在
print(os.path.exists('ips.txtyyyy'))
print(os.path.exists('/home/kiosk/PycharmProjects/2019python/ips.txt'))
False
True
#捕获异常
try:
print("-------------------1")
f1=open("t8.txt","w")
print("-------------------2")
except IOError:
print("error")
finally:#必执行
print("文件关闭")
f1.close()
|