1、让我初步了解基本的语法和 常用函数
2、初步完成了用python编写登录的代码脚本
3、对我帮助说明:
遗留问题:
1、考虑如何用报错退出,提示没有黑白名单,请先创建,或者直接往后执行,都是按黑白名单为空去处理
2、如何把文件的内容以字典的形式保存
思维模式:
1、判断文件是否存在
2、没有则新建(文件或者目录),有则打开文件
3、如何读取文件内容且返回需要的内容
4、如何把返回的内容保存在列表、元组和 字典里
5、执行完后关闭文件
运用的函数:
open() 知识点:参数和用法
close() 关闭文件
read() 读取全部内容,返回字符串形式
readline()只读取第一行内容,返回字符串形式
readlines()读取全部内容返回
len() 返回对象长度
split() 通过指定分隔符对字符串进行切片
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
append() 把值添加到列表末尾的对象,但不会返回值
index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。
exit() # exit(0):无错误退出 exit(1):有错误退出
break和continue 区别
pass :占位符
循环语句:
要判断用while
循环次数用for
登录业务流程图:
业务代码一,通过定义好的列表和字典完成登录代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
import os, sys
Whitelist={"yao":"123456","YAO1":"123456"}
blacklist=["zhangs"]
count = 0
name =input("请输入你的账号:")
if name in blacklist:
print(name,"您的账号已被锁定")
sys.exit(0) # exit(0):无错误退出 exit(1):有错误退出
if name in Whitelist.keys():
print("账号正常!!")
while count < 3:
number = input("请输入你的密码:")
if number == Whitelist.get(name): #get() 函数返回指定键的值
print("welcome",name)
break
else:
print("密码错误!请重新输入:")
count += 1
if count == 3:
blacklist.append(name)
print("密码连续错误3次,账号锁定")
break
else:
print(name, "账号不存在")
业务代码二——通过读取txt文件方式完成业务代码(目前只能存列表形式,后续再学习用字典的形式保存)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
All_Whitelist_name =[]
All_Whitelist_password =[]
All_blacklist_name=[]
# ----------------如何判断文件是否存在 ,没有则新增------------------
blacklist_file = "E:/pythonProject/30day/blacklist.txt" # 找绝对路径
Whitelist_file = "E:/pythonProject/30day/Whitelist.txt"
if not os.path.exists(blacklist_file):
Bt = open("E:/pythonProject/30day/blacklist.txt","a+") #没有,则创建文件
else:
Bt = open("E:/pythonProject/30day/blacklist.txt", "r")
Black_list = Bt.readlines()
Bt.close()
if not os.path.exists(Whitelist_file):
Wt = open("E:/pythonProject/30day/Whitelist.txt","a+")
else:
Wt = open("E:/pythonProject/30day/Whitelist.txt", "r")
White_list = Wt.readlines()
Wt.close()
for W in range(0,len(White_list)): #len()返回对象长度,
print(W)
Whitelist = White_list[W].split(',') #以,为分隔符,默认为 -1, 即分隔所有
print(Whitelist)
Wt_Name = Whitelist[0].strip('\n') #移除字符串头尾指定的字符 ‘\n’
Wt_Password = Whitelist[1].strip('\n')
All_Whitelist_name.append(Wt_Name)
All_Whitelist_password.append(Wt_Password)
#print(All_Whitelist_name)
#print(All_Whitelist_password)
for B in range(0,len(Black_list)):
Blacklist = Black_list[B].split(',')
Bt_Name = Blacklist[0].strip('\n')
All_blacklist_name.append(Bt_Name)
#print(All_blacklist_name)
# 业务代码
count = 0
name = input("请输入账号:")
if name in All_blacklist_name:
print("账号已冻结")
exit(0)
if name in All_Whitelist_name:
while count < 3:
passwd = input("请输入密码")
name_index = All_Whitelist_name.index(name) #去列表找对应的元素返回对应的长度位置符
passwd_index = All_Whitelist_password[name_index]
print("密码",passwd_index )
if passwd == passwd_index:
print("登录成功",name)
exit()
else:
print("密码输入错误,请重新输入")
count += 1
if count == 3:
Bt = open("E:/pythonProject/30day/blacklist.txt", "a+")
Bt.write((name+'\n'))
Bt.close()
print("密码错误三次,已冻结该账户")
break
else:
print("用户不存在")