Python面试题-内置函数

作者: 复苏的兵马俑 | 来源:发表于2020-02-20 16:54 被阅读0次
1、用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb,name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']。

答案(每一步的代码均可以作为最终答案):
第一步:

name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']
def func(item):
    return item+'_sb'
ret = map(func,name)     # ret是迭代器
print(list(ret))

第二步:

name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']
ret = map(lambda item:item+'_sb',name)     # ret是迭代器
print(list(ret))

第三步:

name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']
print(list(map(lambda item:item+'_sb',name)))

运行结果:

['alex_sb', 'wupeiqi_sb', 'yuanhao_sb', 'nezha_sb']
2、用filter函数处理数字列表,将列表中的所有的偶数筛选出来,num = [1, 3, 5, 6, 7, 8]。

答案(每一步的代码均可以作为最终答案:
第一步:

num = [1, 3, 5, 6, 7, 8]
def func(item):
    return item % 2 == 0
ret = filter(func,num)    # ret是迭代器
print(list(ret))

第二步:

num = [1, 3, 5, 6, 7, 8]
ret = filter(lambda item:item % 2 == 0,num)    # ret是迭代器
print(list(ret))

第三步:

num = [1, 3, 5, 6, 7, 8]
print(list(filter(lambda item:item % 2 == 0,num)))

运行结果:

[6, 8]

延伸:
第一步:

num = [1, 3, 5, 6, 7, 8]
def func(item):
    if item % 2 == 0:
        return True
ret = filter(func,num)    # ret是迭代器
print(list(ret))

第二步:

num = [1, 3, 5, 6, 7, 8]
ret = filter(lambda item:True if item % 2 == 0 else False,num)    # ret是迭代器
print(list(ret))

第三步:

num = [1, 3, 5, 6, 7, 8]
print(list(filter(lambda item:True if item % 2 == 0 else False,num)))

运行结果:

[6, 8]
3、随意些一个20行以上的文件,运行程序,先将内容读到内存中,用列表存储,接收用户输入页码,每页5条,仅输出当页的内容。

答案:
文件“file.txt”的内容如下:

1 Savion,男
2 Anthony,男
3 Tim,男
4 Lan,男
5 Kim,男
6 Before,男
7 Troy,男
8 Scott,男
9 Jonas,男
10 Bernie,男
11 Dennis,男
12 Jacky,男
13 Vicky,女
14 Blake,男
15 Jenson,男
16 Cody,男
17 Alan,男
18 Monica,女
19 Kevin,男
20 Macy,女
21 Sarah,女
22 Delia,女
23 Rocco,男
with open('file.txt', encoding = 'utf-8') as f:
    l = f.readlines()
while 1:
    page_num = input('请输入页码:')
    if page_num.upper() == 'Q':
        print('结束输入!')
        break
    page_num = int(page_num)
    pages,mod = divmod(len(l),5)     # 求有多少页,有没有剩余的行数
    if mod:       # 如果有剩余的行数,那么页数加1
        pages += 1       # 一共多少页
    if page_num > pages or page_num <= 0:     # 用户输入的额页数大于总数或者小于等于0
        print('输入有误!')
    elif page_num == pages and mod != 0:     # 如果用户输入的页码是最后一页,且之前有过剩余行数
        for i in range(mod):
            print(l[(page_num - 1) * 5 + i].strip())          # 只输出这一页上剩余的行
    else:
        for i in range(5):
            print(l[(page_num - 1) * 5 + i].strip())       # 输出5行

运行结果:

请输入页码:1
1 Savion,男
2 Anthony,男
3 Tim,男
4 Lan,男
5 Kim,男
请输入页码:2
6 Before,男
7 Troy,男
8 Scott,男
9 Jonas,男
10 Bernie,男
请输入页码:3
11 Dennis,男
12 Jacky,男
13 Vicky,女
14 Blake,男
15 Jenson,男
请输入页码:4
16 Cody,男
17 Alan,男
18 Monica,女
19 Kevin,男
20 Macy,女
请输入页码:5
21 Sarah,女
22 Delia,女
23 Rocco,男
请输入页码:6
输入有误!
请输入页码:0
输入有误!
请输入页码:q
结束输入!
4、如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格。
portfolio = [
    {'name': 'IBM', 'shares': 100, 'price': 91.1},
    {'name': 'AAPL', 'shares': 50, 'price': 543.22},
    {'name': 'FB', 'shares': 200, 'price': 21.09},
    {'name': 'HPQ', 'shares': 35, 'price': 31.75},
    {'name': 'YHOO', 'shares': 45, 'price': 16.35},
    {'name': 'ACME', 'shares': 75, 'price': 115.65},
]

1)计算购买美指股票的总价并输出;
2)用filter过滤出单价大于100的股票并输出。
答案:
1)

portfolio = [
    {'name': 'IBM', 'shares': 100, 'price': 91.1},
    {'name': 'AAPL', 'shares': 50, 'price': 543.22},
    {'name': 'FB', 'shares': 200, 'price': 21.09},
    {'name': 'HPQ', 'shares': 35, 'price': 31.75},
    {'name': 'YHOO', 'shares': 45, 'price': 16.35},
    {'name': 'ACME', 'shares': 75, 'price': 115.65},
]
ret = map(lambda dic:{dic['name']:dic['shares'] * dic['price']},portfolio)
print(list(ret))

运行结果:

[{'IBM': 9110.0}, {'AAPL': 27161.0}, {'FB': 4218.0}, {'HPQ': 1111.25}, {'YHOO': 735.7500000000001}, {'ACME': 8673.75}]

2)
实现一:

portfolio = [
    {'name': 'IBM', 'shares': 100, 'price': 91.1},
    {'name': 'AAPL', 'shares': 50, 'price': 543.22},
    {'name': 'FB', 'shares': 200, 'price': 21.09},
    {'name': 'HPQ', 'shares': 35, 'price': 31.75},
    {'name': 'YHOO', 'shares': 45, 'price': 16.35},
    {'name': 'ACME', 'shares': 75, 'price': 115.65},
]
ret = filter(lambda dic:True if dic['price'] > 100 else False,portfolio)
print(list(ret))

运行结果:

[{'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]

实现二:

portfolio = [
    {'name': 'IBM', 'shares': 100, 'price': 91.1},
    {'name': 'AAPL', 'shares': 50, 'price': 543.22},
    {'name': 'FB', 'shares': 200, 'price': 21.09},
    {'name': 'HPQ', 'shares': 35, 'price': 31.75},
    {'name': 'YHOO', 'shares': 45, 'price': 16.35},
    {'name': 'ACME', 'shares': 75, 'price': 115.65},
]
ret = filter(lambda dic:dic['price'] > 100,portfolio)
print(list(ret))

运行结果:

[{'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]

相关文章

网友评论

    本文标题:Python面试题-内置函数

    本文链接:https://www.haomeiwen.com/subject/omdxqhtx.html