学习_01_登陆和注册

注册

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import time
# 关键步骤,控制台打印日志
# 一次能连续注册3个用户
for i in range(3):
    '''
    从控制台录入注册信息
    注册信息含有3个字段:用户名、密码、年龄(数字)
    每个字段录入时,要给出提示,并且换行输入
    计算注册时间,格式化成:yyyy-MM-dd HH:mi:ss
    '''
    name = input('请输入用户名:\n')
    pwd = input('请输入密码:\n')
    age = int(input('请输入年龄:\n'))
    register_time = time.strftime('%Y-%m-%d-%H:%M:%S',time.localtime())
    nickname = ''
    '''
    根据年龄,计算昵称:
    [0,20)="小奶狗"
    [20,30)="男神"
    [30,)=“油腻大叔”
    '''
    if age < 20:
        nickname = '昵称:小奶狗'
    elif age in range(20, 30):
        nickname = '昵称:男神'
    else:
        nickname = '昵称:油腻大叔'
    '''
    将注册信息持久化到文件
    文件名:register.data
    持久化字段:用户名、密码、年龄、昵称、注册时间
    字段分隔符:“,”
    以追加的方式写入文件,不能覆盖
    中文编码:utf-8
    每个用户占一行
    '''
    with open('register.data', 'a', encoding='utf-8') as f:
       a = f.write(name + ',' + pwd + ',' + str(age) + ',' + nickname + ',' + register_time + '\n')

注册_优化

#! /usr/bin/env python
# -*- coding: utf-8 -*-
'''
优化后添加了必填字段不能为空的功能.其中len()函数作用是返回对象的长度
思路:
      1.输入姓名 密码 确认密码
      2.如果姓名 密码 确认密码 不为空 就输入年龄,根据输入的年龄判断昵称
      3.获取当前的日期
      4.录入信息到register.data文件中 并提示注册成功
      5.如果必填字段为空,提示对应信息
'''
import time
for i in range(3):
    name = input('请输入姓名: ')
    pwd = input('请输入密码: ')
    c_passwd = input('请再次确认密码: ')
    if len(name.strip()) != 0 and len(pwd.strip()) != 0 and pwd == c_passwd:
        age = int(input('请输入年龄:\n'))
        nickname = ''
        if age < 20:
            nickname = '昵称:小奶狗'
        elif age in range(20, 30):
            nickname = '昵称:男神'
        else:
            nickname = '昵称:油腻大叔'
        register_time = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime())
        with open('register.data', 'a', encoding='utf-8') as f:
            f.write(name + ',' + pwd + ',' + str(age) + ',' + nickname + ',' + register_time + '\n')
        print('注册成功')

    elif len(name.strip()) == 0:
        print('姓名不能为空,请重新输入')
    elif len(pwd.strip()) == 0:
        print('密码不能为空,请重新输入')
    elif c_passwd != pwd:
        print('两次输入的密码不一致,请重新输入')

登陆

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# 从文件加载用户列表
'''
文件名:register.data
with open('register.data', 'r', encoding='utf-8') as f:
1.readlines()读取register.data文件所有的每一行的数据
2.strip()删除开头或者结尾的字符
3.通过split()指定分隔符对字符串进行切片
4.将所有用户存到一个用户集列表users_list中
'''
list = []
with open('register.data', 'r', encoding='utf-8') as f:
    for line in f.readlines():
        user = line.strip().split(',')
        list.append(user)
        print(user[0])
# 控制台登录
# 提示输入用户名
'''
 判读登录用户是否已注册
 1.逐条对比注册用户信息  循环对比数组中第一个和第二个的值
 2.如果相同登陆成功
 3.发现登录成功后,结束后续循环
 4.若对比完所有注册用户都没匹配成功,则提示登录失败
 5.有3次登录机会,每次机会若成功,则结束登录,每次机会若失败,则提示失败,并显示剩余机会次数
 在python中 None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False,使用if not flag 这种写法的前提是:必须清楚flag等于None,False
'''

for i in range(3):
    name = input("请输入用户名:")
    pwd = input("请输入密码:")
    flag = False
    for user in list:
        if name == user[0] and pwd == user[1]:
            print("登陆成功")
            flag = True
            break
    if not flag:
        print("登陆失败,请检查用户名和密码")

总结:

将控制台录入的信息持久化到文件的写法

操作文件固定写法:

open(file, mode='a', , encoding='utf-8')
with open('register.data', 'r', encoding='utf-8') as f:
file: 必需,文件路径(相对或者绝对路径)
mode: 可选,文件打开模式
encoding: 一般使用utf8
with 代表打开文件之后关闭文件的操作,open函数代表的是打开文件操作,里面有文件的路径,文件的操作,比如'r'代表的是只读取,'a'代表的是打开一个文件用于追加,编码格式utf-8,as f 代表的是取变量名
r 以只读方式打开文件,这是默认模式
w 打开一个文件只用于写入。存在,覆盖。不存在,自动新建
a 打开一个文件用于追加。存在,追加。不存在,自动新建
w+:写和读;a+:追加和读

函数

len() 作用是返回对象的长度
range() 返回的是一个可迭代对象(类型是对象)默认是从 0 开始。例如range(5)等价于range(0, 5);
input() 接受一个标准输入数据,返回为 string 类型。
open() 打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
readlines() 用于读取所有行,并返回列表
strip() 删除开头或是结尾的字符,不能删除中间部分的字符。
split() 通过指定分隔符对字符串进行切片
append() 方法用于在列表末尾添加新的对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,841评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,415评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,904评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,051评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,055评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,255评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,729评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,377评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,517评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,420评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,467评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,144评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,735评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,812评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,029评论 1 256
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,528评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,126评论 2 341