10.9

今日内容

1.文件内光标移动案例

2.计算机硬盘修改数据的原理

3.文件内容修改

4.函数

5.函数的语法结构

6.函数的定义与调用

7.函数的分类

8.函数的返回值

9.函数的参数

1.文件内光标移动案例(了解)

import time
with open(r'a.txt','rb') as f:
    f.seek(0,2)
    while True:
        line = f.readline()
        if len(line) == 0:
            #没有内容
            time.sleep(0.5)
        else:
            print(line.decode('utf8'),end='')

2.计算机硬盘修改数据的原理(了解)

硬盘写数据可以看成是在硬盘上刻字 一旦需要修改中间内容 则需要重新刻字
因为刻过的字不可能从中间再分开

硬盘删除数据的原理
	不是直接删除而是改变状态 等待后续数据的覆盖才会被真正删除

3.文件内容修改(了解)

修改文件内容的方式1with open(r'a.txt','r',encoding='utf8') as f:
    data = f.read()
with open(r'a.txt','w',encoding='utf8') as f1:
    f1.write(data.replace('jason','tony'))
修改文件内容的方式2:换地写
先在另外一个地方写入内容 然后将源文件删除 将新文件命名成源文件
import os

with open('a.txt', 'r', encoding='utf8') as read_f, \
        open('.a.txt.swap', 'w', encoding='utf-8') as write_f:
    for line in read_f:
        write_f.write(line.replace('tony', 'kevinSB'))


os.remove('a.txt')   # 删除a.txt
os.rename('.a.txt.swap', 'a.txt')  # 重命名文件

4.函数

name_list = ['jason', 'kevin', 'oscar', 'jerry']
  print(len(name_list))
突然len不准用
 count = 0
 for i in name_list:
     count += 1
 print(count)
统计列表内数据值个数的代码需要在很多地方使用
 相同的代码需要在不同的位置反复执行

循环    相同的代码在相同的位置反复执行   
函数    相同的代码在不同的位置反复执行
    ps:相同的代码不是真正一模一样而是可以通过传入的数据不同而做出不同的改变

def my_len():
    count = 0
    for i in name_list:
        count += 1
    print(count)
my_len()    

函数相当于是工具(具有一定功能)
    不用函数
        修理工需要修理器件要用锤子 原地打造 每次用完就扔掉 下次用继续原地打造
    用函数
        修理工提前准备好工具 什么时候想用就直接拿出来使用

5.函数的语法结构

def 函数名(参数):
    函数注释
   函数体代码
 return 返回值
1.def
	定义函数的关键字
2.函数名
	命名等同于变量名
3.参数
	可有可无 主要是在使用函数的时候规定要不要外界传数据进来
4.函数注释
	类似于工具说明书
5.函数体代码
	是整个函数的核心 主要取决于程序员的编写
6.return
	使用函数之后可以返回给使用者的数据 可有可无

6.函数的定义与调用

1.函数在定义阶段只检测语法 不执行代码
	def func():
		pass
2.函数在调用阶段才会执行函数体代码
	func()
3.函数必须先定义后调用
4.函数定义使用关键字def函数调用使用>>>:函数名加括号
    如果有参数则需要在括号内按照相应的规则传递参数(后续详细讲解)

7.函数的分类

1.空函数
	函数体代码为空 使用的pass或者...补全的
 	空函数主要用于项目前期的功能框架搭建
 	 def register():
        #注册功能
        pass
2.无参函数
	 定义函数的时候括号内没有参数
	 def index():
        print('from index function')
3.有参函数
	定义函数的时候括号内写参数 调用函数的时候括号传参数
 	def func(a):
    	  print(a)

8.函数的返回值

1.什么是返回值  调用函数之后返回给调用者的结果
2.如何获取返回值   变量名 赋值符号 函数的调用
 	res = func()  # 先执行func函数 然后将返回值赋值给变量res
3.函数返回值的多种情况
	3.1.函数体代码中没有return关键字 默认返回None
 	3.2.函数体代码有return 如果后面没有写任何东西还是返回None
 	3.3.函数体代码有return 后面写什么就返回什么
 	3.4.函数体代码有return并且后面有多个数据值 则自动组织成元组返回
 	3.5.函数体代码遇到return会立刻结束

9.函数的参数

1.形式参数    在函数定义阶段括号内填写的参数 简称'形参‘
2.实际参数    在函数调用阶段括号内填写的参数 简称'实参'
 形参与实参的关系
    形参类似于变量名 在函数定义阶段可以随便写 最好见名知意
    def register(name,pwd):
        pass
 实参类似于数据值 在函数调用阶段与形参临时绑定 函数运行结束立刻断开
 register('jason'123)       形参name与jason绑定 形参pwd与123绑定

作业

1.使用函数将员工管理系统和文件进阶注册登录封装
def user():
    print('登录')
    username = input('输入用户名:').strip
    password = input('输入密码:').strip
    with open(r'userinfo.txt','r',encoding='utf8') as f:
        for line in f:
            real_name, real_pwd = line.split('|')
            if real_name == username and real_pwd.strip('\n') == password:
                print('登录成功')
                break
        else:
            print('用户名或密码错误')
            return 1
def register():
    print('注册')
    username = input('输入用户名:').strip
    password = input('输入密码:').strip
    with open(r'userinfo.txt', 'r', encoding='utf8') as f:
        for line in f:
            real_name, real_pwd = line.split('|')
            if username == real_name:
                print('用户名已存在 无法注册')
                break
        else:
            with open(r'userinfo.txt', 'a', encoding='utf8') as f1:
                f1.write(f'{username}|{password}\n')
            print(f'用户{username}注册成功')
            return
    return 1
a = {'1': ['注册', register], '2': ['登录', user]}
while True:
    for i in range(1, len(a) + 1):
        print(i, a.get(str(i))[0])
    choice = input('请输入序号以选择功能(q/Q退出):').strip()
    if choice.upper() == 'Q':
        break
    while choice.isdigit() and choice in a:
        res = a[choice][1]()
        if res:
            continue
        else:
            break
    else:
        print('序号输入有误,请重新输入')
        continue
posted @   与屿  阅读(638)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
点击右上角即可分享
微信分享提示