6.30内容整理和概述

6.30内容整理和概述

昨天作业回顾

第一题:

​ 编写简易版本的拷贝工具

本人代码:
    ta_path = input("请输入数据路径:")
    dest_path = input("请输入拷贝路径:")
    with open(sta_path, 'rb') as f, open(dest_path, 'wb') as h:
        content = f.read()
        h.write(content)
       
jason代码:
	source_file_path = input('请输入想要拷贝的数据路径>>>:').strip()
    source_file_path = input('请输入想要拷贝的数据路径>>>:').strip()
    with open(r'%s' % source_file_path, 'rb') as f1, open(r'%s' % target_file_path, 'wb') as f2:
         for line in f1:
                 f2.write(line)
                    
思考:
	1.整体思路一样,还需注意两个小点
    2.获取输入时还是得注意strip()方法的调用,得养成习惯
    3.命名还得多练练,要简明知义

第二题:

本人代码:
    flag = True
    while flag:
        print("""
        ----------------login / register------------------

                            1.登录
                            2.注册

        ------------------------------------------------
        """)
        lr_order = input("请选择登录或注册(1/2):")
        if lr_order and lr_order.isdigit() == True:
            if int(lr_order) == 1:
                print("欢迎登录")
                with open(r'D:\aa\client.txt', 'a', encoding='utf8') as premise:
                    pass
                log_name = input("请输入用户名:")
                log_password = input("请输入密码:")
                if log_name and log_password.isdigit():
                    with open(r'D:\aa\client.txt','r',encoding='utf8') as login:
                        for log_client in login:
                            log_client_name= log_client.split('|',maxsplit=2)[0]
                            log_client_password = log_client.split('|',maxsplit=2)[1]
                            print(log_client_name)
                            print(log_client_password)
                            if log_client_name == log_name and log_client_password == log_password:
                                print("登录成功")
                                break
                        else:print("登录失败")
                else:print("请输入正确格式")        
            elif int(lr_order) == 2:
                reg_judge = True
                while reg_judge:
                    print("欢迎注册")
                    reg_name = input("请输入用户名:")
                    reg_password = input("请输入用户密码:")
                    reg_age = input("请输入年龄:")
                    reg_number = input("请输入联系方式:")
                    if reg_name and reg_password.isdigit() and reg_age.isdigit() and reg_number.isdigit():
                        flag = True
                        with open(r'D:\aa\client.txt', 'r', encoding='utf8') as check:
                            for check_client in check:
                                check_name = check_client.split('|', maxsplit=2)[0]
                                if reg_name == check_name:
                                    flag = False
                        if flag:
                            reg_list = []
                            reg_list = [reg_name,reg_password,reg_age,reg_number]
                            reg_client = '|'.join(reg_list)
                            with open(r'D:\aa\client.txt','a',encoding='utf8') as register:
                                register.write(reg_client)
                                register.write('\n')
                            print("注册成功")
                            reg_con_judge = True
                            while reg_con_judge:
                                reg_circle = input("是否需要继续注册(1>>是/2>>否):")
                                if reg_circle == "1":
                                    break
                                elif reg_circle == "2":
                                    reg_con_judge = False
                                    reg_judge = False
                                elif reg_circle != "1" and reg_circle != "2":
                                    print("请输入正确指令")
                                    continue
                        else:print("用户名重复,请重试")
                    else:print("请输入正确格式")
        else:
            print("请输入正确指令")
            flag = True

思考:
	1.总体结构和功能没有大的毛病
	2.不要同时对一个文件进行读和写,不会成功。
	3.操作文本文件时,注意换行符
	4.当路径为一个变量时,用r的方法依靠占位符,天才方法。
	5.判断用户名存在时,最好不要用成员运算符,精度不高

今日内容概述

内容目录

  • 文件内的光标移动
  • 文件数据修改
  • 函数简介
  • 自学内容

文件内的光标移动

1.read(数字):
	文本模式:在此模式下,代表从光标位置向后读取几个字符
	二进制模式:在此模式下,代表从光标位置向后读取几个字节
2.tell():获取光标移动的字节数
3.seek(offset,whence): 移动光标
    offset:控制光标移动的字节量,大小代表步长,正负代表方向。
	whence:
	   0:将光标移动到文件开头
	   1:光标停留在当前位置
	   2. 光标移动到文件末尾

文件数据修改

两种方式:
	1.覆盖写:先读取文件内容到内存 在内存中完成修改 之后w模式打开该文件写入
    	优点:硬盘只占用一块空间
		缺点:数据量较大的时候会造成内存溢出
    2.重命名:读取文件内容到内存 在内存中完成修改 之后保存到另外一个文件中,再将原文件删除 将新的文件重命名为原文件
小知识:
		优点:不会造成内存溢出
		缺点:有那么一段时间需要占用硬盘两个地方的空间(可能),也可能是在内存中创建没有刷到硬盘
	机械硬盘储存数据用的是覆盖写,数据的删除,是将占有态数据转变为自由态数据。

函数简介

1.函数与循环的差别:
	循环:在相同的位置反复执行相同的代码
	函数:在不同的位置反复执行相同的代码
2.函数分为两类:
	1.内置函数:Python自带函数。
	2.自定义函数:是我们自主编写,并将其封装的函数。它不会产生返回值。

自学内容

1.r+:打开一个文件用于读写。文件指针将会放在文件的开头
2.w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
3.a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写
4.rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
5.wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
6.ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写

今日作业

from method import register
from method import login
flag = True
while flag:
    print("""
    #     ----------------login / register------------------
    #
    #                         1.登录
    #                         2.注册
    #
    #     ------------------------------------------------
    #     """)
    lr_order = input("请选择登录或注册(1/2):")
    if lr_order and lr_order.isdigit() == True:
        if int(lr_order) == 1:
            print("欢迎登录")
            login()
        if int(lr_order) == 2:
            print("欢迎注册")
            register()
    else:
        print("请输入正确格式")
        
        
        
def register():
    reg_judge = True
    while reg_judge:

        reg_name = input("请输入用户名:")
        reg_password = input("请输入用户密码:")
        reg_age = input("请输入年龄:")
        reg_number = input("请输入联系方式:")

        # 判断用户输入格式是否正确
        if reg_name and reg_password.isdigit() and reg_age.isdigit() and reg_number.isdigit():
            # 判断用户名是否重复
            flag_check = True
            with open(r'D:\aa\client.txt', 'r', encoding='utf8') as check:
                for check_client in check:
                    check_name = check_client.split('|', maxsplit=2)[0]
                    if reg_name == check_name:
                        flag_check = False
            # 注册操作
            if flag_check:
                reg_list = []
                reg_list = [reg_name, reg_password, reg_age, reg_number]
                reg_client = '|'.join(reg_list)
                with open(r'D:\aa\client.txt', 'a', encoding='utf8') as register:
                    register.write(reg_client)
                    register.write('\n')
                print("注册成功")
                reg_con_judge = True

                # 判断是否需要继续注册
                while reg_con_judge:
                    reg_circle = input("是否需要继续注册(1>>是/2>>否):")
                    if reg_circle == "1":
                        break
                    elif reg_circle == "2":
                        reg_con_judge = False
                        reg_judge = False
                    elif reg_circle != "1" and reg_circle != "2":
                        print("请输入正确指令")
                        continue
            else:
                print("用户名重复,请重试")
        else:
            print("请输入正确格式")
            
            


def login():
    with open(r'D:\aa\client.txt', 'a', encoding='utf8') as premise:
        pass
    log_name = input("请输入用户名:")
    log_password = input("请输入密码:")
    if log_name and log_password.isdigit():
        with open(r'D:\aa\client.txt', 'r', encoding='utf8') as login:
            for log_client in login:
                log_client_name = log_client.split('|', maxsplit=2)[0]
                log_client_password = log_client.split('|', maxsplit=2)[1]
                if log_client_name == log_name and log_client_password == log_password:
                    print("登录成功")
                    break
            else:
                print("登录失败")
    else:
        print("请输入正确格式")
posted @ 2022-06-30 20:35  维生素Z  阅读(5)  评论(0)    收藏  举报