浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第十章
一、判断题
1.下面程序的输出结果是1500。 错误
class MulByTwo(object): def __init__(self, number):self.number = numberself.counter = 0def __next__(self): self.counter += 1 return self.counter * self.numberit = MulByTwo(500)
it.__next__()
it.__next__()
it.__next__()
print(it.__next__())
2.下面程序的输出是 6。 错误
i = 6
def f():def g(): print(i) g() i = 10
f()
这个判断题的答案是 错误。
原因分析:
在这个程序中,f()
函数内部定义了一个嵌套函数 g()
,并在 g()
中打印变量 i
。然而,在 f()
函数内部,i
被赋值为 10
,这会导致 Python 将 i
视为一个局部变量。
具体分析如下:
- 当
f()
被调用时,局部作用域中定义了i
。 - 在
g()
中,print(i)
试图访问i
,但此时i
在f()
的局部作用域中被认为是一个局部变量。 - 由于
g()
被调用时,i
还未被赋值,因此会引发UnboundLocalError
,表示在局部作用域中引用了一个未赋值的局部变量。
因此,程序不会输出6
,而是会抛出一个错误。正确的输出结果是程序运行时会发生错误,而不是输出6
。
3.await可以在非异步函数中使用。错误
4.async模块是Python异步编程模块。 错误
5.asyncio是Python关键字。 错误
6.下面程序的输出是3125。 错误
def outer(n):def inner(x):t = x**nreturn treturn inner(n)print(outer(5).inner)
二、编程题
在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔于1848年提出著名的8皇后问题,即在8X8的棋盘上摆放8个皇后,使其不能互相攻击----即任意两个皇后都不能处于同一行、同一列或同一条斜线上。
要求:
(1) 第1 行的皇后放在第1列,问有多少种摆法?
(2) 第二行第四列不能放皇后,问有多少种摆法?