zoukankan      html  css  js  c++  java
  • emmm......就当练习了系列07

    一:今日作业:
    1、编写文件copy工具

     src_file=input('源文件路径>>: ').strip()
     dst_file=input('源文件路径>>: ').strip()
     with open(r'{}'.format(src_file),mode='rt',encoding='utf-8') as f1,
       open(r'{}'.format(dst_file),mode='wt',encoding='utf-8') as f2:
     # 方法一:  

      res=f1.read()
         f2.write(res)

    # 方法二:

      for line in f1:
        f2.write(line)

    2、编写登录程序,账号密码来自于文件

    name= input('输入用户名').strip()
    psd = input('输入密码').strip()
    with open('info.txt',mode='r',encoding='utf-8')as info_f:
    for line in info_f:
    username,userpsd = line.strip().split(':')
    if username== name and userpsd == psd:
    print('登陆成功')
    break
    else:
    print('登录失败')

    3、编写注册程序,账号密码来存入文件

    reg_name = input('创建用户名')
    reg_psd = input('输入密码')
    with open('reg.txt',mode='a',encoding='utf-8') as rg_f:
    rg_f.write('{}:{} '.format(reg_name,reg_psd))


    二:周末综合作业:
     2.1:编写用户登录接口
    1、输入账号密码完成验证,验证通过后输出"登录成功"
    2、可以登录不同的用户
    3、同一账号输错三次锁定,(提示:锁定的用户存入文件中,这样才能保证程序关闭后,该用户仍然被锁定)

    用户的账号与密码存放在文件中,需要读取用户的账号密码进行校验,校验通过后则登录成功。

    # 1) 接收用户输入的账号与密码
    username = input('请输入账号: ').strip()
    password = input('请输入密码: ').strip()
    print(f'用户输入的账号与密码是: {username} {password}')

    # 2) 从文件中读取用户的数据进行校验
    with open('user_info.txt', 'r', encoding='utf-8') as f:
      res = f.read()
      print(res)
      # user_list = res.split(':')
      # print(user_list)
      # user_info.txt中没有换行符的情况下
      user, pwd = res.split(':')
      print(f'文件中存放的账号与密码是: {user} {pwd}')
      if username == user and password == pwd:
        print('登录成功!')
      else:
        print('登录失败')
    '''

    # 2、可以登录不同的用户
    '''
    tag = True
    while tag:
    # 1) 接收用户输入的账号
      username = input('请输入账号: ').strip()

    # 2) 从user_info2.txt文件中读取用户的数据进行校验
      with open('user_info2.txt', 'r', encoding='utf-8') as f:
        for user_pwd in f:
        # user_info2.txt中有换行符的情况下
        # 先将换行符去掉,然后再根据:号进行切割
        user, pwd = user_pwd.strip().split(':')
        # print(f'文件中存放的账号与密码是: {user} {pwd}')

        # 3) 先校验用户名
        if username == user: # 若账号存在则成立,否则不成立
          print(username)

          # 4) 若用户名存在,继续输入密码
          while True:
            password = input('请输入密码: ').strip()
            if password == pwd:
            # 登录成功后,结束所有循环
              print('登录成功!')
              tag = False
              break

            else:
              print('登录失败!')
    '''


    # 3、同一账号输错三次锁定,(提示:锁定的用户存入文件中,这样才能保证程序关闭后,该用户仍然被锁定)
    # user_info3.txt

    # 答案
    '''
    tag = True
    while tag:
      # 1) 接收用户输入的账号
      username = input('请输入账号: ').strip()

      # 2) 从user_info3.txt文件中读取用户的数据进行校验
      with open('user_info3.txt', 'r', encoding='utf-8') as f,
        open('user_info_copy.txt', 'w', encoding='utf-8') as w:                      # w模式

        # 将user_info3.txt文件中的每一行数据读取出来,然后赋值给user_pwd
        for user_pwd in f:
          # user_info3.txt中有换行符的情况下
          # 先将换行符去掉,然后再根据:号进行切割
          user, pwd, count = user_pwd.strip().split(':')
          # print(f'文件中存放的账号与密码是: {user} {pwd}')
          count = int(count)
          # 3) 先校验用户名
          if username == user: # 若账号存在则成立,否则不成立

            # print(username)
            # 4) 若用户名存在,初始让用户输入三次机会,继续输入密码
            while count < 3: # 初始 0<3
              password = input('请输入密码: ').strip()
              if password == pwd:
                # 登录成功后,结束所有循环
                print('登录成功!')
                tag = False
                break
              else:
                print('登录失败!')
                count += 1

            # 若当前用户的计数为3,代表已被锁定
            if count == 3: # 当用户计数为3时,打印锁定
              print('当前用户以被锁定')

            # 5) 在此处将,未修改与修改后的用户数据写入user_info_copy.txt文件中
           w.write(f'{user}:{pwd}:{count} ')

    # 6) 删除user_info3.txt文件
    import os
    os.remove('user_info3.txt')

    # 7) 将user_info_copy.txt改名为user_info3.txt文件
    os.rename('user_info_copy.txt', 'user_info3.txt')
    # 作业: 通过文件处理时限 6、7步骤
    '''


     2.2:编写程序实现用户注册后,可以登录,
    提示:
    while True:
    msg = """
    0 退出
    1 登录
    2 注册
    """
    print(msg)
    cmd = input('请输入命令编号>>: ').strip()
    if not cmd.isdigit():
    print('必须输入命令编号的数字,傻叉')
    continue

    if cmd == '0':
    break
    elif cmd == '1':
    # 登录功能代码(附加:可以把之前的循环嵌套,三次输错退出引入过来)
    pass
    elif cmd == '2':
    # 注册功能代码
    pass
    else:
    print('输入的命令不存在')

    # 思考:上述这个if分支的功能否使用其他更为优美地方式实现

    dic = {
    '0': '退出',
    '1': '登录',
    '2': '注册'
    }

    while True:
      msg = """
      0 退出
      1 登录
      2 注册
      """
      print(msg)
      cmd = input('请输入命令编号>>: ').strip()
      if not cmd.isdigit():
        print('必须输入命令编号的数字,傻叉')
        continue

      # 判断当前用户如果不在dic字典中,执行
      if cmd not in dic:
        print('输入的命令不存在')
        continue

      print(dic.get(cmd))
    '''

     

  • 相关阅读:
    GNOME3启动时出错:Oh no! Something has gone wrong.Logout!
    设计模式之迭代器模式
    C#中多线程 委托的使用
    python的memcache使用如果对key设置了一个int型
    Linux select TCP并发服务器与客户端编程
    G++ 教程(转)
    汉语-词语:卓识
    汉语-词语:决断
    汉语-词语:远见
    汉语-词语:胆识
  • 原文地址:https://www.cnblogs.com/lucky-cat233/p/12489306.html
Copyright © 2011-2022 走看看