Python第四次作业

一、题目要求

1、位运算:计算 56 及‑18 的所有位运算符结果,并使在注释中体现计算过程

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

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

4、完成登录系统,登录时数据使用序列化和反序列化

二、代码演示

1、位运算
a = 56
b = -18
print("a & b =", a & b)
print("a | b =", a | b)
print("a ^ b =", a ^ b)
print("~a =", ~a)
print("~b =", ~b)
print("a << 1 =", a << 1)
print("b << 1 =", b << 1)
print("a >> 1 =", a >> 1)
print("b >> 1 =", b >> 1)
2、文件
import time

def add_time(func):
    def wrapper(*args,**kwargs):
        res = func(*args,**kwargs)
        now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        with open(args[0],'a',encoding="utf-8") as f:
            f.write(f"\n{now}")
        print(now)
        return res
    return wrapper

@add_time
def read_file(file_path):
    try:
        with open(file_path,"r",encoding="utf-8") as f:
            content = f.read()
    except FileNotFoundError:
        with open(file_path,"w",encoding="utf-8") as f:
            f.write("这是新建的测试文件")
        content = "文件不存在,已自动创建test.txt"
    return content

# 测试调用
if __name__ == "__main__":
    print("\n文件读写测试")
    content = read_file("test.txt")
    print(content)
3、重复数
def find_duplicate(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__":
    print("\n找重复数字测试")
    arr = [1,3,4,2,2]
    print(find_duplicate(arr))
4、登录
import pickle

def save_user(users, filename="user.dat"):
    with open(filename,"wb") as f:
        pickle.dump(users,f)

def load_user(filename="user.dat"):
    try:
        with open(filename,"rb") as f:
            return pickle.load(f)
    except FileNotFoundError:
        return {}

def register(username,password):
    users = load_user()
    if username in users:
        return False
    users[username] = password
    save_user(users)
    return True

def login(username,password):
    users = load_user()
    if users.get(username) == password:
        return True
    return False

# 测试调用
if __name__ == "__main__":
    print("\n登录注册")
    ret = register("admin","123456")
    print("注册结果", ret)
    print(login("admin","123456"))
    print(login("admin","654321"))

三、运行结果




©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容