ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python学习day7-函数02+作业

2021-12-07 23:33:03  阅读:253  来源: 互联网

标签:02 outer 函数 python day7 嵌套 inner print def


python学习day7-函数02+函数应用作业

一、嵌套函数

嵌套函数:在函数内部定义的函数,一般用于封装-隐藏数据(外部无法访问“嵌套函数”),嵌套函数可以让我们子函数内部避免重复的代码。
操作:
1、嵌套函数的定义

#测试嵌套函数的定义
def outer():
    print("outer running")

    def inner():#inner函数体包含在outer函数体中,属于嵌套函数
        print("inner running")

    inner()

outer()

运行结果:在这里插入图片描述
2、使用嵌套函数避免重复代码

#测试使用嵌套函数避免重复代码
def printChinsename(name,familyname):
    print("{0}{1}".format(familyname,name))

def pritEngelishname(name,familyname):
    print("{0}{1}".format(name,familyname,))

printChinsename("小五","赵")
pritEngelishname("six","seven")
#使用嵌套函数代替上面的两个函数

def printName(isChinese,name,familyname):
    
    def inner_print(a,b):
        print("{0}{1}".format(a,b))
    if isChinese:#加入一个判断条件isChinese
        inner_print(familyname,name)
    else:
        inner_print(name,familyname)

printName(True,"小五","赵")
printName(False,"six","seven")

运行结果:
在这里插入图片描述

二、nonlocal关键字

nonlocal 用来声明外层的局部变量,在被嵌套的函数内对外层变量进行修改需要用nonlocal 进行声明。
global 用来声明全局变量。在函数内改变全局变量的值,使用global 关键字进行声明。

操作:测试使用nonlocal和global 声明参数更改

#测试nonlocal、global关键字
a=100#全局变量

def outer():
    b=200#外层局部变量
    def inner():
        nonlocal b#声明外部局部变量b
        print("inner b:",b)
        b=20
        global a#声明全局变量a
        a=300
    inner()
    print("outer b:",b)#对外部函数局部变量做出了修改
outer()
print("a:",a)

运行结果:在这里插入图片描述

三、LEBG规则

python 在查找“名称”时,是按照LEBG规则进行查找的

Local—Enclosed—Global—Built in
Loca 指的是函数或者是类的方法内部
Enclosed 指的是嵌套函数(一个函数包含另一个函数,闭包)
Global 指的是模块中的全局变量
Built in 指的是python为自己保留的特殊名称。

操作:测试查找“名称”的LEBG规则
依次将几个“str"注释掉,观察打印输出的内容,可以体会LEBG的搜索顺序。

#测试LEBG,一次注释掉str,观察打印台的位置,可以体会到LEBG的搜索顺序
str="global"#第三次输出位置
def outer():
    str="outer"#第二次输出的位置

    def inner():
        str="inner"#第一次输出位置
        print(str)
    inner()
outer()

最后一次运行结果是python为自己保留的特殊名称,如下:
在这里插入图片描述
四、实操作业

1、定义一个函数实现反向输出一个整数,比如:输入2345,输出5432.
分析:定义函数后,用str()内置函数将输入整数改为字符串格式,再利用切片的概念对输入的整数进行倒叙输出。

def f1(n):
    a=str(n)
    b=a[::-1]#字符串切片
    print(a)
    print(b)
f1(2345)

运行结果:
在这里插入图片描述
2、编写一个函数,计算下面的数列:m(n)=1/2+2/3+3/4+…n/n+1.
分析:可使用递归函数达到计算此项数列。

n=int(input("请输入一个整数:"))
def f1(n):
    s=n/(n+1)
    if n==0:
        return 0
    else:
        return s+f1(n-1)#调用自己的函数成为递归函数
        n=n-1
print(f1(n))

运算结果:
在这里插入图片描述
在这里插入图片描述
3、输入三角形三个顶点的坐标,若有效则计算三角形的面积;若无效则给出提示。

import math

def isvalid(a=0.0, b=0.0, c=0.0):
    """判断三条边长是否符合三角形的定义:任意两边之和大于第三边或者任意两边之差小于第三边"""
    side = [a, b, c]
    side.sort()
    if side[0] + side[1] > side[2] or side[2] - side[1] < side[0]:
        return True
    else:
        return False


def calculate_area():
    """获取三角形的三个顶点坐标并计算该三角形的面积"""
    x1, y1 = map(int, input('请输入第一个顶点坐标:').split())
    x2, y2 = map(int, input('请输入第一个顶点坐标:').split())
    x3, y3 = map(int, input('请输入第一个顶点坐标:').split())

    # 计算三条边长
    side1 = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
    side2 = math.sqrt((x1 - x3) ** 2 + (y1 - y3) ** 2)
    side3 = math.sqrt((x2 - x3) ** 2 + (y2 - y3) ** 2)

    # 调用 isvalid() 函数,判断是否能够构成三角形
    if isvalid(side1, side2, side3):
        # 计算半周长
        s = (side1 + side2 + side3) / 2
        # 计算面积
        area = (s * (s - side1) * (s - side2) * (s - side3)) ** 0.5
        print('三角形的面积为:{:.2f}'.format(area))
    else:
        print('坐标无效,无法构成三角形')


if __name__ == '__main__':
    calculate_area()

运行结果:在这里插入图片描述
在这里插入图片描述
4、输入一个毫秒数,将该数换成小时数、分钟数,秒数。

ms=int(input("请输入一个毫秒数:"))
def Time():
    s=ms/1000
    m=s/60
    h=m/60
    print("{0}秒,{1}分钟,{2}小时".format(s,m,h))
Time()

运行结果:
在这里插入图片描述
python基础学习函数内容总结完成,学习python的第七天,加油!

标签:02,outer,函数,python,day7,嵌套,inner,print,def
来源: https://blog.csdn.net/zsusu_0821/article/details/121773891

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有