2020Python练习一
@2020.3.4
Python语法入门-变量和基本数据类型-练习一
习题
#1、病毒程序需要定期将监控到的数据写入日志文件,请记录下日志文件路径C:\a\b\c\adhsvc.dll.system32,方便后期处理
>>> >>> logePath ='C:/a/b/c/adhsvc.dll.system32' >>> print(logePath) C:/a/b/c/adhsvc.dll.system32 >>>
#2、病毒程序在上传文件时,发送的报头数据里需要包含文件信息:文件名a.txt、大小360,请记录下文件信息
>>> fileMessage={'文件名':'a.txt','大小':360} >>> print(fileMessage) {'文件名': 'a.txt', '大小': 360}
#3、程序运行过程中有一段错误日志需要记录下来,错误日志为"上传文件失败"
>>> >>> wrongLoge='上传文件失败' >>> print(wrongLoge) 上传文件失败 >>>
#4、假设我收到一条信息要记录,信息为中病毒客户端的信息"[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据"
>>> messsge='[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据' >>> print(messsge) [2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据
#5、把服务端ip地址存放下来,ip地址为10.0.10.11
>>> ip='10.0.10.11' >>> print(ip) 10.0.10.11
#6、病毒程序需要每隔3秒才运行一次,请记录下这个时间间隔
>>> >>> time=3 >>> print(time) 3 >>>
# 二:嵌套取值操作
#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]) #[0]才是列表中的第一个数据 play
#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'])#取出嵌套字典中的公司名 Oldboy >>>
#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]) sleep >>>
【修改版@2020-7-7】
##### 作业思路:如何选择合适的类型来记录状态??? ## 1、选取的类型是否可以明确标识事物的状态 ##### 2、存不是目的,存的目的是为了日后取出来用,并且方便的用 ##### 3、把自己想象成一台计算机,如果我是计算机, ##### 我会如何以何种形式把事物的状态记到脑子里 ##### 然后再去python中找相应的数据类型来让计算机像自己一样去记下事物的状态 ##### ps:认真读题,需要自己从题目中分析出应该存储的状态,然后选择合适的类型加以存储 #1、病毒程序需要定期将监控到的数据写入日志文件,请记录下日志文件路径C:\a\b\c\adhsvc.dll.system32,方便后期处理 # 转义字符 \ blog_path = r'C:\a\b\c\adhsvc.dll.system32' blog_path = 'C:\\a\\b\\c\\adhsvc.dll.system32' #2、病毒程序在上传文件时,发送的报头数据里需要包含文件信息:文件名a.txt、大小360,请记录下文件信息 # 字典 file_info = {'文件名': 'a.txt','文件大小':360} #3、程序运行过程中有一段错误日志需要记录下来,错误日志为"上传文件失败" # 字符串 blog_error = '上传文件失败' #4、假设我收到一条信息要记录,信息为中病毒客户端的信息"[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据" alert = '[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据' # _____________________________________________ # %s 占位 # 一一对应,不可多 不可少 msg = '[%s] 癞蛤蟆病毒感染者-> %s 正在上传数据' %('2020-02-18-17:00:48','80.82.70.187:33649') # 字典形式传值,打破位置的限制 msg = '[%(拦截时间)s] 癞蛤蟆病毒感染者-> %(IP地址)s 正在上传数据' %{'IP地址':'80.82.70.187:33649','拦截时间':'2020-02-18-17:00:48'} # str.format() # 一一对应 msg = '[{}] 癞蛤蟆病毒感染者-> {}正在上传数据' .format('2020-02-18-17:00:48','80.82.70.187:33649') # 变量名 = 变量值 的形式传值,同样打破位置的限制 msg = '[{拦截时间}] 癞蛤蟆病毒感染者-> {IP地址}正在上传数据' .format(IP地址='80.82.70.187:33649',拦截时间='2020-02-18-17:00:48') #5、把服务端ip地址存放下来,ip地址为10.0.10.11 ip_address = {'ip地址':'10.0.10.11'} #6、病毒程序需要每隔3秒才运行一次,请记录下这个时间间隔 rest_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['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']}, ] # 取第二个学生的第二个爱好 print(students[1]['hobbies'][1]) # [开小灶] # 练习1:接收用户输入,打印成指定格式 name = input('your name: ') age = input('your age: ') #用户输入18,会存成字符串18,无法传给%d,TypeError: %d format: a number is required, not str # 解决方法如下(强制转换) age = int(age) print('My name is %s,my age is %d' %(name,age)) # 练习2:用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式 # ------------ info of Tony ----------- # Name : Tony # Age : 22 # Sex : male # Job : Teacher # ------------- end ----------------- # 方法1 f name = input('your Name:') age = input('your Age:') sex = input('your Sex:') job = input('your Job:') info = f'Name:{name} \nAge:{age} \nSex:{sex} \nJob:{job} \n' l1 = f'------------ info of {name} -----------\n' l2 = '------------- end ---------------' print(l1,info,l2) # 方法2 %s name = input('your Name:') age = input('your Age:') sex = input('your Sex:') job = input('your Job:') info = ''' ------------ info of %s --------- Name : %s Age : %s Sex : %s Job : %s ------------- end ----------------- ''' % (name,name,age,sex,job) print(info) # 方法3 str.format() # [按位置传值] name = input('your Name:') age = input('your Age:') sex = input('your Sex:') job = input('your Job:') info = ''' ------------ info of {0} --------- Name : {0} Age : {1} Sex : {2} Job : {3} ------------- end ----------------- ''' .format(name,age,sex,job) print(info) # 按照 变量名=变量值 的形式传值 info = ''' ------------ info of {name} --------- Name : {name} Age : {age} Sex : {sex} Job : {job} ------------- end ----------------- ''' .format(name=input('your Name:'),age=input('your Age:'),sex=input('your Sex:'),job=input('your Job:')) print(info) # [选做题]:编写用户登录接口(学的多的同学,尝试做下述作业,这是截止到下周二学完文件处理之后的作业) #1、输入账号密码完成验证,验证通过后输出"登录成功" #2、可以登录不同的用户 #3、同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁) #扩展需求:在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟 # 【参考4--山寨版 】 import time user_info = { 'mili':'123', 'cc':'456', 'mela':'789' } # 密码也要是字符串格式,后面校验用户输入的密码时,才能够匹配得上(python3 中,用户输入的内容均会被保存为 字符串格式 count = 1 while count <= 3: user_name = input('please input your name:').strip() user_pwd = input('please input your password:').strip() if user_name in user_info and user_pwd == user_info[user_name]: print('welcome back~') break else: print('your name or password is wrong,fail to login.Please try again') count+=1 else: print('you have tried 3 times,and you are locked.Please try it after 5 minutes ') time.sleep(300) count = 0