zoukankan      html  css  js  c++  java
  • 学习python登录demo

    要求编写登录接口 : 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+"
    "
    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()
    View Code

     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 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 in range(10):
        if i<5:
            continue #不往下走了,直接进入下一次loop
        print("loop:", i )

    需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出

    1
    2
    3
    4
    for 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
    View Code

    锁定文件:

     lock_file.txt

    1 xixi
    2 bibi
    View Code

    代码文件:

     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("
    ")
    36                     lock_write.write(username)
    37                     lock_write.close()
    38                     print('该用户已经被锁住,请联系管理员!!!')
    39                     break
    40         if username != user_name:
    41             print("该用户不存在")
    View Code

     初次学习,看老男孩视频,做了挺久的,还存在很多bug,需完善^_^...

  • 相关阅读:
    关于盒模型的外边距padding和内边距margin
    CSS概述(最详细!!!)
    关于html的基本知识
    Maven学习(1)-什么是Maven
    IntelliJ IDEA+Github+Maven+Jenkins+SipringBoot+VUE搭建Web开发环境样例(2)-创建一个简单的查询数据库项目
    IntelliJ IDEA+Github+Maven+Jenkins+SipringBoot+VUE搭建Web开发环境样例(1)-安装与配置
    YARN(待了解)
    Mesos(待了解)
    Kubernetes-中文文档地址(收藏)
    Jenkins学习(4)-Jenkins的API(收藏)
  • 原文地址:https://www.cnblogs.com/chen-cheng/p/8038795.html
Copyright © 2011-2022 走看看