一、函数相关
1、定义一个函数cacluate,可以接收任意多个值,返回的是一个元组。元组的第一个值为所有参数的平均值,第二个值是大于平均值的所有数,第三个值为所有参数与平均值的差,但是要求绝对值
思路:看到题目,可以接收任意多个值就想到了不定长参数,有*args和**kwargs,args返回的是元组,**kwargs返回的是字典,题目要求返回元组,所以我们定义args
def cacluate(*args):
avg=sum(args)/len(args) #计算平均值
up_avg=[] #定义一个空列表,存放比平均值大的数字
cha=[] #定义一个空列表,存放所有参数与平均值的差
for i in args: #遍历传入的所有数字
if i>avg:
up_avg.append(i) #把比平均值大的加入到列表中
cha.append(abs(i - avg))#把第三个数放入列表中,abs()用来做绝对值
return avg,up_avg,cha #返回平均值,以及列表
if __name__ == "__main__": #测试
print(cacluate(1,2,3,4,5))
结果为:
(3.0, [4, 5], [2.0, 1.0, 0.0, 1.0, 2.0])
2、编写一个函数,接收字符串参数,返回一个字典,"hello WROLD"字典的第一个键的值为答谢字母的个数,第二个键的值为小写字母的个数
def Fun(str): #定义函数,接收一个字符串参数
upper=lower=0 #定义计数器
for i in str: #遍历字符串
if i.isupper(): #如果为大写字母,upper的值加一
upper+=1
elif i.islower(): #如果为小写字母,lower的值加一
lower+=1
else: #既不是大写,也不是小写,继续执行
continue
dict={}
dict["upper的个数为"]=upper
dict["lower的个数为"]=lower
return dict
print(Fun("hello HELLO")) #调用函数
结果为:
{'upper的个数为': 5, 'lower的个数为': 5}
3、编写函数,接收一个列表(包含10个整型数)和一个整型数k,返回一个新列表
函数需求:
1、将列表中小于k之前(不包括k)的元素逆序
2、将k及之后的元素逆序
例如,列表[1,4,6,7,8,3,5,16,35,44],k=10,实现后应为[8,7,6,5,4,3,1,10,44,35,16]
def reverse_item(list,k):
less_list=[]
greater_list=[]
for item in list:
if item<k:
less_list.append(item)
else:
greater_list.append(item)
less_list=sorted(less_list)
less_list.reverse()
greater_list.reverse()
less_list.append(k)
less_list.extend(greater_list)
return less_list
print(reverse_item([1, 4, 6, 7, 8, 3, 5, 16, 35, 44], 10))
结果为:
[8, 7, 6, 5, 4, 3, 1, 10, 44, 35, 16]
4、用函数实现1-100里面所有的素数
素数的特征是:除了1和其本身能被整除,其他数都不能被整除
核心处理思想:使用两个for循环将1-100里面的数据循环两次做判断,判断是否能被其本身整除,如果不能则是素数,而我们的1已经在初始化变量的时候设置为2开始的,所以不包含1
num=[]
i=2
for i in range(2,100):
j=2
for i in range(2,i):
if (i%j==0):
break
else:
num.append(i)
print(num)