python练习(题目源自牛客)

1.作用域+输出语句

执行下面代码,请问输出结果为:顺顺 顺顺

name = “顺顺”#全局变量

def f1():

    print(name)

def f2():

    name = “丰丰”#局部变量

f1()

f1()

f2()

2.filter()+map()+upper()

在Python3中,下列程序运行结果为:['ABC', 'PYTHON']

strs = ['a', 'ab', 'abc', 'python']
y = filter(lambda s: len(s) > 2, strs)#过滤不符合,返回符合
tmp = list(map(lambda s: s.upper(), y))#使用 list() 转换为列表
print(tmp)

filter(function,iterable)

map(function, iterable, ...)

function -- 判断函数    iterable -- 可迭代对象

upper() 为字符大写转换函数


3.endswith()

下列代码输出为:True

str = "Hello,Python"
suffix = "Python"
print (str.endswith(suffix,2))#判断从2开始的str是否以suffix结尾,结果为True

str.endswith(suffix[, start[, end]])

suffix -- 该参数可以是一个字符串或者是一个元素。

start -- 字符串中的开始位置。

end -- 字符中结束位置。


4.strip()+split()

在Python3中,下列程序结果为:['', 'I', 'like', 'python', ''],'I like python'

strs = ' I like python '
one = strs.split(' ')
two = strs.strip()#删除首尾空格
print(one)
print(two)

str.split(str="", num=string.count(str))

split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

num -- 分割次数。默认为 -1, 即分隔所有。

str.strip([chars])

chars -- 移除字符串头尾指定的字符序列。


5.dict() 

在Python3中,关于程序运行结果说法正确的是:报错

dicts = {}
dicts[([1, 2])] = 'abc'
print(dicts)

字典的键要求可哈希,而列表list不可哈希,会报错

可哈希对象:数字类型(int,float,bool)、字符串str、元组tuple、自定义类的对象

不可哈希对象:字典dict,列表list,集合set,要使用tuple( iterable )来转换成元组

dicts = {}
dicts[tuple([1, 2])] = 'abc'
print(dicts)

6.range()

Which numbers are printed?(0, 1, 4, 5)

for i in range(2):
    print i
for i in range(4,6):
    print i

range(start, end[, step])

start: 计数从 start 开始。默认从 0 开始。

stop: 计数到 stop 结束,但不包括 stop。

step:步长,默认为1。


7.dict() 

在python3中,下列程序结果为:1,报错

dicts = {'one': 1, 'two': 2, 'three': 3}
print(dicts['one'])
print(dicts['four'])#字典里没有的键访问数据,会报错

8.运算

下列哪个语句在Python中是非法的?C

A.x = y = z = 1
B.x = (y = z + 1)  
C.x, y = y, x
D.x  +=  y

 y = z + 1没有返回值


9.remove()+append()

在Python3中,程序运行返回结果为:[1,2,3,4,5,6,7]

lists = [1, 1, 2, 3, 4, 5, 6]
lists.remove(1)
lists.append(7)
print(lists)

Python3中

list.remove(obj):移除列表中某个值的第一个匹配项

list.append(obj):在列表末尾添加新的对象


10.表达式

执行下列选项的程序,输出结果与其他三个选项不同的是(B)

a = [['1']*3 for i in range(3)]

print(a)
b = [['1']]*3

print(b)
c=[]

for i in range(3):

    lis = ['1']*3

    c.append(lis)

print(c)
d = []

lis = ['1']*3

for i in range(3):

    d.append(lis)

print(d)

B选项结果为[['1'], ['1'], ['1']],其他选项结果为[['1', '1', '1'], ['1', '1', '1'], ['1', '1', '1']]


 11.不定长参数

以下程序输出为:11 22 (33, 44, 55, 66, 77, 88, 99)

# -*- coding:utf-8 -*-
def test(a, b, *args):
    print(a)
    print(b)
    print(args)

test(11, 22, 33, 44, 55, 66, 77, 88, 99)#依次匹配输出

def 函数名([formal_args, ] *args, **kwargs):
     "函数_文档字符串"
     函数体
 return 表达式

参数带名称,值分配给args变量

参数不带名称,值分配给kwargs变量


12.索引

在Python3中,下列程序运行结果为:[6, 4, 2]

tmp = [1, 2, 3, 4, 5, 6]
print(tmp[5::-2])#索引为5依次向前取值(步长为2)

13.zip()+fromkeys()

为输出一个字典dic = {‘a’:1,'b':2},下列选项中,做法错误的是(B)

lis1 = ['a','b'] 
lis2 = [1,2]
dic = dict(zip(lis1,lis2))

print(dic)
tup = ('a','b')

lis = [1,2]

dic = {tup:lis}

print(dic)#dic={('a', 'b'): [1, 2]}
dic = dict(a=1,b=2)

print(dic)
lis = ['a','b']

dic = dict.fromkeys(lis)

dic['a'] = 1

dic['b'] = 2

print(dic)

zip([iterable, ...])

zip() 将元素打包成元组,然后返回由这些元组组成的列表。

dict.fromkeys(seq[, value])
seq -- 字典键值列表。value -- 可选参数, 设置键序列(seq)的值,默认为 None。

fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。


14.join()+append() 

在Python3中,下列continue的用法:'pyton'

res = []
for i in 'python':
    if i == 'h':
        continue
    res.append(i)
print(''.join(res))

str.join(sequence) 
sequence -- 要连接的元素序列。
alist.append( copy.deepcopy( num ) )

append():追加该对象的引用


15.re 模块

下列程序打印结果为(Pyth)

import re 
str1 = "Python's features" 
str2 = re.match( r'(.*)on(.*?) .*', str1, re.M|re.I)
print str2.group(1)

re.search(pattern, string, flags=0)

re.search 扫描整个字符串并返回第一个成功的匹配。

re.M:多行匹配,影响 ^ 和 $

re.I:使匹配对大小写不敏感


16.运算

如下代码,执行结果为:120

def f(x):
    if x == 0:
        return 0
    elif x == 1:
        return 1
    else:
        return (x*f(x-1))
print(f(5))

17.输出

Python3中,已知列表a = [2,3],则下列程序结果是:[2,3,2,3]

print(a*2)

18.字典浅拷贝

在python3中,对程序结果说明正确的是:

{'one': 1, 'two': 2, 'three': 3},{'one': 'abc', 'two': 2, 'three': 3}

dicts = {'one': 1, 'two': 2, 'three': 3}
tmp = dicts.copy()
tmp['one'] = 'abc'
print(dicts)
print(tmp)

19.tuple

下列哪种不是Python元组的定义方式?A

A.(1)
B.(1, )
C.(1, 2)
D.(1, 2, (3, 4))

(1,) 当 tuple 中只含一个元素时,需要在元素后加上逗号。


20.fun

执行以下程序,输出结果为:((1,), [1, 1])

def fun(a=(),b=[]):

    a += (1,)

    b.append(1)

    return a,b

fun()

print(fun())

元组是不可变数据类型

列表是可变数据类型


 21.遍历求交集

有如下Python代码段:

b1=[1,2,3]
b2=[2,3,4]
b3 = [val for val in b1 if val in b2]
print (b3)

上述代码段的运行结果为:([2,3])


22.索引

下列程序运行结果为:13

a=[1, 2, 3, 4, 5]
sums = sum(map(lambda x: x + 3, a[1::3]))#按index创b=[2,5],变c=[5,8],sums=5+8=13
print(sums)

23.变量用前必赋值

关于Python内存管理,下列说法错误的是:B

A.变量不必事先声明

B.变量无须先创建和赋值而直接使用

C.变量无须指定类型

D.可以使用del释放资源


 24.搜索模块顺序

当使用import导入模块时,按python查找模块的不同顺序可划分为以下几种:

①环境变量中的PYTHONPATH

②内建模块

③python安装路径

④当前路径,即执行Python脚本文件所在的路径

其中查找顺序正确的一组是(②④①③)


25.作用域+集合/列表定义

在python3.x执行下列选项的程序,不会抛出异常的是(B)

b = 1

def fn():

    nonlocal b # global b

    b = b + 1

    print(b)

fn()
tup = (('onion','apple'),('tomato','pear'))

for _,fruit in tup:

    print(fruit)
a = [b for b in range(10) if b % 2 == 0]

print(b)#b用完即毁
lis = [1,2,'a',[1,2]]

set(lis)#[1,2]可变不符

26.字典是Python中唯一的映射类型

下列哪种类型是Python的映射类型?D

A.str

B.list

C.tuple

D.dict


27.地址

已知a = [1, 2, 3]和b = [1, 2, 4],那么id(a[1])==id(b[1])的执行结果 (True)

注:== 比较的是两个对象的值是否相同


28.list索引

在Python3中,对于以下程序正确的是:[]

lists = [1, 2, 3, 4, 5, 6]
print(lists[6:])

注:索引从零开始,超出列表的索引范围会输出空列表 


29.字典get

以下程序输出为:None 18

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'北京'}
age = info.get('age')#不存在返回None
print(age)
age=info.get('age',18)
print(age)

注:dict.get(key, default=None)


30.序列

根据以下程序,下列选项中,说法正确的是(可以使用for i in foo:print(i)来遍历foo的元素)

class Foo():

    def __init__(self):

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

foo = Foo()

A.<p>foo对象表现得像个序列</p>

B.<p>可以使用len(foo)来查看对象foo的元素个数</p>

C.<p>可以使用for i in foo:print(i)来遍历foo的元素</p>

D.不能使用foo[0]来访问对象foo的第一个元素

 序列的两个方法:__len__和__getitem__

没有定义__len__方法

__getitem__方法--可迭代可索引


31.find和rfind

在Python3中,有关字符串的运算结果为:(12,15)

strs = 'I like python and java'
one = strs.find('n')
print(one)
two = strs.rfind('n')
print(two)

32.列表拼接

在Python3中,下列程序运行结果为:[1, 2, 3, 4, 5, 6]

a = [1, 2, 3]
b = [4, 5, 6]
print(a+b)


33.set

What gets printed?4

nums = set([1,2,2,3,3,3,4])
print len(nums)

注:列表转换成集合(确定性,无序性,互异性)


34.变量

执行以下程序,结果输出为([1, 2, 2], 2)

a = [1]

b = 2

c = 1

def fn(lis,obj):

    lis.append(b)

    obj = obj + 1

    return lis,obj

fn(a,c)

print(fn(a,c))

注:列表为可变对象,str为不可变类型


35.列表

执行以下程序,输出结果为[['1', '3'], ['1', '2']] [['4', '2'], ['4', '2']]

a = [['1','2'] for i in range(2)]

b = [['1','2']]*2

a[0][1] = '3'

b[0][0] = '4'

print(a,b) 

注:替换,重复,浅拷贝

猜你喜欢

转载自blog.csdn.net/qq_63852611/article/details/126467375
今日推荐