day2作业

作业思路:如何选择合适的类型来记录状态???(整数记录整数数字相关,小数记录小数相关,字符串记录描述性内容)

1、选取的类型是否可以明确标识事物的状态
2、存不是目的,存的目的是为了日后取出来用,并且方便的用
3、把自己想象成一台计算机,如果我是计算机,
我会如何以何种形式把事物的状态记到脑子里
然后再去python中找相应的数据类型来让计算机像自己一样去记下事物的状态
ps:认真读题,需要自己从题目中分析出应该存储的状态,然后选择合适的类型加以存储

#1、病毒程序需要定期将监控到的数据写入日志文件,请记录下日志文件路径C:\a\b\c\adhsvc.dll.system32,方便后期处理

file_path =r"C:\a\b\c\adhsvc.dll.system32"

#2、病毒程序在上传文件时,发送的报头数据里需要包含文件信息:文件名a.txt、大小360,请记录下文件信息

file_info = {"name":"a.txt","size":"360"}

#3、程序运行过程中有一段错误日志需要记录下来,错误日志为"上传文件失败"

error_log = "上传文件失败"

#4、假设我收到一条信息要记录,信息为中病毒客户端的信息"[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据"

message = "[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据"

#5、把服务端ip地址存放下来,ip地址为10.0.10.11


ip = "10.0.10.11"

#6、病毒程序需要每隔3秒才运行一次,请记录下这个时间间隔

time_lag = 3

选做题1:

嵌套取值操作

#1、students_info=[[‘egon’,18,[‘play’,]],[‘alex’,18,[‘play’,‘sleep’]]]
请取出第一个学生的第一个爱好

students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
print(students_info[0][2][0])

#2、针对字典
info={
‘name’:‘egon’,
‘hobbies’:[‘play’,‘sleep’],
‘company_info’:{
‘name’:‘Oldboy’,
‘type’:‘education’,
‘emp_num’:40,
}
}
请取出取公司名

info={
    'name':'egon',
    'hobbies':['play','sleep'],
    'company_info':{
        'name':'Oldboy',
        'type':'education',
        'emp_num':40,
    }
}
print(info['company_info']['name'])

#3、针对下述类型
students=[
{‘name’:‘alex’,‘age’:38,‘hobbies’:[‘play’,‘sleep’]},
{‘name’:‘egon’,‘age’:18,‘hobbies’:[‘read’,‘sleep’]},
{‘name’:‘wupeiqi’,‘age’:58,‘hobbies’:[‘music’,‘read’,‘sleep’]},
]
取第二个学生的第二个爱好

students=[
    {'name':'alex','age':38,'hobbies':['play','sleep']},
    {'name':'egon','age':18,'hobbies':['read','sleep']},
    {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
]
print(students[1]['hobbies'][1])

针对个别已经学了很多的同学,有如下选做题

选做题:编写用户登录接口(学的多的同学,尝试做下述作业,这是截止到下周二学完文件处理之后的作业)

#1、输入账号密码完成验证,验证通过后输出"登录成功"
#2、可以登录不同的用户
#3、同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)

reference

user_info = {'Egon': ['123', 0, 0], 'tank': ['321', 0, 0], 'jason': ['456', 0, 0]}

# 让用户不限次数输入用户名与密码
while True:
    # 1) 让用户输入用户名与密码
    username = input('请输入用户名: ').strip()
    # 2) 先循环判断用户名是否在字典中
    # 判断username 是否 是 user_info字典中的key
    if username in user_info:
        import time
        now_time = time.time()

        if now_time <= user_info[username][2]:
            print('当前用户被锁定了!')
            continue

        # 获取当前用户的密码
        # user_info['Egon'] ---》 ['123', 0, None]
        pwd = user_info[username][0]
        password = input('请输入密码: ').strip()
        if password == pwd:
            print('登录成功!')
        else:
            print('密码错误!')
            # 只在存在的用户输错密码时累计错误次数
            user_info[username][1] += 1

        # 判断当前进来的用户累计错误次数是否为3,若为3则锁定,给他一个锁定时间
        if user_info[username][1] == 3:
            import time  # 时间模块
            # 生成当前时间戳 + 300,得到用户锁定的时间戳,保存到用户对应的列表中
            lock_time = time.time() + 3
            user_info[username][2] += lock_time

    else:
        print('用户不存在!')

#扩展需求:在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟

import time
# 存放账户
accountlist = []
# 存放密码
pwdlist = []
# 存放黑名单用户
blacklist=[]

sign = True
while sign:
	username = input("请输入用户名:")

	# 1.获取用户名密码等数据
	with open("user.txt",mode="r+",encoding="utf-8")as fp:
		lst = fp.readlines()
		# 提取文件里的账号密码
		for i in lst:
			account,pwd = i.strip().split(":")
			accountlist.append(account)
			pwdlist.append(pwd)
	# 2.判断是否存在该用户
	if username in accountlist:

		# 读取黑名单用户
		with open('black.txt','r',encoding='utf-8')as f:
			for line in f:
				blacklist.append(line.strip())

		if username in blacklist:
			print('您的账户已锁定,请等待5分钟')
			time.sleep(300)

		num = accountlist.index(username)
		times = 0
		while times < 3:
			pwd = input("请输入您的密码:")
			if pwd == pwdlist[num]:
				print("登录成功")
				sign = False
				break
			else:
				print("密码错误,你还剩下%s次机会" % (2-times))
				# 3.账号输入3次锁定
				if times == 2:
					print("密码错误三次,账户已锁定,5s后解锁")
					with open('black.txt','a+',encoding='utf-8')as f:
						res = username + '\n'
						f.write(res)
					time.sleep(300)
					print("账户已解锁,请继续使用")
			times += 1
	else:
		print("该用户不存在")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值