1、登录验证代码
1.1纯登录验证-函数实现

def login(username,password): ''' 用于用户名密码的验证 :param username: 用户名 :param password: 密码 :return: Ture 用户验证成功False用户验证失败 ''' f = open("db",'r',encoding="utf-8") for line in f: line = line.strip() ##即可去掉空格,也可去除换行符,也可加参数去掉指定的字符 line_list = line.split("$") if username == line_list[0] and password == line_list[1]: return True break f.close() return False user = input("请输入用户名") pwd = input("请输入密码") if login(user,pwd): print("登录成功") else: print("登录失败"
1.2登陆、注册--函数实现

#!/usr/bin/env python # -*- coding:utf-8 -*- def login(username,password): ''' 用于用户名密码的验证 :param username: 用户名 :param password: 密码 :return: Ture 用户验证成功False用户验证失败 ''' f = open("db",'r',encoding="utf-8") for line in f: line = line.strip() ##即可去掉空格,也可去除换行符,也可加参数去掉指定的字符 line_list = line.split("$") if username == line_list[0] and password == line_list[1]: return True break f.close() return False def register(username,password): ''' 注册用户 1、打开文件a 2、用户名&密码 :param usernmae:用户名 :param password: 密码 :return: True创建成功 False 注册失败 ''' try: with open("db","a",encoding="utf-8") as f: temp = " " + username + "$" + password f.write(temp) return True except: return False def user_exist(username): ''' 检查用户名是否存在 :param username:需要检查的用户名 :return: True 存在 false 不存在 ''' #一行一行查找 with open("db",'r',encoding="utf-8") as f: for line in f: line = line.strip() line_list = line.split("$") if line_list[0] == username: return True return False def main(): print("欢迎登录xxx系统") while True: inp = input("1:登录,2:注册,其他:退出。") if inp == "1": user = input("请输入用户名") pwd = input("请输入密码") if login(user,pwd): print("登录成功") else: print("登录失败") elif inp == "2": user = input("请输入用户名") pwd = input("请输入密码") is_exsit = user_exist(user) if is_exsit: print("用户已存在") else: result = register(user,pwd) if result: print("注册成功") else: print("注册失败") else: break print("系统退出") main()
2、冒泡算法
原理:每次找序列最大的

print(li) for j in range(1,len(li)): for i in range(len(li) - j): # current = li[i] # next_value = li[i+1] # print(i,current,next_value) if li[i] > li[i+1]: temp = li[i] li[i] = li[i+1] li[i+1] = temp print(li)
3、递归
循环调用直至达到跳出条件后将执行结果逐级传递回来。

def f5(depth,a1,a2): if depth == 10: return a1 a3 = a1 + a2 r = f5(depth+1,a2,a3) return r ret = f5(1,0,1) print(ret)
4、装饰器
使用原因:满足编程“对函数内部封闭,函数外部开发”的原则
适用范围:对函数、方法、类生效,可在其执行前或执行后做一些其他的操作
工作原理:执行outer函数,将其下的函数名当做参数。将outer的返回值重新复制给f1。其本质是,将原函数封装到新函数并执行新函数

def outer(func): def inner(): print("Hello world!") print("Hello world!") print("Hello world!") r = func() print("End") print("End") print("End") return r return inner @outer def f1(): print("F1") return "OOO" f1()
4.1 一个装饰器可装饰多个函数
4.2 多个装饰器和装饰一个函数
5、作业:
5.1、写一个登录、注册、删除、修改密码的程序
5.2、写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。

#斐波那契数列: # 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 f5(depth,a1,a2): if depth == 10: return a1 a3 = a1 + a2 r = f5(depth+1,a2,a3) return r ret = f5(1,0,1) print(ret)
5.3、单层装饰器、多层装饰器的工作原理?