python 第一课,如何实现登录系统
课题: 制作一个登录系统,验证用户名及密码,输入密码三次错误后锁定该账户
难点:读取用户名、密码及锁定账户需要将数据保存于硬盘。
编写思路:通过for遍历用户名,while循环验证密码。
疑难: ture_or_error = sheet1.cell(num_excel,2).value#.encode('utf-8') 这里是否需要编码转换?
写入已存在数据的excel 除了xlutils 是否还有其他办法?
1 #-*-coding:utf-8-*- 2 import xlrd 3 from xlwt import 4 from xlutils.copy import copy 5 '''使用excel读写需要 xlrd xlwt xlutils这三个插件,我会另开一个博客分别叙述 6 xlrd 读取excel的插件,仅能读取 7 xlwt 写入excel的插件,仅能写入空白的sheet,如果写入已有数据的sheet会覆盖掉原有全部数据 8 xlutils 写入excel插件,用法为先把原sheet全部读取并复制成sheet2,再把需要写入的数据写入到 9 sheet2中,然后把sheet2粘贴到原sheet中全部覆盖。''' 10 account_excel = xlrd.open_workbook(r'D:\Meitu\1.xls')#打开用户名和密码的sheet表格 11 sheet1=account_excel.sheets()[0]#获取表格第一个sheet的数据存到sheet1中 12 cols = sheet1.col_values(0)#获得第一列用户名的全部值并存到数组cols中 13 len_cols=len(cols)#获得cols的长度也就是用户名的数量 14 len_num = 1#代表for遍历用户名时的计次变量 15 #print(cols) 16 input_num=0#密码输入错误三次的while 计次变量 17 name = input('enter account name:') 18 name=str(name) 19 flag = 1#遍历用户名时的判断用变量,如果不加会导致登录成功后仍需输入用户名 20 flag2 = 2#用户名输入错误后再次循环 21 while flag2==2: 22 for name_account in cols:#开始遍历用户名 26 if name == name_account:#遍历过程中发现表格中的用户名同输入的相等时 27 num_excel = cols.index(name_account)#获得该用户名在数组中的位置,以此来读取同行下的锁定判断值 28 ture_or_error = sheet1.cell(num_excel,2).value#.encode('utf-8') 好像这里用utf-8编码前面会带个b' 不知道什么原因 29 if ture_or_error == 'no': 30 print('your account has been locked') 31 flag = 0 32 flag2 = 1 33 input_num =3 34 break 35 while input_num <3:#开始3次判断密码是否输入正确 36 password = input('enter password:') 37 password_account = sheet1.cell(num_excel,1).value 38 password_account=str(password_account) 39 if password == password_account: 40 print('enter suess') 41 input_num=4 42 flag = 0 43 flag2 = 1 44 break 45 else: 46 print('password error') 47 48 49 input_num +=1 50 if input_num == 3: 51 print('your account is locked')#这段就是写入代码了 52 sheet1_old = copy(account_excel) 53 sheet_new = sheet1_old.get_sheet(0) 54 sheet_new.write(num_excel,2,"no") 55 sheet1_old.save(r'D:\Meitu\1.xls') 56 flag = 0 57 flag2 = 1 58 if flag == 1: 59 60 len_num += 1 61 #print(len_num) 62 if len_cols == len_num: 63 64 print('your name is not find') 65 name = input('enter your name:')
浙公网安备 33010602011771号