首页 > 试题广场 >

在python3.x执行下列选项的程序,不会抛出异常的是()

[单选题]

在python3.x执行下列选项的程序,不会抛出异常的是()

  • b = 1

    def fn():

    nonlocal b

    b = b + 1

    print(b)

    fn()

  • tup = (('onion','apple'),('tomato','pear'))

    for _,fruit in tup:

    print(fruit)

  • a = [b for b in range(10) if b % 2 == 0]

    print(b)

  • lis = [1,2,'a',[1,2]]

    set(lis)

A nonlocal关键字是用来在函数或者其他作用域中使用非全局变量。(简单的来说就是只能用在嵌套函数中,并且你的外层函数中定义了相关的局部变量,否则就会报错)这题保错b变量找不到 -------------C 这题我是看错了 以为打印的是a,结果打印的是b这个变量 肯定未定义啊 因为循环里面的i是临时变量 -----------D 报错类型错误 不能有list 要是字符的话是可以的
编辑于 2021-12-19 09:39:55 回复(1)
集合里的元素为不可变对象,列表为可变对象
因lis里含有[1,2]列表元素,故set(lis)会报错
发表于 2022-01-14 19:32:22 回复(0)
b选项是什么情况呢?
发表于 2022-02-22 22:00:00 回复(2)
nonlocal关键字是用来在函数或者其他作用域中使用非全局变量。
集合里的元素为不可变对象,列表为可变对象
发表于 2022-03-16 17:38:09 回复(0)
B中for _,fruit in tup:
          print(fruit)
替换为for key,value in tup:
          print(value)
发表于 2022-03-17 10:53:51 回复(1)
D:报TypeError: unhashable type: 'list'错
list 不使用 hash 值进行索引,故其对所存储元素没有可哈希的要求;set / dict 使用 hash 值进行索引,也即其要求欲存储的元素有可哈希的要求。Python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的。

发表于 2022-03-07 18:07:37 回复(0)
c错在哪里,没明白
发表于 2022-03-28 11:57:15 回复(3)
A选项,变量b属于全局变量,所以应该使用global声明而不是nonlocal;B选项,可以使用_作为占位符,所以B选项不会报错;C选项,python3.x中,使用列表生成式,中间变量b在生成列表后被销毁,因此再次使用变量b会报错;D选项,集合分为可变和不可变集合,但集合元素不能是列表这类不可散列对象和可变类型,因此会报错。
发表于 2023-11-01 00:05:08 回复(0)
b选项的输出是什么呀
发表于 2023-07-18 17:44:55 回复(0)
这道题看错了,以为是会抛出异常
发表于 2022-06-09 23:26:36 回复(0)
集合可变,不重复,无序的,因此list错误
发表于 2022-04-22 08:40:06 回复(0)
集合元素不能是列表这类不可散列对象,所以D会报错。
编辑于 2024-04-12 17:10:25 回复(0)
C真是巨坑啊,也怪自己眼瞎
发表于 2023-04-06 12:49:56 回复(0)
我一看缩进直接选了c
发表于 2022-09-10 20:51:28 回复(0)
c选项中,第一行的b是局部变量,所以后面单独输出b的时候报错,因为b并没有被定义。
发表于 2022-09-05 15:22:56 回复(0)
C选项中,b是一个临时变量,用完即焚。
发表于 2022-08-01 21:18:22 回复(0)
-全局变量的使用,想要使用函数外的变量,可以使用global关键字去进行声明
-集合里面不能为列表
发表于 2022-05-21 10:52:13 回复(0)
c是正确的啊
发表于 2022-02-23 19:42:33 回复(2)