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))
'''

 

原文地址:https://www.cnblogs.com/lucky-cat233/p/12489306.html