一、集合
#集合,天生去重
s = set() #定义空的集合
s2 = {‘1‘,‘2‘,‘3‘}# 里面数据有冒号是字典,无冒号是集合
ls = [1,1,1,2,2,2,2]
print(set(ls))#强制转换集合类型
#集合是无序的,所以无法通过下标取值
#添加值
s2.add(‘5‘)
print(s2)
#交集 并集 差集 对称差集
s3 = [1,2,3]
s2.intersection(s3)#取交集
s3 & s2 #取交集
s2.union(s2)#取并集
s2 | s3#取并集
s2.difference(s3)#取差集,取s2中的和s3不同的
s2 - s3#取差集,取s2中的和s3不同的
s2.remove(1)#删除值
s2.pop()#随机删除一个值
二、
#函数 方法 功能 说白了函数就是把一堆代码组合到一起,变成一个整体
#函数提高代码的复用性
def hello():
print(‘hello‘)
#函数不调用不会被执行
hello()#调用
def duxie(name,content = ‘‘): #形参,形式参数
f = open(name,‘a+‘)
if content:
f.write(content)
res = ‘‘
else:
f.seek(0)
res = f.read()
f.close()
return res
duxie(‘123.txt‘,‘123‘) #实参,实际参数
duxie(‘123.txt‘)
print(duxie(‘123.txt‘))
user = duxie(‘123.txt‘)
print(user)
#形参
#实参
#位置参数 必填参数
#默认值参数 def duxie(name,content = ‘‘): 形参里面直接指定一个参数,不是必填的,实参有参数用实参,没参数用默认值
#如果函数没有写return的话,返回的是none,return不是必写的,需要返回结果在写
#return 1.结束函数 2.获取值
#全局变量 局部变量
#函数里面的变量都是局部变量
a = 100
def test():
a = 5
print(a)
test()
print(a)
#修改全局变量
a = 100
def test():
global a #声明全局变量,声明之后就可以更改
a = 5
print(a)
test()
print(a)
三、可变参数
# def test(a,b=1,*args): #可变参数
# print(‘a‘,a)
# print(‘b‘, b)
# print(‘args‘,args )
# print(args[0])
# test(‘yu‘,‘22‘,‘qq‘,‘ww‘)#位置调用
# test(a=4,b=5)#关键字调用
#
# t = [1,2,3,4]
# test(*t)
#关键字参数
def test2(a,**kwargs):
print(a)
print(kwargs)
# test2()
test2(a=1,name=‘ybq‘,sex=18)
#写一个校验字符串是否为合法的小数
#0.88 -0.99
def check_f(s):
s = str(s)
if s.count(‘.‘)== 1:
s_list = s.split(‘.‘)
left = s_list[0]
right = s_list[1]
if left.isdigit() and right.isdigit():#正小数
return True
elif left.startswith(‘-‘) and left.count(‘-‘)==1:
if left.split(‘-‘)[-1].isdigit() and right.isdigit():#负小数
return True
return False
print(check_f(0.1))
四、递归调用
#递归 就是自己调用自己
def test1():
num = int(input(‘please enter a number:‘))
if num % 2 == 0: # 判断输入的数字是不是偶数
return True #如果是偶数的话,程序就退出了,返回true
print(‘不是偶数请重新输入!‘)
return test1()#如果不是偶数的话继续调用自己,输入值
print(test1())#调用test
#用递归能实现的用循环都能实现,最好别用递归
#递归最多能递归999次