题目
练习1:给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
代码
python
from typing import List
def test1(nums):
seem = set()
for num in nums:
if num in seem:
return num
seem.add(num)
return -1
def main():
print()
nums = [
[1, 3, 4, 2, 2], # 重复2
[3, 1, 3, 4, 2], # 重复3
[1, 1], # 重复1
[2, 2, 2, 2, 2], # 重复2
[1, 2, 3, 4, 5, 6, 7, 8, 9, 9]] # 重复9
#遍历每个测试用例
for i,num in enumerate(nums):
print(f"{i+1}:{num}")
res = test1(num)
print(f"重复的数字是:{res}")
if res != -1:
count = num.count(res)
print(f"数字{res}出现了{count}")
print()
if __name__ == '__main__':
main()
运行

题目
2:编写一个登录功能,使用序列化完成,并使出装饰器完成用户名和密码的记标次登录时间
- 1.存储文件中的用户名和密码,使用序列化的形式--对象
- 2.读取文件中的数据-反序列化的对象,
- 3.用户输入登录的账户和密码,检验,完成登录操作
- 4.装饰器记录登录的账户和密码,及登录时间
代码
python
import pickle
from datetime import datetime
from functools import wraps
class User:
def __init__(self, username,password):
self.username = username
self.password = password
self.login_count = 0
self.last_login_time = None
# 1.读取文件(反序列号):
def load_users():
try:
with open("users.txt","rb") as f:
users = pickle.load(f)
return users
except Exception as e:
print(e)
return {}
# 2.保存文件(序列化)
def save_users(users):
try:
with open("users.txt","wb") as f:
pickle.dump(users,f)
print(f"保存了{len(users)}个用户")
except Exception as e:
print(e)
# 3.登录
def verify_user(users,username,password):
if username in users:
if users[username].password == password:
return True
return False
# 4.装饰器记录登录信息
def login_logger(func):
def wrapper(username, password,users):
login_time = time.strftime("%Y-%m-%d %H:%M:%S")
print(f"登录时间:{login_time}")
print(f"用户名:{username}")
print(f"密码:{'*'*len(password)}")
result = func(username,password,users)
if result:
users[username].login_count += 1
users[username].last_login_time = datetime.now()
save_users(users)
print(f"登录成功,")
print(f"登录次数{username[username].login_count}")
else:
print(f"失败")
return result
return wrapper
# 登录 装饰器
@login_logger
def login(username,password,users):
return verify_user(users,username,password)
def main():
#1.读取文件(反序列化)
users = load_users()
print(f"加载了 {len(users)} 个用户\n")
# 2.保存文件
save_users(users)
print(f"保存成功")
# 3. 检验登录
login("admin", "123456", users)
login("admin", "wrongpassword", users)
login("unknown", "123456", users)
login("admin", "123456", users)
print("所有用户:")
for username, user in users.items():
print(f"{username}:登录{user.login_count}次")
if __name__ == "__main__":
main()
运行
