python练习4
1.给定一个包含n1个整数的数组nums其数字在1到n之间(包含1和n),可知至少存在一个重复的整数 假设只有一个重复的整数请找出这个重复的数 -- 可以使用多种方式 -异或运算/集合def find_duplicate_xor(nums): 使用异或运算找出重复的数字。 时间复杂度: O(n) 空间复杂度: O(1) n len(nums) - 1 result 0 # 将数组中的所有元素进行异或 for num in nums: result ^ num # 将1到n的所有整数进行异或 for i in range(1, n 1): result ^ i return result # 示例 nums1 [1, 3, 4, 2, 2] print(f数组 {nums1} 中重复的数字是 (使用异或): {find_duplicate_xor(nums1)}) # 输出: 2 nums2 [3, 1, 3, 4, 2] print(f数组 {nums2} 中重复的数字是 (使用异或): {find_duplicate_xor(nums2)}) # 输出: 32.编写一个登录功能使用序列化完成并使用装饰器完成用户名和密码的记录及每次登录时间- 1.存储文件中的用户名和密码使用序列化的形式--对象- 2.读取文件中的数据-反序列化的对象- 3.用户输入登录的账户和密码检验完成登录操作- 4.装饰器记录登录的账户和密码及登录时间import pickle import datetime import os # 用户数据文件名 USER_DATA_FILE users.pkl LOGIN_LOG_FILE login_log.txt # --- 1. 存储文件中的用户名和密码使用序列化的形式 -- 对象 --- def initialize_users(): 初始化用户数据文件 users { admin: password123, user1: mysecret } with open(USER_DATA_FILE, wb) as f: pickle.dump(users, f) print(f已初始化用户数据到 {USER_DATA_FILE}) # --- 2. 读取文件中的数据 - 反序列化的对象 --- def load_users(): 从文件中加载用户数据 if not os.path.exists(USER_DATA_FILE): print(f用户数据文件 {USER_DATA_FILE} 不存在。) return {} with open(USER_DATA_FILE, rb) as f: return pickle.load(f) # --- 4. 装饰器记录登录的账户和密码及登录时间 --- def log_login(func): 装饰器记录登录信息 def wrapper(username, password): timestamp datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S) log_message f[{timestamp}] 尝试登录: 账户{username}, 密码{password}\n with open(LOGIN_LOG_FILE, a) as f: f.write(log_message) print(log_message.strip()) # 在控制台也打印一条消息 return func(username, password) return wrapper # --- 3. 用户输入登录的账户和密码检验完成登录操作 --- log_login def login(username, password): 登录函数 users load_users() if username in users and users[username] password: print(f登录成功欢迎 {username}。) return True else: print(f登录失败用户名或密码错误。) return False # --- 测试 --- if __name__ __main__: # 1. 初始化用户数据 initialize_users() # 2. 清空之前的登录日志方便观察 if os.path.exists(LOGIN_LOG_FILE): os.remove(LOGIN_LOG_FILE) print(\n--- 开始登录测试 ---) # 测试1: 成功登录 login(admin, password123) # 测试2: 密码错误 login(user1, wrong_password) # 测试3: 用户名不存在 login(new_user, any_password) # 测试4: 再次成功登录 login(user1, mysecret) print(f\n--- 登录日志已写入 {LOGIN_LOG_FILE} ---) # 可以手动打开 login_log.txt 文件查看内容3.测试位运算符数字为23和-17的并详细列出位运算的全过程23 -1723: 00000000 00000000 00000000 00010111-17: 11111111 11111111 11111111 11101111结果: 00000000 00000000 00000000 00000111 (十进制: 7)23 | -1723: 00000000 00000000 00000000 00010111-17: 11111111 11111111 11111111 11101111结果: 11111111 11111111 11111111 11111111 (十进制: -1)23 ^ -1723: 00000000 00000000 00000000 00010111-17: 11111111 11111111 11111111 11101111结果: 11111111 11111111 11111111 11111000 (十进制: -8)23和-1723: 00000000 00000000 00000000 0001011123: 11111111 11111111 11111111 11101000 (十进制: -24)

相关新闻

如何用GetQzonehistory把QQ空间十年历史说说一次导出?

如何用GetQzonehistory把QQ空间十年历史说说一次导出?

如何用GetQzonehistory把QQ空间十年历史说说一次导出? 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 某个深夜,你心血来潮点开QQ空间,想翻翻十年前那…

2026/11/2 12:20:55 阅读更多 →
Windows 11上搭建与配置Doom Emacs:从安装到个性化开发环境

Windows 11上搭建与配置Doom Emacs:从安装到个性化开发环境

1. 从Vim到Emacs:为什么我最终选择了Doom Emacs 作为一个在Windows和Linux环境下都折腾过不少编辑器的人,我的编辑器之路可以说是“从一而终”的折腾。最早接触的是Vim,被它的高效和键盘流操作深深吸引,但配置起来实在是个无底洞&…

2026/11/1 15:59:54 阅读更多 →
手把手把缠论画到通达信主图:3步编译ChanlunX插件并跑通笔线段中枢

手把手把缠论画到通达信主图:3步编译ChanlunX插件并跑通笔线段中枢

手把手把缠论画到通达信主图:3步编译ChanlunX插件并跑通笔线段中枢 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX ChanlunX 是一款面向通达信金融终端的缠论可视化插件,它通过 DL…

2026/11/2 8:42:43 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻