登录认证程序作业
基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序
- 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' #增加
来源: http://www.bubuko.com/infodetail-2660681.html