首页 > 编程语言 >python期末考试(个人理解)主要内容为函数和文件与数据格式化(三)持续更新

python期末考试(个人理解)主要内容为函数和文件与数据格式化(三)持续更新

时间:2024-06-22 09:01:20浏览次数:3  
标签:文件 格式化 函数 python 期末考试 file print 全局变量 def

如有错误,敬请更新!!!

函数的概述:将一串代码打包成一个包,为了以后方便使用

函数的定义:使用关键字(保留字)def来定义
def my_function():
    # 函数体
    print("Hello, World!")

函数的调用

# 定义一个函数,它接受两个参数并返回它们的和
def add_numbers(a, b):
    result = a + b
    return result
# 调用函数,并传递两个参数
sum = add_numbers(5, 3)
# 打印函数返回的结果
print("The sum is:", sum)、

函数的传递:
定义函数时设置的参数为形式参数(形参),调用函数时传入的参数为实际参数(实参)
传递本质是将实参发送给形参(将外面的数传到函数里面)
def get_max(a, b):
    if a > b:
        print(a,"是较大的值!")
    else:
        print(b,"是较大的值!")
get_max(8, 5)
在上述代码中,8这个实参传给形参a,5这个实参传给形参b(原理为实参=形参)
默认参数的传递:在定义函数时就给了函数一个变量值
# 定义一个函数,其中第二个参数有一个默认值
def greet(name, greeting='Hello'):
    print(greeting, name)
# 调用函数时不提供第二个参数,使用默认值
greet('Alice')
# 调用函数时提供第二个参数,覆盖默认值
greet('Bob', 'Hi')

!参数的打包:通常使用星号(*)操作符来完成。当你在函数调用时使用星号前缀一个变量名,Python会将这个变量中包含的序列解包为独立的参数。
def print_info(*args):
    for arg in args:
        print(arg)
# 打包一个列表作为参数传递
info = ["Alice", 30, "Engineer"]
print_info(*info)    #输出:Alice   30   Engineer

!参数的解包:通常在函数定义时使用星号(*)操作符来完成。当你在函数定义的参数列表中使用星号前缀一个参数名,这个参数会收集所有未命名的位置参数到一个元组中

函数的返回值:return语句
在函数结束的时候将数据返回给程序,如果没有使用return语句将会默认返回None
def add(a, b):
    result = a + b
    return result  # 返回两个数的和
# 调用函数并打印结果
print(add(3, 4))  # 输出: 7

变量作用域:根据作用域的不同,变量可以划分为局部变量和全局变量。
局部变量:只能在函数的内部使用,函数结束后就没有了
def calculate_sum(a, b):
    total = a + b  # 定义了一个局部变量 total
    print("Inside function:", total)
    return total
result = calculate_sum(5, 3)  # 调用函数
print("Outside function:", result)
# 尝试访问 total 将导致错误,因为 total 是局部变量
# 若print(total)  # 则这将抛出错误

全局变量:在整个程序中都会起作用,
全局变量在函数中只能被访问,如下错误代码
number = 10    #全局变量已经声明
def test_one():
    print(number)     #错误,全局变量不能在函数中使用
    number += 1
test_one()
print(number)

global和nonlocal关键字(保留字)
global:声明这是个全局变量
# 全局变量
global_value = 10
def modify_global():
    global global_value  # 声明 global_value 为全局变量
    global_value += 5
modify_global()  # 修改全局变量
print(global_value)  # 输出: 15
以上代码就可以做到全局变量在函数内,并且在函数外修改全局变量

nonlocal:声明这是个非局部变量(何时用?需要在函数嵌套函数中使用,即内层函数内存在外层函数)
def outer():
    outer_var = 20
    def inner():
        nonlocal outer_var  # 声明 outer_var 为非局部变量
        outer_var += 10
    inner()
    print(outer_var)  # 输出: 30
outer()

递归函数:计算阶乘时
def factorial(n):
    # 递归终止条件
    if n == 0:
        return 1
    # 递归步骤
    else:
        return n * factorial(n-1)
# 调用函数
print(factorial(5))  # 输出: 120
计算兔子数列:斐波那契数列是一个每个数都是前两个数之和的序列,通常定义为F(0) = 0, F(1) = 1,且F(n) = F(n-1) + F(n-2)。
def fibonacci(n):
    # 递归终止条件
    if n in (0, 1):
        return n
    # 递归步骤
    else:
        return fibonacci(n-1) + fibonacci(n-2)
# 调用函数
print(fibonacci(6))  # 输出: 8

文件标识:(文件的位置+文件的名字)
文件类型:文本文件和二进制文件,实际上计算机中的数据在物理层面都以二进制形式存储

文件的打开:open()
格式:open(file, mode='r')
file:文件的路径,如'D:\学习',需要用转义符D:\\学习
mode:文件的打开模式,常见的有'r'只读,'w'覆盖文件写,'a'追加文件。若需要打开二进制文件则时'rb','wb','ab'
'r+'读写打开,'w+'读写打开,但是覆盖整个文件,'a+'读写追加

关闭文件:close()
file.close()
文件打开后一定要记得关闭,不然持续的打开会逐渐占用内存,还会使得操作者不知道当前操作文件

with语句:打开和关闭同时jinxing
with open('a.txt') as f:   #f为变量

文件的读:raed(),readline(),readlines()
read():用于读取文件指定字节的数据
with open('file.txt') as f:
    print(f.read())    #读取全部数据
    print(f.read(2))   #读取两个字节的数据

readline():用于读取一行的数据

readlines():用于读取文件的全部数据

文件的写:write(),wirtelines()
write():将指定字符串写入文件,若数据写入成功,write()方法会返回本次写入文件的数据的字节数。
string = 'hello world'
with open('file.txt',mode='a') as f:
    new_file = f.write(string)
    print(new_file)   #输出:11
writelines():若写入文件的数据在文件中需要换行,需要显式指定换行符。
string = '\nhello world'
with open('file.txt',mode='a') as f:
    new_file = f.writelines(string)
    print(new_file)    #文件内的数据将会换行在输入hello world

文件的定位读写:tell(),seek()
tell():可以获取文件当前的读取位置
with open('file.txt') as f:
    print(f.tell())        #输出:0            # 获取文件读写位置
    print(f.read(5))                # 利用read()方法移动文件读写位置
    print(f.tell())          #输出:5        # 再次获取文件读写位置
seek():可以控制文件读写位置
格式:seek(offset, from)
offset:表示偏移量,即读写位置需要移动的字节数。
from:用于指定文件的读写位置,该参数的取值为0、1、2。
seek()方法调用成功后会返回当前读写位置。需要以二进制打开文件(即mode='rb')
with open('file.txt','rb') as f:
    f.seek(5,0)
    f.seek(3,1)

文件与目录管理:需要使用os模块(即import os)
可实现以下操作
删除文件——os.remove(文件名)
文件重命名——os.rename(原文件名,新文件名)
创建/删除目录——os.mkdir(目录名)/os.rmdir(目录名)
获取当前目录——os.getcwd()
更改默认目录——os.chdir(路径名)
获取目录列表——os.listdir(目录/路径)
 

标签:文件,格式化,函数,python,期末考试,file,print,全局变量,def
From: https://blog.csdn.net/2401_83604604/article/details/139844722

相关文章

  • 运筹学练习Python精解——整数规划
    练习1一汽车厂生产小、中、大三种类型的汽车,已知各类型每辆车对钢材、劳动时间的需求,利润以及每月工厂钢材、劳动时间的现有量如下表所示,试制定月生产计划,使工厂的利润最大。进一步讨论:由于各种条件限制,如果生产某一类型汽车,则至少要生产80辆,那么最优的生产计划应作何改变。......
  • python笔记
    pythonflatten()flatten()方法用于将多维数组转换为一维数组:#创建一个二维数组array_2d=np.array([[1,2,3],[4,5,6]])#使用flatten()方法将其展平为一维数组array_1d=array_2d.flatten()print(array_1d)输出结果是:[1,2,3,4,5,6]是X.flatten()[:......
  • python---计算器界面以及功能
    代码:importtkinterastkfromtkinterimport*root=Tk()root.title("calculate")result_num=tk.StringVar()result_num.set('')#在Tkinter中,StringVar是一个特殊的变量类,它用于与Tkinter的某些部件(如标签Label、条目Entry等)的文本属性进行双向绑定。        ......
  • python---学生通讯录
    代码:importcsvstudents=[]defmenu():    print("学生信息管理")    print("1.显示学生信息")    print("2.添加学生信息")    print("3.删除学生信息")    print("4.保存学生信息")    print("5.退出")defadd():    student={}    ......
  • 2024年华为OD机试真题-分披萨-(C++/Java/python)-OD统一考试(C卷D卷)
    题目描述"吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从"吃货"开始,轮流......
  • 【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)
     ......
  • 金控风控:Python实现基于数据技巧的拒绝推断
    常说的拒绝推断(Inferencemethods),通常是指通过数据分析方法修正模型的参数估计偏差。拒绝推断的主要意义是希望修正建模样本和实际全量样本之间的差异,本质上是为了降低模型参数估计的偏差。拒绝推断场景下有如下三个概念。已知好坏标签(KnowGoodBad,KGB)样本:准入模型允许通过......
  • 初识Python----“三剑客“之matplotlib(个人总结,一些简单的图形使用,适用于初学者)
            Matplotlib是Python中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是Python常用的2D绘图库,同时它也提供了一部分3D绘图接口,Matplotlib通常与NumPy、Pandas一起使用,是数据分析中不可或缺的重要工具之一。        在数据分析中,我们......
  • python爬虫之iframe处理+动作链
    python爬虫之iframe处理+动作链selenium处理iframe1、如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)2、动作链(拖动):fromselenium.webdriverimportActionChains(1)实例化一个动作链对象:action=ActionChains(bro)(2)click_and_hold(div):长按且点击操......
  • 横向LQR、纵向PID控制进行轨迹跟踪以及python实现
    横向LQR、纵向PID控制进行轨迹跟踪以及python实现附赠自动驾驶最全的学习资料和量产经验:链接一、LQR问题模型建立:理论部分比较成熟,这里只介绍demo所使用的建模方程:使用离散代数黎卡提方程求解系统状态矩阵:输入矩阵:A矩阵:B矩阵:二、代码实现#导入相关包imp......