python基础练习题(1)

本文介绍了Python中的标识符规则,强调了不能以数字开头的特点。接着,通过示例解析了Python3中的列表过滤与映射操作,展示了如何筛选并转换列表元素。此外,探讨了Python参数传递机制,特别是对于可变对象列表的影响。最后,讨论了在Python2中向列表添加元素的不同方法,指出`add()`方法并不适用。
摘要由CSDN通过智能技术生成
1.下面哪个不是合法的Python标识符?

A.int23   B.45UTY  C.self   D.name
2.在Python3中,下列程序运行结果为:

strs = ['a', 'ab', 'abc', 'python']
y = filter(lambda s: len(s) > 2, strs)
tmp = list(map(lambda s: s.upper(), y))
print(tmp)

A.['ABC', 'PYTHON']
B.['abc', 'PYTHON']
C.['abc', 'python']
D.['a', 'ab']
3.Python函数如下,则输出结果为

def chanageList(nums):     
    nums.append('c')     
    print("nums", nums)   
str1 = ['a', 'b'] 
# 调用函数 
chanageList(str1) 
print("str1", str1)

A.nums ['a', 'b', 'c'],str1 ['a', 'b', 'c']
B.nums ['a', 'b', 'c'],str1 ['a', 'b']
C.nums ['a', 'b'],str1 ['a', 'b']
D.nums ['a', 'b'],str1 ['a', 'b','c']
4.Python2 中,以下不能在list中添加新元素的方法是()

A.append()
B.add()
C.extend()
D.insert()
5.根据以下程序,下列选项中,说法正确的是()

class Foo():

    def __init__(self):

        pass
    def __getitem__(self,pos):
        return range(0,30,10)[pos]

foo = Foo()


A.foo对象表现得像个序列
B.可以使用len(foo)来查看对象foo的元素个数
C.可以使用for i in foo:print(i)来遍历foo的元素
D.不能使用foo[0]来访问对象foo的第一个元素

1.答案:B

     解析:Python 中的标识符不能以数字开头

     注意:self不是python中的关键字。类中参数self也可以用其他名称命名,但是为了规范和便于读者理解,推荐使用self。

    标识符:

  •  第一个字符必须是字母表中字母或下划线 _ 。
  •  标识符的其他的部分由字母、数字和下划线组成。
  •  标识符对大小写敏感。
  • 不可以是python中的关键字,如False、True、None、class等。

2.答案:A

     解析: filter(lambda s: len(s) > 2, strs)即将指定列表strs中长度大于2的字符串过滤出来,即y=["abc","python"]

list(map(lambda s: s.upper(), y))即把y中所有字符串都改为大写,即tmp=['ABC', 'PYTHON']

3.答案:A

      解析:Python参数传递采用的是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能 直接修改原始对象——相当于通过“传值”来传递对象。此题为列表,可变对象,即相互影响。

def chanageList(nums):   # 创建一个带参,且初始参数为nums的函数chanageList
    nums.append('c')     # 为传入参数末尾添加字符串c
    print("nums", nums)  # 输出参数名称nums,同时输出参数nums的最终值
str1 = ['a', 'b']        # 创建列表str1,并将字符串a和字符串b添加进列表str1
chanageList(str1)        # 调用函数chanageList
print("str1", str1)      # 输出列表str1的名称,同时输列表str1的最终值

4.答案:B

         解析:

                 append() 方法向列表的尾部添加一个新的元素。只接受一个参数。

                 extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表                       中。

                  insert() 将一个元素插入到列表中,但其参数有两个(如insert(1,”g”)),第一个参数是                    索引点,即插入的位置,第二个参数是插入的元素。

                  add()为字典中的添加。

5.答案:C

        解析:

                若要表现像个序列,必须满足序列的两个方法:__len__和__getitem__,由于Foo类中                  没有实现__len__,因此不满足序列协议,foo对象不像序列,A错误;

                foo对象没有定义__len__方法,不能使用它来查看对象个数,B错误;

                对对象的迭代需要调用__iter__,如果没有定义该方法,python会调用                                            __getitem__(),让迭代和in运算符可用,因此foo是可迭代的,C正确;

               根据索引访问对象元素,会调用__getitem__(),因此D错误。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值