一、数据类型的选择原则:存不是目的,目的是为了取,并且能够方便地取,请使用合适的类型与变量名记录下述状态
1.病毒程序需要定期将监控到的数据写入日志文件,请记录下日志文件路径C:\a\b\c\adhsvc.dll.system32,方便后期处理
字符串 log_path = r'C:\a\b\c\adhsvc.dll.system32'
python中有加反斜杠 \ 进行转义的情况,\a,\b为转义字符,因此在前面加r防止转义;加r是为了告诉编译器这个string是raw string,不要转义backflash '\'。
2.病毒程序在上传文件时,发送的报头数据里需要包含文件信息:文件名a.txt、大小360,请记录下文件信息
字符串 file_name = 'a.txt'
整型 file_size = 360
3.程序运行过程中有一段错误日志需要记录下来,错误日志为"上传文件失败"
字符串 error_log = "上传文件失败"
4.假设我收到一条信息要记录,信息为中病毒客户端的信息"[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据"
字符串 victm_info = "[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据"
5.把服务端ip地址存放下来,ip地址为10.0.10.11
字符串 serve_ip = '10.0.10.11'
6.病毒程序需要每隔3秒才运行一次,请记录下这个时间间隔
整型 wait_time = 3
二、嵌套取值操作
1.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,
}
}
请取出取公司名
print(info.get('company_info').get('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']},
]
取第二个学生的第二个爱好
print(students[1].get('hobbies')[1])
三、选做题:编写用户登录接口
1.输入账号密码完成验证,验证通过后输出"登录成功"
user_info = ['vincent','888888']
name = input('请输入您的账号:')
pwd = input('请输入您的密码:')
if name == user_info[0] and pwd == user_info[1]:
print('登录成功。')
else:
print('账号或密码错误,登录失败。')
2.可以登录不同的用户
user_info = {
'vincent':'666666',
'egon':'777777',
'tank':'888888',
'umi':'999999'
}
name = input('请输入您的账号:')
pwd = input('请输入您的密码:')
#判断输入的账号是否存在
if name in user_info:
#判断密码是否正确
if pwd == user_info.get(name):
print('登录成功。')
else:
print('密码错误,登录失败。')
else:
print('您输入的账号不存在。')
3.同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)
扩展需求:在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟
user_info = {
'vincent': {'pwd': '666666', 'count': 0},
'egon': {'pwd': '777777', 'count': 0},
'tank': {'pwd': '888888', 'count': 0},
'umi': {'pwd': '999999', 'count': 0}
}
import os
import time
while True:
name = input('请输入您的账号:')
password = input('请输入您的密码:')
# 判断输入的账号是否存在
if name in user_info:
# 判断密码是否正确
if password == user_info.get(name).get('pwd'):
#判断当前用户是否存在锁定信息
if os.path.exists(name+'.txt'):
f1 = open(name+'.txt','r',encoding='utf-8')
lock_time = f1.read()
f1.close()
times = time.time()
#判断当前时刻与被锁定时刻的时间差是否小于规定的锁定时间,如果小于,则继续锁定
if times-float(lock_time)<=120:
print('您的账号已锁定,%ss后解锁。'%(int(120-(times-float(lock_time)))))
print('-'*20,end='')
time.sleep(int(120-(times-float(lock_time))))
print('账号锁定解除')
user_info[name]['count'] = 0
continue
else:
print('登录成功。')
break
else:
print('登录成功。')
break
else:
#密码错误则count数加1
user_info[name]['count'] += 1
print('密码错误,登录失败。')
if user_info.get(name).get('count') >= 3:
#当count数大于等于3时,锁定该账户
print('3次或3次以上输入密码错误,账号已锁定。')
print('-'*20,end = '')
times = time.time()
#将当前时间写入到txt文本中保存起来
f1 = open(name+'.txt','w',encoding = 'utf-8')
f1.write(str(times))
f1.close()
time.sleep(120)
print('账号锁定解除')
user_info[name]['count'] = 0
continue
else:
continue
else:
print('您输入的账号不存在。')