python-4
·
题目

解答
1.未每日一讲的同学补交每日一讲录制视频链接,和之前提交作业一致,需发布至CSDN博客
Python迭代器
2.位运算: 计算56及-18的所有位运算符结果,并使在注释中体现计算过程
#2.位运算: 计算56及-18的所有位运算符结果,并使在注释中体现计算过程
a = 56
b = -18
# 56 原码/补码:0b00000000 00000000 00000000 00111000
# -18 原码:0b10000000 00000000 00000000 00010010
# -18 反码:0b11111111 11111111 11111111 11101101
# -18 补码:0b11111111 11111111 11111111 11101110
# 与 &
and_res = a & b
print(f"56 & -18 = {and_res} # 补码按位与结果:0b00000000 00000000 00000000 00101000 -> 十进制40")
# 或 |
or_res = a | b
print(f"56 | -18 = {or_res} # 补码按位或结果:0b11111111 11111111 11111111 11111110 -> 十进制-2")
# 异或 ^:
xor_res = a ^ b
print(f"56 ^ -18 = {xor_res} # 补码按位异或结果:0b11111111 11111111 11111111 11010110 -> 十进制-42")
# 取反 ~:
not_a = ~a
not_b = ~b
print(f"~56 = {not_a} # 0b11111111...11000111 -> 十进制-57")
print(f"~-18 = {not_b} # 0b00000000...00010001 -> 十进制17")
# 左移 <<:
left_a = a << 2
left_b = b << 2
print(f"56 << 2 = {left_a} # 56 * 2^2 = 224")
print(f"-18 << 2 = {left_b} # -18 * 2^2 = -72")
# 右移 >>:
right_a = a >> 2
right_b = b >> 2
print(f"56 >> 2 = {right_a} # 56 // 2^2 = 14")
print(f"-18 >> 2 = {right_b} # -18 补码右移2位 -> 十进制-5")

3.完成文件读取功能,任意读取某个文件内容时,请编写装饰器,实现写出文件时增加当前系统时间,并打印至控制台最后一行
#3.完成文件读取功能,任意读取某个文件内容时,请编写装饰器,实现写出文件时增加当前系统时间,并打印至控制台最后一行
class write_file():
def __init__(self,time):
self.time = time
def __call__(self,func):
def wrapper(*args,**kwargs):
with open("code/homework/test_log2.txt","w+",encoding="utf-8") as f:
f.write(f"time:{self.time}\n")
func(*args,**kwargs)
return wrapper
import time
@write_file(time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
def test1():
with open("code/homework/test_log2.txt","r+",encoding="utf-8") as f:
f.seek(0)
print(f.read())
test1()
test_log2.txt中

控制台上

4.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数 假设只有一个重复的整数,请找出这个重复的数
#4.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数 假设只有一个重复的整数,请找出这个重复的数
def find(nums):
a = nums[0]
b = nums[0]
while True:
a = nums[a]
b = nums[nums[b]]
if a == b:
break
a = nums[0]
while a != b:
a = nums[a]
b = nums[b]
return a
nums = [1, 3, 4, 2, 2]
print(f"数组中重复的数:{find(nums)}")

5.完成登录系统,登录时数据使用序列化和反序列化.
#5.完成登录系统,登录时数据使用序列化和反序列化.
import pickle
users_mysql = "users.txt"
def init_users():
users = {"zhangsan": "123"}
with open(users_mysql, "wb") as f:
pickle.dump(users, f)
def login(username, password):
with open(users_mysql, "rb") as f:
users = pickle.load(f)
return users.get(username) == password
init_users()
username = input("username:")
password = input("password:")
print("登录成功" if login(username,password) else "登录失败")

更多推荐

所有评论(0)