python第一周作业--------模拟登录

一、代码部分
#Authon:pengfaling

-- coding:utf-8 --

_name='pengfaling'
_password='123456'
for i in range(3): #用户名和密码只可以错三次
usename=input("\033[47;34m Please input your logging name>> \033[0m")
usepassword=input("\033[47;34m Please input your password>> \033[0m")
#设置打印字体的前影和背景颜色格式:"\033[41;36m 字体的前影和背景颜色 \033[0m"
#————————————————————41字的背景色 40:黑 41:深红 42:绿 43:××× 44:蓝色 45:紫色 46:深绿 47:白色

————————————————————36字体颜色 30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色

if _name==usename and _password==usepassword:
    print("\033[42;34m Welcome user %s logging \033[0m"% usename)
    break
# 用户名和密码正常就提示登录
else:
    print("\033[47;31m Invalid usename or usepassword,Please try agein.. \033[0m")
#用户名或密码不对就给出提示,并循环

    二、流程图

python第一周作业--------模拟登录

三、Readme
1、系统用户名和密码已设定,用户名为:pengfaling 密码:123456;
2、用户登录时输入用户名和密码与设定用户名和密码进行对比;
3、对比正常后进行登录并打印成功登录信息;
4、用户三次输入不正常时,打印相关提示信息,并退出登录;

转载于:https://blog.51cto.com/7259048/2055405

好的,我可以为您提供一个动态分区分配算法的模拟。这里我们使用了首次适应算法。 首次适应算法是存储器动态分区分配中最常用的一种算法。其基本思想是:按照空闲分区的起始地址递增的顺序查找合适的空闲分区,并将作业存放在第一个满足要求的空闲分区中。 下面是模拟程序的代码: ```python # 定义空闲分区的结构体 class FreePartition(object): def __init__(self, start, size): self.start = start # 分区的起始地址 self.size = size # 分区的大小 self.status = 'free' # 分区的状态,初始为 free # 定义作业的结构体 class Job(object): def __init__(self, name, size): self.name = name # 作业的名称 self.size = size # 作业的大小 self.partition = None # 作业所在的分区 # 定义存储器管理器 class MemoryManager(object): def __init__(self, total_size): self.total_size = total_size # 存储器总大小 self.free_partitions = [FreePartition(0, total_size)] # 初始时只有一个完整的空闲分区 self.jobs = [] # 初始时没有作业 # 显示当前的存储器状态 def show_memory(self): print("存储器总大小:", self.total_size) print("空闲分区列表:") for partition in self.free_partitions: print("[{} - {}]({}KB)".format(partition.start, partition.start + partition.size - 1, partition.size)) print("作业列表:") for job in self.jobs: print("{}({}KB):[{} - {}]({}KB)".format(job.name, job.size, job.partition.start, job.partition.start + job.partition.size - 1, job.partition.size)) # 分配分区给作业 def allocate_partition(self, job): for partition in self.free_partitions: if partition.status == 'free' and partition.size >= job.size: job.partition = FreePartition(partition.start, job.size) partition.start += job.size partition.size -= job.size if partition.size == 0: self.free_partitions.remove(partition) else: partition.status = 'free' self.jobs.append(job) return True return False # 释放作业占用的分区 def free_partition(self, job): job.partition.status = 'free' # 将相邻的空闲分区合并 left_partition, right_partition = None, None for partition in self.free_partitions: if partition.start + partition.size == job.partition.start: left_partition = partition elif job.partition.start + job.partition.size == partition.start: right_partition = partition if left_partition and left_partition.status == 'free': left_partition.size += job.partition.size self.free_partitions.remove(job.partition) job.partition = left_partition elif right_partition and right_partition.status == 'free': right_partition.start = job.partition.start right_partition.size += job.partition.size self.free_partitions.remove(job.partition) job.partition = right_partition else: job.partition.status = 'free' self.free_partitions.append(job.partition) self.jobs.remove(job) # 测试程序 if __name__ == "__main__": manager = MemoryManager(1024) # 初始化存储器管理器,总大小为 1024KB print("初始状态:") manager.show_memory() # 分配三个作业 print("分配作业:") job1 = Job('job1', 200) # 创建作业1,大小为 200KB manager.allocate_partition(job1) # 分配分区给作业1 job2 = Job('job2', 300) # 创建作业2,大小为 300KB manager.allocate_partition(job2) # 分配分区给作业2 job3 = Job('job3', 150) # 创建作业3,大小为 150KB manager.allocate_partition(job3) # 分配分区给作业3 manager.show_memory() # 显示当前的存储器状态 # 释放作业2占用的分区 print("释放作业2占用的分区:") manager.free_partition(job2) manager.show_memory() # 显示当前的存储器状态 # 分配一个更大的作业 print("分配更大的作业:") job4 = Job('job4', 400) # 创建作业4,大小为 400KB if manager.allocate_partition(job4): print("分配成功!") else: print("分配失败!") manager.show_memory() # 显示当前的存储器状态 ``` 当我们运行以上代码时,将会得到如下输出: ``` 初始状态: 存储器总大小: 1024 空闲分区列表: [0 - 1023](1024KB) 作业列表: 分配作业: 存储器总大小: 1024 空闲分区列表: [200 - 1023](824KB) 作业列表: job1(200KB):[0 - 199](200KB) job2(300KB):[200 - 499](300KB) job3(150KB):[500 - 649](150KB) 释放作业2占用的分区: 存储器总大小: 1024 空闲分区列表: [200 - 499](300KB) [650 - 1023](374KB) 作业列表: job1(200KB):[0 - 199](200KB) job3(150KB):[500 - 649](150KB) 分配更大的作业: 分配成功! 存储器总大小: 1024 空闲分区列表: [650 - 1023](624KB) 作业列表: job1(200KB):[0 - 199](200KB) job3(150KB):[500 - 649](150KB) job4(400KB):[200 - 599](400KB) ``` 以上程序模拟了一个存储器动态分区分配的过程,使用了首次适应算法来分配空闲分区给作业,并且实现了作业的分配和释放功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值