news 2026/9/19 17:40:01

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/9/18 13:08:53

常见快捷键

一、Ctrlc强制停止Ctrlc例如在 tail -f 监视中可以直接退出监视二、Ctrld退出或登出Ctrld例如使用root用户时&#xff0c;可以Ctrld直接退出root用户以及退出某些特定程序页面&#xff0c;比如python程序页面三、history命令可以查看历史输入过的命令history&#xff08;然后可…

作者头像 李华
网站建设 2026/9/18 21:18:44

Linly-Talker支持多种肖像输入格式:证件照、自拍、动漫均可

Linly-Talker&#xff1a;一张图生成会说话的数字人&#xff0c;证件照、自拍、动漫全兼容 在短视频当道的时代&#xff0c;人人都想拥有自己的虚拟形象——一个能说会道、表情自然、风格百变的“数字分身”。但传统数字人制作动辄需要专业建模、绑定骨骼、手动调动画&#xff…

作者头像 李华
网站建设 2026/9/19 0:18:21

智慧城市之城市环境智能监管 非法倾倒行为自动识别 环保执法证据采 垃圾倾倒倾倒物品类型识别数据据 垃圾堆识别数据集 公路垃圾识别10315期

该数据集专注于非法倾倒场景的计算机视觉任务&#xff0c;为相关深度学习模型开发提供基础数据支撑。 类别 Classes (7) 类别&#xff08;7&#xff09; dump 垃圾场 furniture 家具 mattress 床垫 pallet 托盘 rubbish 垃圾 trolley 手推车 tyre 轮胎数据集核心信息 信息类别…

作者头像 李华
网站建设 2026/9/18 23:52:20

Chromium143原生支持HLS

突然发现基于Chromium143的浏览器都原生支持HLS&#xff08;m3u8&#xff09;了&#xff0c;不再需要额外扩展了&#xff01;

作者头像 李华
网站建设 2026/9/19 0:55:26

玩轮胎仿真不上手?老司机带你飙车。今天咱们用ABAQUS搞点硬核操作,从过盈充气到滚动传涵,手把手教你怎么让虚拟轮胎活起来

ABAQUS 轮胎建模-过盈充气-模态-滚动-频响仿真 abaqus 轮胎仿真包括自由模态仿真&#xff0c;刚度仿真&#xff0c;印痕仿真&#xff0c;接地静止的模态仿真&#xff0c;接地滚动模态仿真&#xff0c;三种状态&#xff1a;自由&#xff0c;接地静止和接地滚动的传涵仿真&#x…

作者头像 李华
网站建设 2026/9/18 9:46:30

当风电遇上“太极推手“:混合储能如何化解功率波动

5MW风电永磁直驱-1200V直流并网仿真&#xff0c;带混合储能系统&#xff0c;其中采用滑动平均滤波算法(可改为自己想用的算法)对波动功率进行分解&#xff0c;然后交由储能系统进行平抑。 台风天的风电场像极了喝醉酒的拳击手——出招毫无章法。我们给这个5MW的永磁直驱风电机…

作者头像 李华