Python小练习之数据类型训练

一:数据类型的选择

原则:存不是目的,目的是为了取,并且能够方便地取,请使用合适的类型与变量名记录下述状态

1、写入日志

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

log_path = r'C:\a\b\c\adhsvc.dll.system32,'  # r''---> read,因为可能\会有转义符的意思。

2、请记录下文件信息

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

file_name = 'a.txt'
file_size = 300

3、记录日志

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

log = "上传文件失败"
log_list = [
    '日志1',
    '日志2',
]

4、记录信息

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

定义变量名时,自己需要知道该变量名表示的是什么值;

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

5、存放IP地址

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

server_address = '10.0.10.11'
server_ip = '10.0.10.1'

6、记录时间间隔

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

wait_time = 3

二:嵌套取值操作

1、针对列表

students_info = [
    ['Lance', 18, ['play', ]],
    ['Abraham', 18, ['play', 'sleep']]
]

请取出第一个学生的第一个爱好

print(students_info[0][2][0])

2、针对字典

info = {
    'name': 'man',
    'hobbies': ['play', 'sleep'],
    'company_info': {
        'name': 'Lance',
        'type': 'education',
        'emp_num': 40,
    }
}

请取出取公司名

print(info.get('company_info'))

print(info['company_info']['name'])  # Lance

print(info.get('company_info').get('name'))  # Lance

3、针对下述类型

students = [
    {'name': 'lcane', 'age': 38, 'hobbies': ['play', 'sleep']},
    {'name': 'Justin', 'age': 18, 'hobbies': ['read', 'sleep']},  # 1
    {'name': 'Abraham', 'age': 58, 'hobbies': ['music', 'read', 'sleep']},
]

取 第二个学生 的第二个爱好

print(students[1]['hobbies'][1])  # sleep

print(students[1].get('hobbies')[1])  # sleep

选做题:编写用户登录接口

1、简单的用户登录接口

输入账号密码完成验证,验证通过后输出"登录成功"

user_inof =['Lance','123']   
#让用户输入账号密码
username = input('请输入账号:')
password = input('请输入密码:')
print('账号:', username, '密码: ', password)
# if: if判断 ----> if 判断的条件:
# 左边的值 == 右边的值   ---> 判断左右两边的值  是否相等
# and:逻辑运算符  判断两边的条件是否为True,若都为True,则结果为True
if username == user_info[0] and password == user_info[1]:
    # 若if判断条件成立,则执行此处代码
    print('登录成功')
else:
    # 若不成立,则执行此处代码
    print('账号或密码错误!')

2、可以登录不同的用户

# 将多个用户存放在字典中,用于支持多个用户登录时进行判断
 user_info = {
     'tank': '123',
     'Lacne1': '321',
     'Lance2': '321',
     'Lance3': '321',
     'Lance4': '321',
 }
 username = input('请输入账号: ')
 password = input('请输入密码: ')
 # 判断成功,表示输入的用户名存在, 账号已经校验成功
 # 判断username 是否是user_info字典中的key
 if username in user_info:
 # print(username)
 # 校验当前用户名对应的value值,也就是密码是否一致
 # 校验密码
    if password == user_info.get(username):
          print('登录成功')

    else:
          print('密码错误,登录失败!')

 else:
          print('账号不存在!')

3、同一账号输错三次锁定

1、(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)

 user_info = {
     'tank': '123',
     'Lacne1': '321',
     'Lance2': '321',
     'Lance3': '321',
     'Lance4': '321',
 }
 number = 1
 #while循环   while判断循环
 while number < 4:    #条件成立执行此处代码
     username = input('请输入账号: ')
     password = input('请输入密码: ')
     if username in user_info:
         if password == user_info.get(username):
            print('登录成功')
            break
         else:
            print('密码错误,登录失败!')
            number += 1
     else:
          print('账号不存在!')
     print(number)
     if number == 4 # 若number == 4 代表 当前用户需要锁定 300秒
        import time  # time是python解释器自带的一个模块,可以通过 " 模块名.模块的功能 " 使用
       # time.sleep(等待的时间,必须是整型)
       # 5min ---> 300s
       # time.sleep(300)
        print('账户锁定,等待5分钟后解锁')
        time.sleep(3)
        print('账号已解锁,请继续使用!')
        number = 1

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

user_info = {
    'tank': '123',
    'Lacne1': '321',
    'Lance2': '321',
    'Lance3': '321',
    'Lance4': '321',
}
number = 1
import time
import os
while number < 4:
    # 条件成立,则执行以下
    username = input('请输入账号: ')
    password = input('请输入密码: ')
    if username in user_info:
        if password == user_info.get(username):
            print('登录成功')
            break

        else:
            print('密码错误,登录失败!')
            number += 1

    else:
        print('账号不存在!')
        number += 1
print(number)
if number == 4:
    # 此处写锁定
    # 判断某个文件是否存在
    if os.path.exists(r'locked.py'):  # 文件的存放路径或指向名字,这里引号前面加一个字母 r 是为了确保在Windows系统中万无一失,故应该以原始字符串的方式指定路径,也就是在开头的引号前面加上 r 
        print('文件存在')
        # 此处将文件中的锁定时间读取出来,并实现锁定秒数
        # 文件处理
        # with open('文件的名字', '打开的模式', '字符编码') as f:
        # r: read读取
        with open('locked.py', 'r', encoding='utf-8') as f:
            wait_time = f.read()
            print('锁定时间为:', wait_time)
            print('类型为:', type(wait_time))
            # 将str类型 ---> int类型
            # 若文件中存放时间,则从文件中读取等待的时间
            time.sleep(int(wait_time))
            print('解锁成功,请继续使用!')
        number = 1
    else:
        print('文件不存在')

猜你喜欢

转载自www.cnblogs.com/Lance-WJ/p/12337736.html
今日推荐