任务描述
本关任务:使用作用域中相关的关键字修改右侧 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)

被折叠的 条评论
为什么被折叠?



