1、用户登录,验证,注册
def login(a,b): """ 用于用户名和密码的验证 :param a: 用户名 :param b: 密码 :return:Ture 用户验证成功 False 用户验证失败 """ c=open("334.txt","r",encoding="utf-8") for line in c: line=line.strip() #默认strip无参数用于去除换行符和空格 new_line=line.split("*") #有参数,移除两端指定的值 if new_line[0]==a and new_line[1]==b: return True return False def yanzheng(a): """ 用于验证用户名是否存在 :param a: 用户名 :return: True 用户名存在 """ c=open("334.txt","r",encoding="utf-8") for line in c: line=line.strip() #默认strip无参数用于去除换行符和空格 new_line=line.split("*") #有参数,移除两端指定的值 if new_line[0] ==a: return True def zhuche(a,b): """ 用于用户注册 :param a: 用户名 :param b: 密码 :return: True 注册成功 """ c = open("334.txt", "a", encoding="utf-8") temp="\n"+ f1 + "*" + f2 c.write(temp) return True def min(): print("欢迎登录英雄联盟官网") m=input("登录:1;注册:2") if m=="1": f1=input("请输入用户名:") f2=input("请输入密码:") f3 = login(f1, f2) if f3: print("登录成功") else: print("登录失败") elif m=="2": f1=input("请输入用户名:") f2=input("请输入密码:") f4=yanzheng(f1) if f4: print("用户名已存在") else: f5=zhuche(f1,f2) if f5: print("恭喜注册成功") min()
2、冒泡排序
冒泡排序是排序中经典排序之一,它利用相邻元素比较并进行位置的互换...
思路:相邻两个值进行比较,将较大的值放在右侧,依次比较!
li = [22, 4, 77, 44, 6, 99, 100, 3] for j in range(1,len(li)): #多循环几次把顺序排出来 for i in range(len(li)-1): #减1是因为最后一位不能比了 # print(li[i]) 先利用索引把li中元素循环出来 if li[i]>li[i+1]: #比较相邻俩数的大小 temp=li[i] #利用第三个数把大小不同的俩数位置互换 li[i]=li[i+1] li[i+1]=temp # print(li) 这样只能把最大的数挑出来 print(li)
3、递归
程序本身自己调用自己称之为递归,递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回
def f4(): def f3(): #f4函数中包括f3函数 def f2(): #f3函数中包括f2函数 def f1(): #f2函数中包括f1函数 return "qqqq" #f1函数的返回值"qqq" return f1() return f2() return f3() m=f4() print(m)
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
def f1(a1,a2): print(a1) a3=a1+a2 f1(a2,a3) f1(0,1)
4、装饰器
定义: 装饰器用于装饰某个函数,可以让函数在执行前或执行后执行某些操作
@outer: 1、执行outer函数,并将其下面的函数名赋值给outer的参数
2、将outer的返回值重新赋值给f1
def outer(func): def inner(): print("222") print("222") r=func() print("3333") print("3333") return r return inner @outer def f(): print("000") r=f() #1、遇到outer函数放到内存 #2、遇到@outer 执行outer函数,把@outer下面的函数名当做参数执行outer函数, #3、把outer的返回值inner重新赋值给f #4、现在执行f()就相当于执行inner #5、执行inner,先print("222") #6、再执行func ,这里的func是原来的函数f()既print("000") #7、再执行print("333") #8、返回一个原来函数的返回值r给inner就是现在的f
装饰器可以装饰具有处理n个参数的函数(利用*args和**kwargs)
def outer(func): def inner(*args,**kwargs): print("222") print("222") r=func(*args,**kwargs) print("3333") print("3333") return r return inner @outer def f(a1,a2): print("000") r=f(1,2) #这里传的参数必须和f函数的参数个数一致
多个装饰器同时对一个函数装饰的情况
def outer(func): def inner(*arg,**kwargs): print("123") ret=func(*arg,**kwargs) print("456") return ret return inner def outer9(func): def inner(*arg,**kwargs): print("3.5") ret=func(*arg,**kwargs) return ret return inner @outer @outer9 def index(a1,a2): print("ffffff") return a1+a2 index(1,2)