Python函数之变量的作用域

部署运行你感兴趣的模型镜像

任务描述
本关任务:使用作用域中相关的关键字修改右侧 begin-end 中的代码,使函数 average 实现计算平均分的功能。

相关知识
为了完成本关任务,你需要掌握:

全局变量;
局部变量。
作用域
可能有细心的同学会发现,在函数中定义的变量,在函数外并不能直接使用,这就涉及到了变量的作用域。通常情况下,我们定义的变量是可以在代码中的任意地方使用的,但是,学习了函数的知识之后,我们知道变量分为全局变量和局部变量了。

全局变量:在整个代码文件任意地方都可以使用的变量,作用域为全局范围。
局部变量:在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,代码运行时可能会报错。

var1 = 1     # 定义了一个全局变量
def func():
    var2 = 2     # 定义了一个局部变量
    print(var1)
    print(var2)
# 调用函数
func()
print(var1)
# print(var2)     # 当我们想打印var2时,代码会报错,提示var2未定义。

执行结果:

1
2
1

如果我们定义了一个全局变量 var1,在函数中也定义了一个局部变量 var1,如果在函数中 var1 的值发生了变化,并不会影响全局变量 var1 的值。

var1 = 1     # 定义了一个全局变量
def func():
    var1 = 2     # 定义了一个局部变量
    print(var1)
# 调用函数
func()
print(var1)

执行结果:

2
1

在 Python 中还有两个改变作用域的关键字:

global:将局部变量声明为全局变量。

var1 = 1     # 定义了一个全局变量
def func():
  global var1     # 将变量var1声明为全局变量
  var1 = 2
  print(var1)
# 调用函数
func()
print(var1)

执行结果:

2
2

nonlocal:将局部变量声明为非局部变量,该关键字能将局部变量的作用域增加一个级别,并不是声明为全局变量,且该关键字只能对局部变量使用。

var1 = 1     # 定义了一个全局变量var1
def func1():
  var2 = 1     # 定义了一个局部变量var2
  def func2():
      nonlocal var2     # 将var2声明为非全局变量
      var2 = 2     # 将局部变量var2的值改为2
  func2()     # 调用函数func2
  print(var2)
# 调用函数
func1()
print(var1)
# print(var2)     # 当我们想打印var2时,代码会报错,提示var2未定义。

执行结果:

2
1

编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。输出格式请参考测试集中的预期输出。

测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧 “测试结果”区查看具体的测试集详情。

"""
任务:使用作用域中相关的关键字修改下列 begin-end 中的代码,使函数 average 实现计算平均分的功能。
"""

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 请使用作用域相关的关键字修改下列代码,实现计算平均分的功能
def average(*args):
	score = 0
	def sum(args):
    	for x in args:
        	score += x
    sum(args)
    return score/len(args)
##########End##########
result = average(56,76,84,98,78,79,89,67,86,78,67,67,95,24,96,96,86,65,83,86,80)
print(result)

答案

# 请使用作用域相关的关键字修改下列代码,实现计算平均分的功能
def average(*args):
    score = 0
    def sum(args):
        nonlocal score
        for x in args:
            score += x
    sum(args)
    return score / len(args)


result = average(56, 76, 84, 98, 78, 79, 89, 67, 86, 78, 67, 67, 95, 24, 96, 96, 86, 65, 83, 86, 80)
print(result)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值