python拓展

1.题目讲解

python经典题目--素数的判断

2.位运算

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

python 复制代码
a = 56
b = -18

# 56 二进制:00111000
# -18 补码:计算机负数用补码存储,18=00010010,取反11101101,+1 → 11101110

# 按位与 & :两位都为1结果才是1
res_and = a & b
"""
00111000
11101110
--------
00101000 → 40
"""
# 按位或 |:任意一位为1则为1
res_or = a | b
"""
00111000
11101110
--------
11111110 → -2
"""

# 按位异或 ^:两位不同为1,相同为0
res_xor = a ^ b
"""
00111000
11101110
--------
11010110 → -42
"""

# 按位取反 ~:按位全部取反,公式 ~x = -x-1
res_tilde_a = ~a   # ~56 = -56‑1 = -57
res_tilde_b = ~b   # ~(-18) = 17

# 左移 << 二进制整体向左移动,低位补0
res_a_left = a << 1  # 56<<1  00111000 <<1 → 01110000 =112
res_b_left = b << 1  # -18 <<1 =‑36

# 右移 >> 整体右移,符号位填充
res_a_right = a >>1  #56>>1 → 00011100 =28
res_b_right = b >>1  #‑18 >>1 =‑9

print(f"56 & -18 = {res_and}")
print(f"56 | -18 = {res_or}")
print(f"56 ^ -18 = {res_xor}")
print(f"~56 = {res_tilde_a} , ~-18 = {res_tilde_b}")
print(f"56 <<1 = {res_a_left}, -18<<1 = {res_b_left}")
print(f"56 >>1 = {res_a_right}, -18>>1 = {res_b_right}")

3.完成文件读取功能

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

python 复制代码
from datetime import datetime

# 装饰器:给写文件功能增加时间
def add_time_decorator(func):
    def wrapper(*args,**kwargs):
        # 执行原函数
        result = func(*args,**kwargs)
        now = datetime.now()
        time_str = str(now)
        # args[0] 文件名
        filename = args[0]
        # 追加写入时间到文件最后一行
        with open(filename,"a",encoding="utf‑8") as f:
            f.write(f"\n{time_str}")
        # 控制台打印时间
        print(f"【系统时间】{time_str}")
        return result
    return wrapper


# 读取文件函数
def read_file(filename):
    with open(filename,"r",encoding="utf‑8") as f:
        content = f.read()
    return content

# 被装饰的写文件函数
@add_time_decorator
def write_file(filename,content):
    with open(filename,"w",encoding="utf‑8") as f:
        f.write(content)


# 测试
# write_file("test.txt","测试文本内容")
# print(read_file("test.txt"))

4.给定一个包含n+1个整数的数组nums

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

python 复制代码
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

#测试
print(find_duplicate([2,2,2,2,2]))

5.完成登录系统

题目:登录时数据使用序列化和反序列化

python 复制代码
import pickle

USER_FILE = "user.data"

# 注册:序列化保存用户账号密码
def register(username,password):
    user_data = {"username":username,"password":password}
    with open(USER_FILE,"wb") as f:
        pickle.dump(user_data,f) #序列化写入文件
    print("注册成功")

# 登录:反序列化读取文件,校验账号密码
def login(input_user,input_pwd):
    try:
        with open(USER_FILE,"rb") as f:
            user = pickle.load(f) #反序列化,读取数据
        if user["username"] == input_user and user["password"] == input_pwd:
            return True,"登录成功"
        else:
            return False,"账号或密码错误"
    except FileNotFoundError:
        return False,"无用户数据,请先注册"


# --------测试演示--------
# register("admin","123456")
# flag,msg = login("admin","123456")
# print(msg)
# flag,msg = login("admin","666")
# print(msg)
相关推荐
机器人零零壹18 分钟前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
ZhengEnCi3 小时前
大模型的分类到底怎么分:从基础模型到推理模型、从通用到专用的完整图谱
算法
取名真是4 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
罗西的思考4 小时前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习
nm_zfyjt6 小时前
信息流广告投放优化实践:线索成本评估模型与转化链路重构(家装建材案例)
算法·重构·内蒙古朋友圈广告服务商·内蒙古朋友圈获客
w_zero_one7 小时前
算法--构造
java·数据结构·算法
其实防守也摸鱼8 小时前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
小超人诞生日记9 小时前
C++ 智能指针的使用及其原理详解
c++·算法
AiNightVision12 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件