源码和题型——pat浙大版《Python 程序设计》题目集——第三章上—列表元组

在学习程序设计时,我们发现算法是一个难点,我们从’简单模拟’, ‘查找元素’, ‘图形输出’, ‘进制转换’, ‘字符串处理’,‘排序’,‘散列’,‘贪心’,‘二分’,‘two pointers’,‘其他’,‘数学’,‘链表’,几个角度分析算法的考试和训练策略,接下来几天我们会分题型讲解,如果你正在准备PAT甲乙级算法的考试和训练,会大有帮助,祝早日金榜题名。
在程序设计的比赛和考试中,我常用的方法有10种,求值法,递推法,递归法,枚举法,模拟法,分治法,贪心法,回溯法,构造法和动态规划。学习完这些方法后,编程水平快速提高,避免所有问题,都暴力求解
在这里插入图片描述
掌握了以上的方法,可以快速打开思路,然后我会解答在PAT中常见的疑惑。
题型1:在一行输入,以空格分隔。
公式:

a = list(map(int,input().split()))

第3章-1 大于身高的平均值 (10 分)
中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一个空格,输出的顺序和输入的相同。

输入格式:
在一行输入中一个班的身高值,以空格分隔。

输出格式:
在一行输出超过输入的平均数的输入值,以空格分隔。

a = list(map(int,input().split()))
s=sum(a)
p=s/len(a)
for j in range(0,len(a)):
    if p<a[j]:
        print("{} ".format(a[j]),end="")

3章-2 查验身份证 (15 分)
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:

首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

输入格式:
输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。

输出格式:
按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。

n = int(input())
w = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
s = 0
dic = {0:'1',1:'0',2:'X',3:'9',4:'8',5:'7',6:'6',7:'5',8:'4',9:'3',10:'2'}
for i in range(n):
    r = []
    m = input()
    if not m[0:17].isdigit():
        print(m)
        s += 1
    else:
        for k in range(17):
            r.append(w[k]*int(m[k]))
        if dic[sum(r)%11] != m[17]:
            print(m)
            s += 1
if s == 0:
    print('All passed')

题型2:不用列表元组解决问题
第3章-20 逆序的三位数 (10 分)
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:
每个测试是一个3位的正整数。

输出格式:
输出按位逆序的数。

n=input()
a=int(n[0])
b=int(n[1])
c=int(n[2])
print(a+b*10+c*100)

其他题目和源码见,zip,喜欢的话就点赞关注一下吧。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据的我们

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值