一.判断练习

需求:90-100:优秀;80-90:良好;60-80:及格;0-60:不及格;小于或大于100:分数不合法

# score =float(input('请输入你的分数:') )#强制类型转换
# if score >= 90 and score <=100:
#     print('优秀')
# elif score >= 80:
#     print('良好')
# elif score >= 60:
#     print('及格')
# elif score >= 0:
#     print('不及格')
# else:
#     print('分数不合法')

二、list练习

#登入
#欢迎 xxx登录,今天的是时间是xxx。
#登录密码错误3次,受限
#需求分析:1.输入账号,账号是否存在;2.通过账号获取下标,获得对应密码;3.输入密码,与下标密码比对是否一致;4.若是,输出欢迎登入,若不是,重新输入账号密码
# import datetime
# today = datetime.datetime.today()
# usernames = ["xiaohei","xiaobai","xiaoming"]
# passwords = ['123456','11111','1']
# for i in range(3):
#     username = input("username")
#     while usernames.count(username) == 0:
#  # while username not in usernames: #这个也可以使用
#         print("账号不存在,请重新输入")
#         username = input("username")
#     password = input("password")
#     # if usernames.index(username) == passwords.index(password):#不能通过下标位置一致去判断,因为输入不是passwords内的元素,会报错
#     if passwords[usernames.index(username)] == password:
#         print("欢迎%s登入,今天的时间是count%s。"%(username,today))
#         break
#     else:
#         print("密码错误,请重新输入")
# else:
#     print("登入次数过多,最多登陆三次")

  三、循环小练习

需求:猜0-100随机整数,总共猜七次机会,每次猜提示猜大了或猜小了,超过七次游戏结束

# import random
# a = random.randint(1,100)
# count = 0
# while count < 7:
#     b = int(input("猜的数字:" ))
#     while b < 1 or b > 100:
#         print("请重新输入1-100的整数")
#         b = int(input("被猜的数字:"))
#     count = count + 1
#     if b > a :
#         print("猜大了")
#         continue
#     elif b < a:
#         print("猜小了")
#     else:
#         print("恭喜你猜对了")
# else:
#     print("游戏结束")

  四、监控日志

需求:读取监控日志,对每分钟出现50次以上的ip地址进行提示:

自写:

# j = 0
# point = 0
# import time
# while True:
#     a = []
#     s = set()
#     f = open('access.log', encoding='utf-8')
#     for line in f:
#         new_line = str(line.split()[0])
#         a.append(new_line)
#     point = f.tell()
#     f.close()
#     for i in a:
#         if a.count(a[j]) > 50:
#             s.add(a[j])
#         j = j + 1
#     new_list = list(s)
#     for b in new_list:
#         print("ip地址【%s】有问题,请注意!"%b)
#     time.sleep(60)
注:时间久会报:list index out of range的错误

高手:

#1、监控,一直在运行,死循环,每分钟读一次文件
#2、第一次运行,读取文件所有的内容,从文件内容里面获取到ip地址,以及每个ip地址出现的次数
#4、记住当前指针的位置,下次从这个位置开始读
#5、判断每个ip地址出现的次数,如果大于50次,那么发短信报警
#6、等待60秒,继续重复上面的操作,读文件,获取内容
# import time
# point = 0 #最前面的位置
# 
# while True:
#     ip_list = {} # {ip:2 }
#     f = open('access.log',encoding='utf-8')
#     f.seek(point)#移动文件指针到哪个位置
#     for line in f:
#         ip = line.split()[0]
#         if ip not in ip_list:
#             ip_list[ip] = 1
#         else:
#             ip_list[ip] +=1
#     point = f.tell() #当前文件指针的位置
#     f.close()
#     for ip in ip_list:
#         count = ip_list.get(ip)
#         if count>=50:
#             print('ip地址【%s】有问题,请注意!'%ip)
#     time.sleep(60)

  五、注册登录

# usernames = ['xiaohei','xiaobai','xiaoming']
# passwords = ['123456','11111','1']
# 需要通过代码把上面的两个list转成下面的字典
# user_info = {'xiaohei':'123456','xiaobai':'11111','xiaoming':'1','lcl':'123'}
# 1、注册
#     1、输入账号和密码、确认密码
#     2、要校验账号是否存在(从字典里面判断),存在的话,不能注册
#     3、校验两次输入的密码是否一致,如果一致,加入到字典中,提示注册成功
#     4、最多3次
#     5、要校验输入是否为空,为空也算一次错误,全是空格也算空
# 2、登录
#     1、输入账号和密码
#     2、要校验账号是否存在(从字典里面判断),不存在的话,不能登录
#     3、账号和密码一致就可以登录
#     4、最多3次
#     5、要校验输入是否为空,为空也算一次错误,全是空格也算空
# info = {}
# usernames = ['xiaohei','xiaobai','xiaoming']
# passwords = ['123456','11111','1']
# for i in range(len(usernames)):
#     info[usernames[i]] = passwords[i]
# #注册:
# # for i in range(3):
# #     username = input("请输入账号:").strip()
# #     while username in info:
# #         print("账号已存在,请重新输入")
# #         username = input("请输入账号:").strip()
# #     if username =="":
# #         print("账号不能为空")
# #     else:
# #         password = input("请输入密码:").strip()
# #         repassword = input("请再次输入密码:").strip()
# #         if password == "" or repassword =="" :
# #             print("密码不能为空")
# #         elif password == repassword:
# #             print("注册成功")
# #             break
# #         else:
# #             print("两次输入密码不正确")
# # else:
# #     print("错误次数过多")
# 
# # 登入
# for i in range(3):
#     username = input('username:').strip()
#     while username not in info:
#         if username == "":
#             print("账号不能为空")
#             username = input("请输入账号:").strip()
#         else:
#             print("账号不存在,请重新输入")
#             username = input("请输入账号:").strip()
#     else:
#         password = input("请输入密码:").strip()
#         if password == "":
#             print("密码不能为空")
#         else:
#             if password == info.get(username):
#                 print("登入成功")
#                 break
#             else:
#                 print("密码错误,请重新输入")
# else:
#     print("错误次数过多")

六、文件操作+排序

#info = {}
# f = open("数据.txt",encoding="utf-8")
# for line in f:
#     if line.strip():
#         name = line.split()[1]
#         km = line.split()[2]
#         km = int(km) if km.isdigit() else float(km)  #简写
#         info[name] = km
# l = list(info.items())   #二维数组
# for i in range(len(l)-1):
#     for j in range(len(l)-1-i):
#         if l[j][1] < l[j+1][1]:   #二维数组取数值部分
#             l[j],l[j+1] = l[j+1],l[j]
# f1 = open("排名.txt","w",encoding="utf-8")
# count = 1
# for key in l:
#     name1 = key[0]
#     km1 = key[1]
#     msg = "%s,%s,%s \n"%(count,name1,km1)
#     f1.write(msg)
#     count += 1
# f.close()
# f1.close()

七、文件操作之数据库数据读取及写入

#1、第一步读文件,获取到文件里面的账号和密码
#2、把文件里面的账号和密码转成一个字典  {user:password}
#3、注册逻辑,注册成功存到字典里面,写文件里面
# users = {}
# f = open('users.txt',encoding='utf-8')
# for line in f:
#     line = line.strip()
#     if line:
#         user = line.split(',')[0]
#         password= line.split(',')[1]
#         users[user] = password
#
# for i in range(3):
#     username = input('username:').strip()
#     if  username=='':
#         print('账号已存在')
#
#     elif username in users:
#         print('输入不能为空')
#     else:
#         password = input('password:').strip()
#         cpassword = input('cpassword:').strip()
#         if password=='' or cpassword=='':
#             print('密码不为空')
#         elif password != cpassword:
#             print('两次输入密码不一致')
#         else:
#             users[username] = password
#             print('注册成功')
#             f = open('users.txt','a',encoding='utf-8') #追加
#             f.write('%s,%s\n'%(username,password))
#             f.close()
#             break
# else:
#     print('错误次数过多')