第1题:
位运算: 计算56及-18的所有位运算符结果,并使在注释中体现计算过程
【代码】
# 1.位运算: 计算56及-18的所有位运算符结果,并使在注释中体现计算过程 # 数值定义 a = 56 b = -18 # bin()打印二进制,负数输出带负号,底层计算机存储为补码 # 56 二进制(正数原码): 00111000 # 18 原码:00010010,-18补码 = ~18 +1 print("--------位运算 & 按位与--------") res_and = a & b """ 规则:对应位都为1结果才是1 56:00111000 -18(补码):11101110 """ print(f"{a} & {b} = {res_and}") print("\n-------位运算 | 按位或-------") res_or = a | b # 任意一位为1,结果位为1 print(f"{a} | {b} = {res_or}") print("\n------ ~按位取反-------") res_not_a = ~a res_not_b = ~b """ ~x = -(x+1) ~56 = -(56+1) = -57 ~(-18) = -(-18+1) = 17 """ print(f"~{a} = {res_not_a}") print(f"~{b} = {res_not_b}")【运行结果】
第2题:
完成文件读取功能,任意读取某个文件内容时,请编写装饰器,实现写出文件时增加当前系统时间,并打印至控制台最后一行
【代码】
""" 2.完成文件读取功能,任意读取某个文件内容时, 请编写装饰器,实现写出文件时增加当前系统时间,并打印至控制台最后一行 """ from datetime import datetime # 定义装饰器 def add_time_log(func): def wrapper(*args, **kwargs): #执行被装饰的读写函数 result = func(*args, **kwargs) #获取当前系统时间 now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') with open("out.txt", "a",encoding="utf-8") as f: f.write(f"\n{now_time}\n") #控制台输出时间 print(f"文件末尾写入系统时间:{now_time}") return result return wrapper # 读取文件函数,使用装饰器 @add_time_log def read_file(file_path): #读取任意文件内容 with open(file_path, "r", encoding="utf-8") as f: content = f.read() print(content) return content # 测试代码 if __name__ == "__main__": #换成本机的文件路径 read_file("test.txt")【运行结果】
第3题
给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
可知至少存在一个重复的整数 假设只有一个重复的整数,请找出这个重复的数
【代码】
""" 3.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n), 可知至少存在一个重复的整数 假设只有一个重复的整数,请找出这个重复的数 """ def findDuplicates(nums): #弗洛依德 slow = nums[0] fast = nums[0] # 第一阶段,快慢指针相遇 while True: slow = nums[slow] fast = nums[nums[fast]] if slow == fast: break # 第二阶段,一个指针从头出发 p1 = nums[0] p2 = slow while p1 != p2: p1 = nums[p1] p2 = nums[p2] return p1 # 测试 if __name__ == "__main__": arr = [1,2,2,3,4,2] print("重复数字:",findDuplicates(arr))【运行结果】
第4题
完成登录系统,登录时数据使用序列化和反序列化
【代码】
import pickle import os FILE_NAME = "user.pkl" # 序列化保存用户数据 def save_users(user_data): with open(FILE_NAME, "wb") as f: pickle.dump(user_data, f) # 反序列化读取用户 def load_user(): # 判断文件存在并且不是空文件 if os.path.exists(FILE_NAME) and os.path.getsize(FILE_NAME) > 0: with open(FILE_NAME, "rb") as f: data = pickle.load(f) return data else: return {} # 注册功能 def register(username,pwd): user_data = load_user() if username in user_data: print("账号已经存在!") return user_data[username] = pwd save_users(user_data) # 变量统一是 user_data print("注册成功!") # 登录功能 def login(username,pwd): user_data = load_user() if username not in user_data: print("该账号不存在!") return if user_data[username] == pwd: print("登录成功") else: print("密码错误") if __name__ == '__main__': while True: op = input("1‑注册 2‑登录 3‑退出\n请输入操作:") if op == "1": name = input("输入用户名:") pw = input("输入密码:") register(name,pw) elif op == "2": name = input("用户名:") pw = input("密码:") login(name,pw) elif op == "3": print("程序退出") break【运行结果】