星YH-笔试题

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值