python练习题

一、函数相关

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)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值