python的基础语法
基础操作:
age=20 #声明一个变量age,用来存储20
1+1 #基础数学加法
print('hello world') #打印hello world
条件判断if
if 1==2:
print('')
else:
print('')
for循环操作
for i in range(5):
print(i)
while循环操作
while n>0:
print('')
break,continue,pass语句
break可以跳出循环
continue可以跳出当前循环,进行下次循环
pass是个占位语句,不做任何操作
Number数据类型
python支持三种不同的数字类型
int,float,complex
a=3
a=3.14
a=3+4i
string数据类型
python支持字符串拼接,截取多种运算
a="hello"
b="python"
print(a+b)
print(a[1:4]) #python是左闭右开的,从0开始的 ,所以截取的是ell
print(a*3)#输出重复字符串hellohellohello,*表示重复
print('h' in a)#判断字符串是否包含h
print('h' not in a)#判断字符串中是否不包含h
'-'.join("hello")#join()是以字符作为分隔符,把字符串所有元素合并成为一个新的字符串h-e-l-l-o
字符串中单引号和双引号,没什么区别,里面需要转义字符\
字符串中的三引号,里面就不要转义字符了
print("i\'m going to school")
print('i\'m going to school')
print("""i'm going to school""")
这三句话输出的是一样的
List列表
#列表是用[]表示,用逗号分隔开,列表索引值以0开始,以-1从末尾的开始位置
list = ['abcd', 786 , 2.23, 'runoob', 70.2]
print(list[1:3])#遵循左闭右开的原则,[786,2.23]
list1=[123,'runoob']
print(list+list1)
#遍历列表,获取元素:
for name in names:
print(name)
#列表元素添加:
append()末尾追加
names.append('zhx1')
extend()一次可以添加多个,一个列表加到另一个列表上,列表合并
models=['zhx','zhr']
names.extend(models)
insert(1,'')指定位置添加
names.insert(1,'zhx2')
#修改列表元素:
通过下标来进行修改
names[1]='zhx'
len(names)#列表长度
#删除列表元素,有三种方式:
del names[1]
names.remove('zhx')
names.pop(1)
#列表切片,就是把列表中的一些元素切出来,返回的是一个列表,遵循左闭右开的原则:
print(names[2:5])#就是下标为2,3,4组成的列表
print(names[-1:])#就是最后一个元素组成的列表
print(names[-3:-1])#就是-3,-2组成的一个列表
print(names[-5:-1:2])#就是-5,-4,-3,-2,这些每隔一个组成的列表,就是-5,-3组成的列表
print(names[::2])#就是names中全部元素,从第一个开始每隔1个组成的列表
print(names[::-1])#就是从后往前取
#列表排序:
sorted(names)#默认是升序
sorted(names,reverse=True)#降序
Tuple元组
#tuple与list列斯,不同之处碍于 tuple的元素不能修改,tuple写在小括号里,元素之间用逗号隔开,元组元素不可修改,但可以包含可变对象,如list
t1 = ('abcd', 786 , 2.23, 'runoob', 70.2)
t2 = (1, )#元组中只有一个元素的时候,需要在最后加上逗号
t3 = ('a', 'b', ['A', 'B'])
t3[2][0] = 'X'
#元组中存放元素:
tuple2=tuple(names)#names是一个列表
print(tuple2)
#元组的访问,通过下标进行访问
print(tuple2[1])
#元组的修改:
t1 = (1,2,3)+(4,5)
print(t1)
t2 = (1,2) * 2
print(t2)
#元组的一些函数:
print(max(random_tuple))
print(min(random_tuple))
print(sum(random_tuple))
print(len(random_tuple))
#统计元组中某个元素的个数:
print(random_tuple.count(14))
#找到元组中元素对应的下标
if(4 in random_tuple):
print(random_tuple.index(4))#如果4不存在,会报错,所以要 判断
# 元组的拆包和装包
t3=(1,2,3)
a,b,c=t3
print(a,b,c)#1 2 3
# 当元组中元素个数和变量个数不一致的时候
t4=(1,2,3,4,5)
a,b,*c=t4#把t4[0],t4[1]分别赋值给a,b,其余元素装包后赋值给c
print(a,b,c)#1 2 [3, 4, 5]
print(c)#[3, 4, 5]
print(*c)#3 4 5
dict字典数据类型
{}来表示
字典是无序的对象集合,使用键-值(key-value)存储,具有极快的查找速度
key必须是不可变类型,必须是唯一的
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
print(d['Michael'])
# list可以转成字典,但前提是列表中的元素都要成对出现
dict3=dict([('name','杨超越'),('weight',45)])
print(dict3)#{'name': '杨超越', 'weight': 45}
# 字典中的items(),keys(),values()
dict5={'杨超越':165,'虞书欣':166,'上官婉儿':164}
print(dict5.items())#dict_items([('杨超越', 165), ('虞书欣', 166), ('上官婉儿', 164)])
for key,value in dict5.items():
if value>165:
print(key)#虞书欣
# 取出字典中所有的值,保存到列表中 values()
results=dict5.values()
print(results)#dict_values([165, 166, 164])
# 求平均身高
total=sum(results)
avg=total/len(results)
print(avg)
#取出字典中所有的key,保存到列表中
names=dict5.keys()
print(names)#dict_keys(['杨超越', '虞书欣', '上官婉儿'])
print(dict5.get("杨超越"))
print(dict5.get("zhao",170))#如果能够取到值,则返回字典中的值,否则返回默认值
#删除字典中的key和value
result=dict5.pop("虞书欣")#通过key删除value,返回value
print(result)
print(dict5)
set数据类型
set也是一组key的集合,但不存储value,由于key不能重复,所以,在set中,没有重复的key
set是无序的,重复元素在set中自动被过滤
s = set([1, 1, 2, 2, 3, 3])
print(s)
{1, 2, 3}
python math模块
import math
print(math.ceil(4.1)) #返回数字的上入整数
print(math.floor(4.9)) #返回数字的下舍整数
print(math.fabs(-10)) #返回数字的绝对值
print(math.sqrt(9)) #返回数字的平方根
print(math.exp(1)) #返回e的x次幂
python 随机数random模块
import random
k=random.random()#返回0到1之间的一个实数
random.seed(10)#设置种子,这样每次的随机数都是一样的
random.randint(1,20)#1到20的随机整数
python面向对象
init()定义构造函数,会把代表自身的self作为第一个参数传入
使用.来访问对象的属性
class Animal:
def __init__(self,name):
self.name=name
print("动物名称实例化")
def eat(self):
print(self.name+'吃东西')
def drink(self):
print(self.name+'喝水了')
cat=Animal('miaomiao')
print(cat.name)
cat.eat()
cat.drink()
#结果
动物名称实例化
miaomiao
miaomiao吃东西
miaomiao喝水了
# 定义子类
class person:
def __init__(self,name):
self.name=name
print("调用父类构造函数")
def eat(self):
print("调用父类方法")
class student(person):#定义子类
def __init__(self):
print("调用子类构造方法")
def study(self):
print("调用子类方法")
s=student();#实例化子类
s.study()
s.eat()
#结果:
调用子类构造方法
调用子类方法
调用父类方法
python中的json字符串处理
import json
data=[{'b':2,'d':4,'a':1,'c':3,'e':5}]
json1=json.dumps(data,sort_keys=True,indent=2,separators=(',',':'))
#其中dumps是把字典转为json字符串,sort_keys=True是进行字典排序,indent是缩进符,separators是去掉,和:后面的空格
print(json1)
#结果:
[
{
"a":1,
"b":2,
"c":3,
"d":4,
"e":5
}
]
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
text=json.loads(jsonData)#loads是把json字符串转为字典
print(text)
#结果:
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
python异常处理
捕捉异常用的是try/except语句,可以检测try语句块中的错误,从而让except语句捕捉异常信息并处理
try:
fh=open("D:/test/test1/12.txt","w")
fh.write("这是一个测试文件,用于测试异常")
except IOError:
print('Error:没有找到文件或读取文件失败')
else:
print("内容写入文件成功")
finally:#finally中的内容,退出try时总会执行
print("关闭文件")
fh.close()
python对文件和文件夹的操作
引入os包
import os
题目:找出一个文件夹下的文件,其中文件名含有2020的文件,把文件和文件所在目录打印出来
1,可以用递归来做
2,可以用os.walk(path)来做
import os #引入os
path1="D:\\test"#要查找的文件名
filename="2020" #记录文件名
result1=[]#这个列表是用来存储所有的文件名
def findfiles(path,result):
#这里是要查找path路径下的所有文件,包括文件下的文件,使用递归来做
newpath=path
if os.path.isfile(path):#这是目录是文件,直接添加到result中
result.append(path)
elif os.path.isdir(path):#这个目录是文件夹,需要遍历这个文件夹下的文件,进行递归
for s in os.listdir(path):
newdir=os.path.join(path,s)
findfiles(newdir,result)
return result
def findfiles1(path,result):
for home,dirs,files in os.walk(path):
for s in files:
result.append(os.path.join(home,s))
return result
if __name__=='__main__':
files=findfiles1(path1,result1)
i=1
for s in files:
if s.find(filename)!=-1:
print('%d'%i,','+s)
i=i+1
#结果:
1 ,D:\test\20204568974.txt
2 ,D:\test\45465452020456.txt
3 ,D:\test\jiwej20203232.txt
4 ,D:\test\test1\20204568974 - 副本 (5).txt
5 ,D:\test\test1\20204568974 - 副本.txt