学习python登录demo
2018-06-17 23:52:58来源:未知 阅读 ()
要求编写登录接口 : 1. 输入用户名和密码
2.认证成功后显示欢迎信息
3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退出程序)
4.用户名正确,密码错误,提示密码错误,重新输入.(密码错误3次,锁定用户名并提示,退出程序)
readme
应用知识点:
一、文件的操作
open/文件操作
f=open('/tmp/hello','w')
#open(路径+文件名,读写模式)
#读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式
如:'rb','wb','r+b'等等
读写模式的类型有:
- rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
- w 以写方式打开,
- a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
- r+ 以读写模式打开
- w+ 以读写模式打开 (参见 w )
- a+ 以读写模式打开 (参见 a )
- rb 以二进制读模式打开
- wb 以二进制写模式打开 (参见 w )
- ab 以二进制追加模式打开 (参见 a )
- rb+ 以二进制读写模式打开 (参见 r+ )
- wb+ 以二进制读写模式打开 (参见 w+ )
- ab+ 以二进制读写模式打开 (参见 a+ )
open对象常用的方法
- read():读取字节到字符串中
- readline():打开文件的一行,包括行结束符
- readline():打开文件,读取所有行
- write():将字符串写入文件,写入对象为字符串
- writelines():将列表写入文件,对象是列表。
- seek():偏移量
- tell():返回当前文件指针的位置
注意:
1、使用'W',文件若存在,首先要清空,然后(重新)创建,
2、使用'a'模式 ,把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。
下面是一个例子,创建一个新文件,然后写入字符串,如果写入字符为".",则写入结束,然后打印出文件内容。
1 #!/usr/bin/env python 2 import os 3 filename=raw_input("please input your filename:") 4 while True: 5 if os.path.exists(filename): 6 print "ERROR,the filename exists!" 7 else: 8 break 9 a=[] 10 while True: 11 line=raw_input(">") 12 if line==".": 13 break 14 else: 15 line=line+"\n" 16 a.append(line) 17 file=open(filename,"w+") 18 file.writelines(a) 19 file.close() 20 file1=open(filename,"r") 21 for i in file1: 22 print i.strip()
with语句 同时打开多个文件,还可以避免打开文件后忘记关闭,语法:
1 with open('file1', 'r', encoding='utf-8') as f , \ 2 open('file2', 'w', encoding='utf-8') as f_2 : 3 ...
本例中有2个文件,一个存用户名和密码,另一个存黑名单.在读取文件后怎样转变成python对象,然后对对象进行操作,是我遇到的第一个难点!
然后查了下资料,发现字符串split方法,可以把字符串,从逗号分隔符的地方断开,得到一个子字符串列表.这样一来,就可以对黑名单进行查找等操作了.
本例中有2个文件,一个存用户名和密码,另一个存黑名单.在读取文件后怎样转变成python对象,然后对对象进行操作,是我遇到的第一个难点!
然后查了下资料,发现字符串split方法,可以把字符串,从逗号分隔符的地方断开,得到一个子字符串列表.这样一来,就可以对黑名单进行查找等操作了.
1 ... 2 user_lis_bak = f.readline().split(',') 3 ...
Python 字典 setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。
1 dict.setdefault(key, default=None)
二,列表和字典
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
1 names = ['xiaoli',"xiaoming",'yuanlu']
通过下标访问列表中的元素,下标从0开始计数
1 >>> names[0] 2 'xiaoli' 3 >>> names[1] 4 'xiaoming' 5 >>> names[-1] 6 'yuanlu' 7 >>> names[-2] #还可以倒着取 8 'xiaoming'
字典是一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
1 info = { 2 'xiaoli': "123456", 3 'xiaoming': "111111", 4 'yuanlu': "888888", 5 }
这里key是用户名,value是密码,一一对应,key是唯一的.
三,for loop 和 if...else
最简单的循环10次
1
2
3
4
5
6
|
#_*_coding:utf-8_*_ __author__ = 'Alex Li' for i in range ( 10 ): print ( "loop:" , i ) |
输出:
1
2
3
4
5
6
7
8
9
10
|
loop: 0 loop: 1 loop: 2 loop: 3 loop: 4 loop: 5 loop: 6 loop: 7 loop: 8 loop: 9 |
需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环
1
2
3
4
|
for i in range ( 10 ): if i< 5 : continue #不往下走了,直接进入下一次loop print ( "loop:" , i ) |
需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
1
2
3
4
|
for i in range ( 10 ): if i> 5 : break #不往下走了,直接跳出整个loop print ( "loop:" , i ) |
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
海枯石烂代码
1
2
3
4
5
|
count = 0 while True : print ( "你是风儿我是沙,缠缠绵绵到天涯..." ,count) count + = 1 |
其实除了时间,没有什么是永恒的,死loop还是少写为好
上面的代码循环100次就退出吧
1
2
3
4
5
6
7
8
|
count = 0 while True : print ( "你是风儿我是沙,缠缠绵绵到天涯..." ,count) count + = 1 if count = = 100 : print ( "去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼的臭男人.." ) break |
回到上面for 循环的例子,如何实现让用户不断的猜年龄,但只给最多3次机会,再猜不对就退出程序。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#!/usr/bin/env python # -*- coding: utf-8 -*- my_age = 28 count = 0 while count < 3 : user_input = int ( input ( "input your guess num:" )) if user_input = = my_age: print ( "Congratulations, you got it !" ) break elif user_input < my_age: print ( "Oops,think bigger!" ) else : print ( "think smaller!" ) count + = 1 #每次loop 计数器+1 else : print ( "猜这么多次都不对,你个笨蛋." ) |
user.txt
1 xixi 123456 2 haha 234567 3 bibi 345678 4 aiai 345678 5 didi 345678 6 men 345678
锁定文件:
lock_file.txt
1 xixi 2 bibi
代码文件:
1 username = input("请输入用户名:") 2 # 检查用户是否被锁住 3 lock_read = open("lock_file.txt","r") 4 for lock in lock_read: 5 lock_user = lock.strip() # 取出user里的用户信息 6 if username == lock_user: 7 print("你被锁住了") 8 break 9 else: 10 continue 11 lock_read.close() 12 13 if username != lock_user: 14 passworld = input("请输入密码:") 15 with open("user.txt") as user_info: 16 for user in user_info: 17 user_name = user.strip().split(" ")[0] 18 user_pass = user.strip().split(" ")[1] 19 print(user_name) 20 if username ==user_name: 21 print("登录成功。。") 22 else: 23 print("密码错误") 24 for count in range(0,2): 25 count = count + 1 26 passworld = input("请输入密码:") 27 if user_pass == passworld: 28 print("登录成功..") 29 break 30 else: 31 print("密码错误") 32 print(count) 33 if count == 2: 34 lock_write = open("lock_file.txt","a+") 35 lock_write.write("\n") 36 lock_write.write(username) 37 lock_write.close() 38 print('该用户已经被锁住,请联系管理员!!!') 39 break 40 if username != user_name: 41 print("该用户不存在")
初次学习,看老男孩视频,做了挺久的,还存在很多bug,需完善^_^...
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash