PTA-浙大版《Python 程序设计》AC解答汇总-第六章

# 第6章-1 输入列表,求列表元素和(eval输入应用) (10分)
def demo_6_1():
    print(sum(eval(input())))  


# 第6章-2 一帮一 (15分)
def demo_6_2():
    n = int(input())
    stu = []
    woman = []
    man = []
    for i in range(n):
        t = input().split()
        stu.append(t)
        if t[0] == '0':
            woman.append(t[1])
        else:
            man.append(t[1])
    for i in range(n//2):
        if stu[i][0] == '0':
            print(woman.pop(0),man.pop())
        else:
            print(man.pop(0),woman.pop())


# 第6章-3 列表或元组的数字元素求和 (20分)
def demo_6_3():
    def f(string):
        res=[]
        for x in string:
            if type(x)==list or type(x)==tuple:
                for son in f(x):
                    res.append(son)
            elif type(x)==type(1):
                res.append(x)
        return res
    string=eval(input())
    print(sum(f(string)))


# 第6章-4 列表数字元素加权和(1) (40分)
def demo_6_4():
    def f(lists,weight):
        res=[]
        for x in lists:
            if type(x)==list:
                for son in f(x,weight+1):
                    res.append(son)
            elif type(x)==type(1):
                res.append(x*weight)
        return res
    string=eval(input())
    print(sum(f(string,1)))


# 第6章-5 列表元素个数的加权和(1) (40分)
def demo_6_5():
    def f(lists,weight):
        res=[]
        for x in lists:
            if type(x)==list:
                for son in f(x,weight+1):
                    res.append(son)
            elif type(x)==type(1):
                res.append(weight)
        return res
    string=eval(input())
    print(sum(f(string,1)))


# 第6章-6 求指定层的元素个数 (40分)
def demo_6_6():
    def f(lists,weight):
        res=[]
        for x in lists:
            if type(x)==list:
                for son in f(x,weight+1):
                    res.append(son)
            elif type(x)==type(1):
                res.append(weight)
        return res
    string=eval(input())
    level=int(input())
    print(f(string,1).count(level))


# 第6章-7 找出总分最高的学生 (15分)
def demo_6_7():
    class stu:
        def __init__(self,id,name,s1,s2,s3):
            self.id=id
            self.name=name
            self.s=int(s1)+int(s2)+int(s3)
    n=int(input())
    res=stu(0,0,0,0,0)
    for i in range(n):
        id,name,s1,s2,s3=input().split()
        t=stu(id,name,s1,s2,s3)
        if t.s>res.s:
            res=t
    print(res.name,res.id,res.s)


# 第6章-8 *输出全排列(选作) (20分)
def demo_6_8():
    def f(string,x):
        if x not in string:
            string+=x
            if len(string)<n:
                for x in num:
                    f(string,x)
            else:
                res.append(string)

    n=int(input())
    num=[str(x) for x in range(1,n+1)]
    res=[]
    for x in num:
        f("",x)
    print(*res,sep="\n")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值