news 2026/8/29 5:05:33

python作业四

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python作业四

题目一:位运算: 计算56及-18的所有位运算符结果,并使在注释中体现计算过程

a = 56 b = -18 # 56的二进制:00000000 00000000 00000000 00111000 #-18的二进制:11111111 11111111 11111111 11101110 """ -18二进制实现过程: 1.18的原码:00000000 00000000 00000000 00010010 2.反码: 11111111 11111111 11111111 11101101 3.补码: 11111111 11111111 11111111 11101110 """ #与& # 按位与规则:对应位都为1则为1,否则为0 # 56: 00000000 00000000 00000000 00111000 # -18: 11111111 11111111 11111111 11101110 # 结果: 00000000 00000000 00000000 00101000 bit_and = a & b print(f"按位与({a} & {b} = {bit_and})") #按位或 (|) # 按位或规则:对应位有一个为1则为1,否则为0 # 56: 00000000 00000000 00000000 00111000 # -18: 11111111 11111111 11111111 11101110 # 结果: 11111111 11111111 11111111 11111110 bit_or = a | b print(f"按位或({a} | {b} = {bit_or})") #按位异或 (^) #按位异或规则:对应位不同则为1,相同则为0 # 56: 00000000 00000000 00000000 00111000 # -18: 11111111 11111111 11111111 11101110 # 结果: 11111111 11111111 11111111 11010110 bit_xor = a ^ b print(f"按位异或({a} ^ {b} = {bit_xor})") #按位取反 (~) # 按位取反规则:所有位取反(0变1,1变0),结果为 -(x+1) # 56: 00000000 00000000 00000000 00111000 # ~56: 11111111 11111111 11111111 11000111 bit_not_a = ~a print(f"按位取反 (~{a}) = {bit_not_a}") bit_not_b = ~b print(f"按位取反 (~{b}) = {bit_not_b}") #左移 (<<) # 左移规则:所有位向左移n位,右边补0,等价于乘以2^n # 56: 00000000 00000000 00000000 00111000 # 结果: 00000000 00000000 00000000 01110000 left_shift_a1 = a << 1 print(f"左移1位 ({a} << 1) = {left_shift_a1}") left_shift_b2 = b << 2 print(f"左移2位 ({b} << 2) = {left_shift_b2}") # 右移 (>>) #右移规则(正数):所有位向右移n位,左边补0,等价于整除2^n # 56的二进制:00111000 → 右移1位:00011100 right_shift_a1 = a >> 1 print(f"右移1位 ({a} >> 1) = {right_shift_a1}") # 右移规则(负数):所有位向右移n位,左边补1(符号位) right_shift_b2 = b >> 2 print(f"右移2位 ({b} >> 2) = {right_shift_b2}")
运行结果如下所示:

题目二:完成文件读取功能,任意读取某个文件内容时,请编写装饰器,实现写出文件时增加当前系统时间,并打印至控制台最后一行

#--------------第二题-------------------------- import datetime from functools import wraps def add_time(func): @wraps(func) def wrapper(file_path): try: content = func(file_path) now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") with open (file_path,"a",encoding="utf-8")as f : f.write(f"\n\n文件读取/修改时间:{now}") print("-"*30) print(f"当前系统时间:{now}") return content except Exception as e : print(f"错误:{e}") return wrapper # 简化版文件读取函数 @add_time def read_file(file_path): with open(file_path, "r", encoding="utf-8") as f: content = f.read() print(f"文件内容:\n{content}") # 打印原内容 return content if __name__ =="__main__": read_file("test.txt")
运行结果如下:

第三题:给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数 假设只有一个重复的整数,请找出这个重复的数

#-----------第三题------------------ def find_duplicate(nums): res = set() # 空集合存储已遍历的数字 for num in nums: if num in res: # 发现重复 return num res.add(num) # 未重复则加入集合 #测试: nums = [1,2,3,4,2]#重复数字为2 print(f"重复的数:{find_duplicate(nums)}")
运行结果如下:

题目四:完成登录系统,登录时数据使用序列化和反序列化.

import pickle import os # 定义用户数据存储文件路径 USER_DATA_FILE = "user_data.pkl" # ===================== 序列化/反序列化核心函数 ===================== def save_user_data(user_dict): """序列化用户数据并保存到文件(覆盖式保存)""" with open(USER_DATA_FILE, "wb") as f: pickle.dump(user_dict, f) # 序列化:字典→字节流 def load_user_data(): """从文件反序列化读取用户数据,无文件则返回空字典""" if not os.path.exists(USER_DATA_FILE): return {} with open(USER_DATA_FILE, "rb") as f: return pickle.load(f) # 反序列化:字节流→字典 # ===================== 登录/注册功能 ===================== def register(): """用户注册:序列化存储用户名和密码""" username = input("请输入注册用户名:").strip() password = input("请输入注册密码:").strip() # 读取已有用户数据 user_data = load_user_data() # 检查用户名是否已存在 if username in user_data: print(f"用户名 {username} 已存在!") return False # 新增用户并序列化保存 user_data[username] = password save_user_data(user_data) print(f"用户名 {username} 注册成功!") return True def login(): """用户登录:反序列化读取数据并校验""" username = input("请输入登录用户名:").strip() password = input("请输入登录密码:").strip() # 反序列化读取用户数据 user_data = load_user_data() # 校验用户名和密码 if username not in user_data: print(f" 用户名 {username} 不存在!") return False if user_data[username] != password: print("密码错误!") return False print(f"欢迎 {username},登录成功!") return True # ===================== 主程序入口 ===================== def main(): while True: print("\n===== 登录系统 =====") print("1. 注册") print("2. 登录") print("3. 退出") choice = input("请选择操作(1/2/3):").strip() if choice == "1": register() elif choice == "2": login() elif choice == "3": print("再见!欢迎下次使用~") break else: print("输入错误,请选择1/2/3!") if __name__ == "__main__": main()
运行结果如下:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 2:13:36

Linly-Talker在金融客服中的落地实践案例分享

Linly-Talker在金融客服中的落地实践案例分享 在银行业务大厅的智能终端前&#xff0c;一位中年客户正对着屏幕上的虚拟柜员提问&#xff1a;“上个月基金亏损严重&#xff0c;我该继续持有吗&#xff1f;”不到两秒&#xff0c;这位身着银行制服、面容亲和的“数字理财顾问”便…

作者头像 李华
网站建设 2026/8/27 0:05:37

重工业、轻工业和复杂装备行业的设备维护策略制定:目标、策略、实施框架和工具等的差异

在工业生产领域,不同类型的设备和系统因其运行模式、价值、复杂性和在生产流程中的关键性不同,对维护目标的选择和优先级排序有着显著差异。将统一的维护策略应用于所有设备,不仅效率低下,而且可能导致资源错配和潜在风险的忽视。因此,根据设备的具体特性,量体裁衣地选择…

作者头像 李华
网站建设 2026/8/28 13:39:24

医疗健康领域应用:Linly-Talker构建智能导诊数字人

Linly-Talker&#xff1a;构建医疗智能导诊数字人的全栈实践 在智慧医院建设提速的今天&#xff0c;患者一进门诊大厅就面对长长的导诊队伍、重复的问题被问了一遍又一遍&#xff0c;而导医人员却疲于应付基础咨询——这样的场景正逐渐成为过去式。越来越多的医疗机构开始探索用…

作者头像 李华
网站建设 2026/8/27 22:49:24

索尼腾讯握手言和:侵权官司收场,合作再升级!

近日&#xff0c;备受业界关注的索尼诉腾讯游戏侵权案终于迎来尾声。双方在法院调解下达成保密和解&#xff0c;正式“握手言和”&#xff0c;并宣布将在多个项目上继续深化合作。此事不仅结束了长达半年的法律拉锯&#xff0c;也为中日两大游戏巨头在全球市场的协同打开了新局…

作者头像 李华
网站建设 2026/8/28 19:41:31

Linly-Talker表情驱动揭秘:情感化数字人的关键技术突破

Linly-Talker表情驱动揭秘&#xff1a;情感化数字人的关键技术突破 在虚拟主播直播间里&#xff0c;一个面容亲切的数字人正微笑着回答观众提问&#xff0c;她的口型与语音完美同步&#xff0c;说到动情处眼神闪烁、眉头轻扬&#xff0c;仿佛真有情绪流动。这不是电影特效&…

作者头像 李华