浙江大学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) 第二行第四列不能放皇后,问有多少种摆法?
