python基础的一些测试题

python基础的一些测试题

主要针对高级函数、匿名函数的训练

第一题

  1. 求列表中所有数字元素的和;
  2. 列表中的元素都是整数;
  3. 列表中的元素可能重复,需要去掉重复元素;
  4. 需要使用高级函数实现求和;
  5. 返回计算的结果;
from functools import reduce
def sum_of_list(lt):
	print('所有数字元素的和:',sum(lt))
	lt = list(set(lt))
	return '去掉重复元素后的和:{}'.format(reduce(lambda x, y: x + y, lt))
print(sum_of_list([1,5,8,-9,-9]))

第二题

  1. 传入一个列表,列表中元素可能是任意类型;
  2. 使用高级函数完成非字符串元素的删除;
  3. 然后按照字符串的长度进行降序排序;
  4. 返回新的排序后的列表;
def sort_list(lt):
	lt = list(filter(lambda x: isinstance(x, str), lt))#匿名函数
	lt1=sorted(lt,key=lambda i:len(i),reverse=True)
	return lt1
lt = ['java', 'c', 'CSS', [99,100] , 0]
print(sort_list(lt))

第三题

  1. 返回一个字符串中出现次数第二多的单词;
  2. 字符串中可能有英文单词、标点、空格;
  3. 字符串中的英文字符全部是小写;
from collections import Counter
import re
def second_count_word(s):
	a = re.compile(r'[a-z]+')
	lt1 = a.findall(s)
	dt = Counter(lt1)
	lt2 =dt.most_common(2)
	return lt2[1][0]
#第一多是dessert,第二多是noodles
s = 'i want noodles, but tom wants dessert besides noodles. he likes dessert very much because dessert can soothe his mood. '
print(second_count_word(s))

第四题

  1. 传入年、月、日,返回该日是当年的第几天;
  2. 返回值是一个整数;
import datetime
def which_day(y, m, d):
	dt = datetime.date(y, m, d)
	dn = dt.timetuple()
	return dn.tm_yday
print(which_day(2018,12,27))

第五题

  1. 写一个装饰器,查看函数执行的时间;
  2. 在装饰器中打印执行时间即可;
  3. 递归函数除外;
import time
def continue_time(func):
	def inner(*args):
		start = time.time()
		func(*args)
		end = time.time()
		diff_time = end-start
		print('执行时间为:',diff_time)
	return inner
@continue_time
def func():
	sum =0
	for i in range(99999):
		sum += i
func()

第六题

  1. 返回列表中最后剩下的元素;
  2. 传入列表,和步进值(隔几个删除数据);
  3. 从第一个元素起,查到步进值就删掉该元素;
  4. 到结尾后,返回第一个元素继续累计查询
def last_item(lt, step):
	while len(lt) > 1:
		n = step -1
		for i in range(n):
			m = lt.pop(0)
			lt.append(m)
		del lt[0]
	return lt[0]
lt = [1,2,3,4,5]
print(last_item(lt,3))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值