我的试题回顾(9-15)

我的试题回顾(9-15)

1. 单项选择题

函数abs()用于返回参数的绝对值(正数的绝对值是它本身,负数的绝对值则是它的相反数)。
要求运行代码后打印出-5的绝对值,请问# 代码1应该替换成哪个选项?(A)

def pro(a):
    print(abs(a))
# 代码1

A:pro(-5)         B:print(pro(-5))
C: a = pro(-5)    D:print(-5)
   print(a)

答案解析
考察重点:调用函数。

A正确, pro()函数中带有 print()语句,调用即可打印。
B错误, pro()函数没有返回值,所以会打印出None。
C错误,虽然有赋值操作,但是也会打印出None。
D错误,这是打印函数。

2. 单项选择题

请你仔细阅读代码,思考打印结果是什么?(B)

def my_len(words):
    counter = 0
    for i in words:
        counter = counter + 1
        return counter

a = '风变编程,助教七七'
print(my_len(a))

A:9   B:1   C:风变编程,助教七七   D:风变编程

答案解析
考察重点: return语句,循环过程与循环次数。

# 在函数中,return语句时标志函数的结束,return语句之后的代码都不会被执行,因此for循环只遍历了一次,因此counter = 1

# 作出下列改动后,将会打印出9
def my_len(words):
    counter = 0
    for i in words:
        counter = counter + 1
    return counter    # return语句放在for循环之后

a = '风变编程,助教七七'
print(my_len(a)) 

3. 单项选择题

下列代码输出的结果是:(A)

def a(x):
    list1 = []
    for i in x:
        list1.append(i)
    print(list1)
a('新年快乐')


A:['新', '年', '快', '乐']
B:['新年快乐']
C:('新', '年', '快', '乐')
D:'新年快乐'

答案解析
考察重点:参数传递, append()函数。

a()函数的作用是遍历字符串,将每个字符串的元素都抽取出来,形成新的列表。

将'新年快乐'作为参数传入 a()函数中,由for循环遍历字符串'新年快乐'(for遍历字符串后,取出的仍然是字符串),再使用 append()函数将遍历的元素导入列表 list1,最后打印出 list1

4. 判断题

定义类的方法的时候,必须在方法中至少定义一个参数且这个参数必须命名为 self。

正确答案:【 错误 】

答案解析
在类中定义方法的时候,必须在方法中至少定义一个参数;
一般情况下我们将其命名为 self,但是也可以命名为其他名称。

5.判断题

当运用 init()方法时,第一个参数必然为 self。

正确答案:【 错误 】

答案解析
init()方法定义中,第一个参数是必不可少的;
但是, self并不是Python的关键字,它只是作为实例的替身,可以用其他单词取代。但是按照惯例和标准的规定,推荐使用 self

6. 单项选择题

运行下列代码,在终端中的打印结果是:(D )

class A:
    def __init__(self, choice='出去玩耍', name='卡普'):
        self.name = name

class B(A):
    def __init__(self, choice='回家过年'):
        A.__init__(self, choice, name='蓬蓬')
        self.choice = choice
        print(self.name+self.choice)

b = B()

A:卡普出去玩耍     B:卡普回家过年
C:蓬蓬出去玩耍     D:蓬蓬回家过年

答案解析
考察重点:类的继承。

B类是 A类的子类,继承父类的属性和方法,默认 self.name = '卡普',没有定义 self.choice
B类对属性进行了自定义, choice = '回家过年',调用 A的初始化方法时,为 name重新赋值,name = '蓬蓬'
因此打印结果为'蓬蓬回家过年'。

7. 单项选择题

运行下列代码,在终端中的打印结果是:(D )

class A:
    def __init__(self, choice='出去玩耍', name='卡普'):
        self.name = name
        self.choice = choice

class B(A):
    def __init__(self):
        A.__init__(self, choice='过年回家', name='蓬蓬')
        print(self.name + self.choice)

b = B()

A:运行报错         B:运行正常,却无结果显示
C:卡普出去玩耍     D:蓬蓬过年回家

答案解析
考察重点:类的继承。

B类是 A类的子类,所以会继承父类的方法和属性, self.name = '卡普'self.choice = '出去玩耍'

B类的初始化方法中,调用了 A类的初始化方法,同时重写了 A类的初始化方法的默认参数, choice = '过年回家', name = '蓬蓬'
因此 B类属性也随着修改为: self.choice = '过年回家', self.name = '蓬蓬',打印结果为'蓬蓬过年回家'。

8.多项选择题

关于下列代码,说法正确的是:(C 、 D )

class A:
    def __init__(self, choice='出去玩耍', name='卡普'):
        self.name = name
        self.choice = choice

class B(A):
    def __init__(self, choice='过年回家', name='蓬蓬'):
        A.__init__(self)    
        print(self.name + self.choice)

b = B()

A:运行题中代码,会报错
B:将 A.init(self)替换为 A.init(self, choice, name),打印结果为“卡普出去玩耍”
C:将 A.init(self)替换为 A.init(self, choice='出去玩耍', name='卡普'),打印结果为“卡普出去玩耍”
D:将 A.init(self)替换为 A.init(self, choice, name='卡普'),打印结果为“卡普过年回家”

答案解析
考察重点:类的继承和类方法的调用。
在本题中,A.init(self)是调用A类中的初始化方法,注意:括号内必须要有self。因为A是一个类,初始化方法是类的实例方法,实例方法必须要有实例,没有实例时需要用self替代。

B类是 A类的子类,所以会继承父类的方法和属性, self.name = '卡普'self.choice = '出去玩耍'


A错误, B的初始化方法中,虽然重新设置了默认参数,但是完全调用了 A类的初始化方法(类似于变量赋值,最后的赋值才是变量的值),因此打印“卡普出去玩耍“;
B错误, B类的初始化方法中,设置了默认参数 choice = '过年回家', name = '蓬蓬',同时在调用 A类的初始化方法时,并没有设置 choicename的值,因此打印“蓬蓬过年回家”;
C正确,虽然在 B类的初始化方法中,设置了默认参数 choice = '过年回家', name = '蓬蓬',但是在调用 A类的初始化方法时,设置了 choicename的值,因此打印“卡普出去玩耍”;
D正确,逻辑和C相同。