登录认证程序作业
基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序
username="admin"
password="admin"
count=1
while count<=3 :
_username=input("username:")
_password=input("password:")
if _username==username and _password==password :
print("welcome",_username)
break
count +=1
升级需求:
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
import pathlib
user_info = {'admin':'admin','root':'root','zhang':'123456','liu':'qwe'}
count = 1
while count <= 3 :
print('input account')
username = input("username:")
if username in user_info :
path = pathlib.Path('blacklist')
if path.is_file() :
f = open("blacklist","r",encoding='gbk')
for line in f.readlines() :
line = line.strip()
if line == username :
print(line,"账户已经被锁定")
f.close()
exit()
f.close()
break
else :
count += 1
if count == 4 :
print('连续输错账号三次')
exit()
count = 1
while count <= 3 :
password = input("password:")
if password == user_info[username] :
print('welcome',username)
break
count += 1
if count == 4 :
print('你已经输错三次,用户被锁定')
f = open("blacklist", "a+", encoding='gbk')
f.writelines(username)
f.writelines('\n')
f.close()
1.格式化输出
占位符:%s %d %f
s = string
d = digit
f = float
输出一个个人信息列表:
name=input("Name:")
job=input("Job")
age=input(Age)
hometown=input(Hometown)
info = """
-------- info of %s ------
Name: %s
Job: %s
Age: %s
Hometown: %s
---------- end -------------
""" % (name,name,job,age,hometown)
print(info)
2.if流量控制
1.单分支
if 条件 :
满足条件后执行
2.双分支
if 条件 :
满足条件后执行
else:
不满足条件执行
3.多分支
if 条件:
满足条件后执行
elif 条件:
上面条件不满足就走这个
elif 条件:
上面条件不满足就走这个
elif 条件:
上面条件不满足就走这个
3.while循环
while 条件:
执行代码....
eg:
count=0
while count<=100 :
print("loop",cout)
count +=1
print("loop end")
循环的终止语句
continue vs break
break用于完全结束一个循环,跳出循环体执行循环后面的语句;
continue是终止本次循环,接着还执行后面的循环;
while后面的else 作用是指,当while循环正常执行完,中间没有被break终止时,就会执行else后面的语句
可用来检查程序中途是不是被break了
4.列表
列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行增删改查;
name=['a','b','c','d','f','d','g']
1.查询元素
name[0]通过索引找到第一个元素
name[-1]z找最后一个元素
name[-2]倒数第二个元素
name.index('d')返回指定元素的索引值,从左右查找,找到第一个匹配的;
name.count('d')统计元素d的个数;
2.切片
name[0:3] 取0-2个元素,即前三个,切片顾头不顾尾
name[:3]取前三个
name[-5:]取后五个
name[::]取全部元素
name[:5:2] 取1 、3、5个; 2为步长;每隔2个取一个元素;
3.增加
name.append(‘haha’) 末尾追加一个元素haha
4.插入
name.insert(0,'abd') 位置0插入元素abd
name.insert(2,'aa') 位置2插入元素aa
5.修改
n[3] = 'hello' 第四个元素修改为hello
6.删除
name.pop 删除最后一个
name.remove('a') 删除元素a,从左往右,删除第一个元素a
del name[2] 删除索引为2的元素;(del是一个全局的删除命令,可以删除所有,包括变量等)
del name[2:4] 删除索引2-3的元素
7.循环
L2 = ['a','b','c','d','e','f']
for i in L2 :
print(i)
将L2列表中的每个值赋值给变量i,打印出每个i的值;
range(10) 生成一个0到9的列表
for i in range(10)
8.排序
name.sort() 对name按照ASCII从大到小进行排序,排序后再查看列表;
name
name.reverse() 将列表name倒叙
9.合并列表
name+name1 将name和name1列表合并
name.extend(name1) 将列表name扩展
10.清空列表
name.clear() 清空name列表
11.name1=name
name1=name 将name赋值给name1,name列表修改后,name1的数据会同步
12.copy
name1=name.copy() #浅copy
import copy #深copy,导入python的工具箱
name1=name.deepcopy(name)
13.enumerate(name) #枚举
5.字典
dic={'k1':'v1','k2':'v2' }
修改
dic['k1']=2 #修改
dic['k3']='v3' #增加