Python期末考试答案

一、选择题

//和/的区别

" / " 表示浮点数除法,返回浮点结果;
" // " 表示整数除法,返回不大于结果的一个最大的整数

例题1:

print(1.0//2, 1/2)
#打印0.0 0.5
print("6 // 4 = " + str(6 // 4))
print("6 / 4 =" + str(6 / 4))
# 6 // 4 = 1
# 6 / 4  = 1.5

例题2:

x, y = 5.0, 2
print("%s  %s" % ( x/y, x//y))

#考察的还是//和/ 的区别,无非是换了一种打印方式。

列表的操作

  1. 使用[ ]代表一个列表,列表乘以某一个数,如list2 = list1 * 2 得到一个新的列表是list1的元素重复n次,且list1不改变。

    例题:

print([1, 2]*3)
#[1,2]为一个列表,再乘以3  就是链表元素重复三次
  1. list[10:]代表选择从list列表的第十个元素开始到最后

    例题:

    list = ['a', 'b', 'c', 'd', 'e']
    print(list[2:])
    # 注意角标从0开始 ['c','d','e']
    list = ['a', 'b', 'c', 'd', 'e']
    print(list[10:])
    # 因为list列表中只有5个元素,所以从10开始打印为[]
    
  2. list[:2]代表从角标为0的元素,一直选择到角标为2的元素(不包含角标为2的元素)

    例题:

    lst = [1, 2, 3, 4, 5, 0, 2, 1]
    print(lst[:-1])
    #代表从list列表的第一个元素到最后一个元素(不包含最后一个元素)
    #打印结果为[1, 2, 3, 4, 5, 0, 2]
    
    
    #补充: -1为倒数第一个元素,-2为倒数第二个元素.....
    
  3. len函数代表打印列表的长度

    例题:

lst = [1, 21]
print(len(lst))
#因为lst长度为2,所以打印2
  1. min函数代表选择列表中元素最小值,max函数为选择最大值

    例题:

lst = [1, 2, 3, 4, 5, 0, 2, 1]
print(min(lst))
#lst列表中最小值为0,所以打印0

lst = [1, 2, 3, 4, 5, 0, 2, 1]
print(max(lst))
#打印最大值 5

print(min('abc'))
#打印ASCII码最小的,也就是a

字典

python中字典是一种存储数据的容器,存储方式为key和value的形式

格式为:{ 'name':'小胖','age':30 }

  1. get函数获取指定值

    a = {
          
           'name':'小胖','age':30 }
    print(a.get('name'))
    # 打印结果为小胖,a.get('name')的意思是获取a字典中name所对应的值
    
    print({
          
          1:2, 3:4}.get(2))
    # 打印结果为None,因为字典中没有key为2的项
    
    
    # 补充:冒号前面的为key后面的为value,get方法只会查找key
    
  2. len函数求长度

    len({
          
          1:2, 3:4})
    # 因为只有两组数据,所以长度为2
    
  3. min和max函数

    print(min({
          
          1:2, 3:4}))
    # 会求得字典中key为最小的那个值,注意只会比较key  也就是每个冒号前的元素
    

字符串

  1. 字符串相加会直接拼接

    print('12'+'13')
    # 打印1213
    
  2. 字符串比较大小比较的是ASCII码

    print('a' < 'b')
    #打印为true
    
  3. find函数为寻找子串在父串中的位置,如果父串中没有则返回-1

    例题:

    'abc'.find('d')
    #这里'abc'指的是父串,'d'为子串,因为abc中没有d  所以返回为-1
    
  4. index和find函数作用一样,也是寻找子串在父串中的位置,只不过index在找不到的情况下会报错

    print('abc'.index('ddd'))
    #因为'abc'中没有'ddd'所以报错,如果把index函数替换为find 则会打印-1
    
  5. list函数会将字符串转换为列表

    print(list('abc'))
    # 会将abc转换为列表,即['a', 'b', 'c']
    
  6. startswith函数检查字符串是否以指定的字符串开头,如果是返回True

    print('abcabc'.startswith('abc'))
    # 因为字符串'abcabc'是以'abc'开头的,所以返回True
    
  7. in关键字,如果在父串中找到则返回true

    print('12' in '74125')
    # 因为12可以在74125中找到,所以返回True
    
  8. 字符串的len和列表中的len函数一样,都是求长度

    print(len('abc'))
    #'abc'的长度为3,所以打印3
    

运算

  1. 在纯or语句中,只要有一个表达式不是假的话,那么就返回这个表达式的值。只有所有都是假,才返回假

    a = 'a'		
    print(a > 'b' or 'c')
    # 结合上面的结论,因为 a > 'b' 为假,所以直接返回c
    
  2. 例题

    a = '123'		
    b = '123'
    print(a is b)
    # 打印结果为true,is比较的是值和内存地址是否相同。
    # 在执行a = '123'的时候,会将字符串123加入到串池中去,当再次执行b = '123'的时候,会将串池中已经存在的字符串123返回。所以a和b的内存地址也相同
    

类的继承

例题:

以下代码的执行结果

class Parent(object):
    x = 1
class Child1(Parent):
    pass
class Child2(Parent):
    pass
Child1.x = 3
print(Parent.x, Child1.x, Child2.x)
# 1,3,1

解题思路:

class Parent(object)代表Parent类继承了Object基类,同理Child1和Child2继承了Parent类

继承了Parent之后就有了Parent类里的 x = 1

Child1.x = 3将Child1里面的x改为了3,所以打印结果为1,3,1

程序阅读题

例题1:

求下列语句执行后,a的值

a = 2		
for i in range(5):
    if i == 3:
        continue
    else:
a += 1 

考察知识点:

​ for循环和if判断语句

解题思路:

​ 首先明确range函数的作用,是生成一个迭代对象,也可以把它当成列表(当然他不是列表)。例如range(5)就默认从0开始,生成一个长度为5的整数列表。所以range(5)就为[ 0, 1, 2, 3, 4]

​ 其次要弄明白for循环的含义,for i in range(5)这句话的意思是遍历range(5)生成的列表的每一个元素,将每一个元素的值赋给i 。也就是一共循环5次,第一次i为0,第二次i为1…最后一次i为4

​ continue关键字的作用是跳过本次循环

这道题简单的来讲就是循环5次,在 i = 3的时候不对a进行加一,其余的四次都对a加一,2 + 4 = 6

例题2:

a = 1
b = 2 * a / 4  #计算出b=0.5
a = "none"
print(a, b)   
#打印结果为 none, 0.5

例题3:

a = 1			
for i in range(5):
if i == 2:
	break
a += 1
# 输出为3

解题思路:

​ 参考例题1的解题思路,唯一不同的是break关键字代表终止循环,而continue代表跳过本次循环

简单的来讲总共循环了两次(i = 0的时候和i = 1的时候),1 + 2 = 3

例题4:

def func(x, y=6):	
	print(x, y)
    
func(1, 3)

# 此代码无非是定义了一个函数,紧接着有对次函数进行了调用,调用时传递了形参
# 打印结果为1,3

二、判断题

  1. 列表元素可修改,但元素不可重复。 错

    解释:列表元素可以重复

  2. 表达式是用来计算的,语句是用来执行的。 对

  3. 标识符的第一个字符不能是数字。 对

  4. 列表是有序的对象集合。 对

  5. python可以同时为多个变量赋值。 对

  6. 在python中,一个变量可以通过赋值指定不同类型的对象。 对

  7. 某种数据集合是由大括号形式,那么它一定是字典。 错

  8. 元组与列表的区别是元组的元素不可以修改。 对

  9. 封装指的是向外部隐藏不必要的细节。 对

  10. 每个对象都属于特点的类,并被称为该类的实例。 对

三、简答题

在python中,递归函数的特性是什么?

​ (1)必须有一个明确的结束条件

​ (2)每次进入更深一层递归时,问题规模相比上次递归都应有所减少

​ (3)递归效率不高,递归层次过多会导致溢出

阐释python是什么样的一门编程语言及应用场景?

​ Python是一门动态解释性强数据类型的编程语言

​ 应用场景:大数据、云计算、人工智能、爬虫

阐述类的三大特性是什么,你是如何理解的?

类的三大特性是封装、继承和多态。

(1)封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

(2)继承:类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为。继承描述了类之间的关系。子类可以对基类的行为进行扩展、覆盖、重定义。

(3)多态:一个接口,多种实现,例如:人都会说话,但说的不同语言。

二分查找基本思路是什么?

假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;
若 x 大于当前位置值则在数列的后半段中继续查找;直到找到为止

面向过程与面向对象编程的区别是什么?

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

列表、元组的形式及元素特点?

(1)列表在方括号内,元素以逗号分隔

列表元素的特点:可重复,可修改,可嵌套,支持多种数据类型

(2)元组在小括号中,使用逗号隔开元素

元组元素的特点:可重复,不可修改,可嵌套,支持多种数据类型

变量命名规则内容是什么?

(1)标识符只能由字母、数字或下划线组成。

(2)标识符的第一个字符不能是数字。

(3)标识符区分大小写。

(4)关键字不能声明为标识符

四、编程题

用函数编程,编程实现求列表元素偶数之和,并调用运行,输出运行结果。

def func(l):
    sum = 0
    for i in range(len(l)):
        if l[i] % 2 == 0:
            sum += l[i]
    print(sum)

list1 = [1, 2, 3, 4, 5]
func(list1)

用函数编程,实现删除列表里面的重复元素函数,并调用运行,输出运行结果。

def func(l):
    res = list(set(l))
    print(res)

list1 = [1,2,3,4,5,5,4]
func(list1)

用函数编程,实现求斐波那契数列前10项程序,并调用运行,输出运行结果。

def fun(i):
    if i == 1 or i == 2:
       return 1
    else:
        return fun(i-2)+fun(i-1)
for i in range(1,11):
    print(fun(i),end=' ')

猜你喜欢

转载自blog.csdn.net/m_awdawdw/article/details/108466435