首页 > 试题广场 >

What gets printed?()

[单选题]
What gets printed?()
counter = 1 
def doLotsOfStuff(): 
    global counter
    for i in (1, 2, 3): 
        counter += 1 
doLotsOfStuff()
print counter
  • 1
  • 3
  • 4
  • 7
  • none of the above
C 3+1 考察全局global
发表于 2018-01-18 19:25:49 回复(0)

题目排版粗糙有误,按惯例先整理一下:

counter = 1 
def doLotsOfStuff(): 
    global counter
    for i in (1, 2, 3): 
        counter += 1 
doLotsOfStuff()
print counter

此题不难,主要是考察 global 的意义,即在局部作用域 doLotsOfStuff() 函数中,声明对全局作用域中的 counter 变量的引用,详情可参考:

Python3 函数

最后要注意第 5 行的坑,是 counter += 1 而不是 counter += i ,因此答案是 4 而不是 7,选答案 C。

发表于 2018-01-13 13:34:29 回复(6)
当内部作用域想修改外部变量时,需要使用global声明。
发表于 2018-10-14 19:22:19 回复(0)
代码没缩进,这么多人提出了也不改
发表于 2018-04-11 03:51:30 回复(2)
发表于 2021-08-31 16:59:00 回复(0)
函数内部想要修改全局变量,需要使用global
编辑于 2019-08-23 11:57:13 回复(0)
counter = 1


def doLotsOfStuff():
    global counter
    for i in (1, 2, 3):
        counter += 1


doLotsOfStuff()
print(counter)
PyCharm为第一生产力
发表于 2018-04-04 19:13:39 回复(1)

排版太糙

发表于 2018-03-27 15:12:09 回复(1)
为什么这个for循环是循环了三次,没看出来哇。从1开始,到2结束,步长为3,不能循环吧???
发表于 2020-11-25 09:47:36 回复(1)
i和1不要混了。
发表于 2019-01-28 01:15:16 回复(0)
在变量前加global代表修改的是全局变量, 原counter=1,三次循环+1故=4, 函数执行完,全局变量被修改=4
发表于 2018-01-18 10:05:33 回复(0)
错误,没有缩进
发表于 2018-01-06 14:39:16 回复(0)
第五行不是+=i 与i无关,只是counter累计加了三次也就是1+1+1+1=4
发表于 2020-08-16 17:07:58 回复(0)
注意本题的坑:
counter += 1,每次给counter +1,而不是 + i
发表于 2019-12-21 17:23:01 回复(0)
遍历(1,2,3)与counter的累加并没有关系,只是增加次数而已,也就是counter累加三次罢了
编辑于 2019-05-08 20:54:40 回复(0)
这个代码的排版是搞笑的吗?牵涉到排版的问题能不能修改一下?
发表于 2019-02-28 12:36:56 回复(0)
C
发表于 2018-03-27 09:16:53 回复(0)
不知道你们选的什么,反正我选的是D,因为我看错了。把 1 看成了 i
发表于 2018-02-03 17:45:26 回复(0)
局部变量只在函数体内部有效,出了函数体,外面是访问不到的,而全局变量则对下面的代码都有效。
全局变量可以直接在函数体内容部使用的,你可以直接访问,但是注意的是,如果对于不可变类型的数据,如果在函数里面进行了赋值操作,则对外面的全局变量不产生影响,因为相当于新建了一个局部变量,只是名字和全局一样,而对于可变类型,如果使用赋值语句,同样对外部不产生影响,但是使用方法的话就会对外部产生影响。
如果使用的是赋值语句,在函数内部相当于新建了一个变量,并且重新给了指向,但是有时候我们想把这个变量就是外部的那个全局变量,在赋值操作的时候,就是对全局变量给了重新的指向,这个时候可以通过global关键字表示我在函数里面的这个变量是使用的全局那个
发表于 2020-02-26 17:42:17 回复(0)
是不是应该print(counter) 呀?
编辑于 2024-03-06 16:18:59 回复(0)