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)
相关推荐
飞Link44 分钟前
动作方法中的分割与过度分割方法全解析(含代码实战与踩坑案例)
人工智能·python·算法·计算机视觉
张宇Joaquin1 小时前
鲲鹏统一并行加速库KUPL--异步数据拷贝
线性代数·算法·矩阵·numpy
GlobalInfo1 小时前
创新不是追逐热点,是在变化中建立长期竞争力
大数据·算法
lvwangshu1 小时前
线性代数基础 Linear Algebra Basics
数学·算法
ZhouDevin2 小时前
算法论文/数据集5——AlignPrune(CVPR2026)基于样本损失时间序列精确识别噪声样本
算法
十铭忘3 小时前
HMM(隐马尔可夫模型)的理解7——Baum–Welch 算法
人工智能·算法
明月_清风3 小时前
十大经典排序算法 Go 实现全解:从入门到面试通关
后端·算法·排序算法
liliangcsdn3 小时前
如何对IC时间序列进行汇总统计分析示例
人工智能·算法·机器学习
土司大王4 小时前
LeetCode hot100——缺失的第一个正数
数据结构·算法·leetcode
Cccp.1234 小时前
【leetcode】(二)认识O(NlogN)的排序
算法·leetcode