星YH-笔试题

it2022-05-05  127

1.下面代码会输出什么?

def f(x, l=[]): for i in range(x): l.append(i*i) print(l) f(2) f(3,[3,2,1]) f(3)

f(2) 列表l指向[0,1] f(3,[3,2,1]) 新的列表变量指向[3,2,1] f(3) 列表l仍然指向原l=[0,1]

输出结果:

[0, 1] [3,2,1,0,1,4] [0,1,0,1,4]

2.补全函数内容

def print_all(*args): """ 请完成当前函数,要求输出格式如下,最好在一行内完成 1.apple 2.banana 3.cabbage """ pass print_all('apple','banana', 'cabbage')

解答:可以使用enumarate(iterable, start_index)函数

def print_all(*args): """ 请完成当前函数,要求输出格式如下,最好在一行内完成 1.apple 2.banana 3.cabbage """ [print(f'{x}.{y}') for x, y in enumerate(args, 1)] print_all('apple','banana', 'cabbage')

3.实现一个装饰器,计算下列函数运行时间

def cal(i): print('{}*{}={}'.format(i, i, i * i)) cal(2)

解答:

import time from functools import wraps def cost(f): @wraps(f) def inner(*args, **kwargs): start = time.time() f(*args, **kwargs) print(time.time() - start) return inner @cost def foo(i): print('{}*{}={}'.format(i, i, i * i)) foo(2)

4.有一张如下的mysql数据表,查询每个班最高分的学生。

数据表: scores

+----+--------+-------+-------+ | id | name | score | class | +----+--------+-------+-------+ | 1 | 张三 | 80 | 1班 | | 2 | 李四 | 86 | 2班 | | 3 | 王五 | 88 | 1班 | | 4 | 赵六 | 70 | 2班 | | 5 | 周七 | 60 | 3班 | | 6 | 钱八 | 90 | 3班 | +----+--------+-------+-------+

得到结果示例:

+----+--------+-------+-------+ | id | name | score | class | +----+--------+-------+-------+ | 3 | 王五 | 88 | 1班 | | 2 | 李四 | 86 | 2班 | | 6 | 钱八 | 90 | 3班 | +----+--------+-------+-------+

查询语句:

select s1.id,s1.name,s1.score,s1.class from scores as s1 INNER JOIN (select max(score) as score,class as class from scores GROUP BY class) as s2 on s1.score=s2.score and s1.class=s2.class ORDER BY class;

最新回复(0)